API Updates, prepare for v8 (#381)

diff --git a/config.yaml b/config.yaml
index 889ed27..a977743 100644
--- a/config.yaml
+++ b/config.yaml
@@ -2,7 +2,7 @@
 # should be ignored.
 packages:
 - googleapis:
-    version: 8.0.0-dev
+    version: 8.0.0
     repository: https://github.com/google/googleapis.dart/tree/master/generated/googleapis
     readme: resources/README.md
     license: resources/LICENSE
@@ -37,6 +37,7 @@
     - assuredworkloads:v1
     - authorizedbuyersmarketplace:v1
     - baremetalsolution:v1
+    - baremetalsolution:v2
     - bigquery:v2 # https://developers.google.com/bigquery/
     - bigquerydatatransfer:v1 # https://cloud.google.com/bigquery/transfer/
     - bigqueryreservation:v1
@@ -46,6 +47,7 @@
     - blogger:v3 # https://developers.google.com/blogger/
     - books:v1 # https://developers.google.com/books/
     - calendar:v3 # https://developers.google.com/google-apps/calendar/
+    - certificatemanager:v1
     - chat:v1 # https://developers.google.com/hangouts/chat
     - chromemanagement:v1
     - chromepolicy:v1
@@ -83,6 +85,7 @@
     - datafusion:v1
     - datamigration:v1
     - datapipelines:v1
+    - dataplex:v1
     - dataproc:v1 # https://cloud.google.com/dataproc/
     - datastore:v1 # https://developers.google.com/datastore/
     - datastream:v1
@@ -126,11 +129,11 @@
     - groupssettings:v1 # https://developers.google.com/admin-sdk/groups-settings/
     - healthcare:v1
     - homegraph:v1
-    - ids:v1
     - iam:v1 # https://cloud.google.com/iam/
     - iamcredentials:v1 # https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials
     - iap:v1 # https://cloud.google.com/iap
     - identitytoolkit:v3 # https://developers.google.com/identity-toolkit/
+    - ids:v1
     - indexing:v3 # https://developers.google.com/search/apis/indexing-api/
     - jobs:v3 # https://cloud.google.com/job-discovery/docs
     - jobs:v4
@@ -147,6 +150,7 @@
     - ml:v1 # https://cloud.google.com/ml-engine/
     - monitoring:v3 # https://cloud.google.com/monitoring/api/
     - mybusinessaccountmanagement:v1
+    - mybusinessbusinesscalls:v1
     - mybusinessbusinessinformation:v1
     - mybusinesslodging:v1
     - mybusinessnotifications:v1
@@ -167,6 +171,7 @@
     - paymentsresellersubscription:v1
     - people:v1 # https://developers.google.com/people/
     - playcustomapp:v1 # https://developers.google.com/android/work/play/custom-app-api
+    - playintegrity:v1
     - policyanalyzer:v1
     - policysimulator:v1
     - policytroubleshooter:v1
@@ -231,7 +236,7 @@
     - youtubereporting:v1 # https://developers.google.com/youtube/reporting/v1/reports/
 
 - googleapis_beta:
-    version: 8.0.0-dev
+    version: 8.0.0
     repository: https://github.com/google/googleapis.dart/tree/master/generated/googleapis_beta
     readme: resources/README.md
     license: resources/LICENSE
@@ -245,6 +250,7 @@
     - area120tables:v1alpha1
     - bigqueryconnection:v1beta1
     - clouderrorreporting:v1beta1 # https://cloud.google.com/error-reporting/
+    - cloudfunctions:v2beta
     - cloudsupport:v2beta
     - containeranalysis:v1beta1 # https://cloud.google.com/container-registry/docs/reference/rest/
     - datacatalog:v1beta1
@@ -259,6 +265,7 @@
     - firebaseappcheck:v1beta
     - firebasedatabase:v1beta
     - firebasestorage:v1beta
+    - gkehub:v2alpha
     - ideahub:v1beta
     - lifesciences:v2beta
     - metastore:v1beta
@@ -274,7 +281,6 @@
     - sqladmin:v1beta4
     - toolresults:v1beta3 # https://developers.google.com/cloud-test-lab/
     - tpu:v2alpha1
-    - transcoder:v1beta1
 
 # APIs that we do not wish to include in this package
 skipped_apis:
@@ -286,7 +292,6 @@
 - artifactregistry:v1beta1 #v1 included
 - artifactregistry:v1beta2 #v1 included
 - bigqueryreservation:v1beta1 # v1 included
-- bigtableadmin:v1 # v2 included
 - billingbudgets:v1beta1 # v1 included
 - binaryauthorization:v1beta1 # v1 included
 - blogger:v2 # v3 included
@@ -298,6 +303,7 @@
 - cloudbuild:v1alpha1 # v1 included
 - cloudbuild:v1alpha2 # v1 included
 - cloudbuild:v1beta1
+- cloudfunctions:v2alpha # v2beta included
 - cloudidentity:v1beta1 # v1 included
 - cloudresourcemanager:v1beta1 # v1 included
 - cloudresourcemanager:v2beta1 # v2 included
diff --git a/discovery/googleapis/acceleratedmobilepageurl__v1.json b/discovery/googleapis/acceleratedmobilepageurl__v1.json
index 3d37b28..0674305 100644
--- a/discovery/googleapis/acceleratedmobilepageurl__v1.json
+++ b/discovery/googleapis/acceleratedmobilepageurl__v1.json
@@ -114,7 +114,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://acceleratedmobilepageurl.googleapis.com/",
     "schemas": {
         "AmpUrl": {
diff --git a/discovery/googleapis/accessapproval__v1.json b/discovery/googleapis/accessapproval__v1.json
index 28d4938..953524e 100644
--- a/discovery/googleapis/accessapproval__v1.json
+++ b/discovery/googleapis/accessapproval__v1.json
@@ -752,7 +752,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220208",
     "rootUrl": "https://accessapproval.googleapis.com/",
     "schemas": {
         "AccessApprovalSettings": {
diff --git a/discovery/googleapis/accesscontextmanager__v1.json b/discovery/googleapis/accesscontextmanager__v1.json
index 5c96992..e20ad34 100644
--- a/discovery/googleapis/accesscontextmanager__v1.json
+++ b/discovery/googleapis/accesscontextmanager__v1.json
@@ -1081,7 +1081,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220212",
     "rootUrl": "https://accesscontextmanager.googleapis.com/",
     "schemas": {
         "AccessContextManagerOperationMetadata": {
diff --git a/discovery/googleapis/admin__datatransfer_v1.json b/discovery/googleapis/admin__datatransfer_v1.json
index 8f9f151..811ed70 100644
--- a/discovery/googleapis/admin__datatransfer_v1.json
+++ b/discovery/googleapis/admin__datatransfer_v1.json
@@ -270,7 +270,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220215",
     "rootUrl": "https://admin.googleapis.com/",
     "schemas": {
         "Application": {
diff --git a/discovery/googleapis/admin__directory_v1.json b/discovery/googleapis/admin__directory_v1.json
index 47c4e06..d29e938 100644
--- a/discovery/googleapis/admin__directory_v1.json
+++ b/discovery/googleapis/admin__directory_v1.json
@@ -935,6 +935,11 @@
                                             "location": "query",
                                             "type": "string"
                                         },
+                                        "orderBy": {
+                                            "description": "The order to sort results by. Must be one of display_name, description, make_and_model, or create_time. Default order is ascending, but descending order can be returned by appending \"desc\" to the order_by field. For instance, \"description desc\" will return the printers sorted by description in descending order.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
                                         "orgUnitId": {
                                             "description": "Organization Unit that we want to list the printers for. When org_unit is not present in the request then all printers of the customer are returned (or filtered). When org_unit is present in the request then only printers available to this OU will be returned (owned or inherited). You may see if printer is owned or inherited for this OU by looking at Printer.org_unit_id.",
                                             "location": "query",
@@ -1372,7 +1377,7 @@
                             "type": "string"
                         },
                         "domain": {
-                            "description": "The domain name. Use this field to get fields from only one domain. To return all domains for a customer account, use the `customer` query parameter instead.",
+                            "description": "The domain name. Use this field to get groups from only one domain. To return all domains for a customer account, use the `customer` query parameter instead.",
                             "location": "query",
                             "type": "string"
                         },
@@ -3701,7 +3706,7 @@
                             "type": "string"
                         },
                         "domain": {
-                            "description": "The domain name. Use this field to get fields from only one domain. To return all domains for a customer account, use the `customer` query parameter instead. Either the `customer` or the `domain` parameter must be provided.",
+                            "description": "The domain name. Use this field to get groups from only one domain. To return all domains for a customer account, use the `customer` query parameter instead. Either the `customer` or the `domain` parameter must be provided.",
                             "location": "query",
                             "type": "string"
                         },
@@ -3780,7 +3785,7 @@
                             "type": "string"
                         },
                         "sortOrder": {
-                            "description": "Whether to return results in ascending or descending order.",
+                            "description": "Whether to return results in ascending or descending order, ignoring case.",
                             "enum": [
                                 "ASCENDING",
                                 "DESCENDING"
@@ -4400,7 +4405,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220215",
     "rootUrl": "https://admin.googleapis.com/",
     "schemas": {
         "Alias": {
@@ -5182,11 +5187,11 @@
                     "type": "string"
                 },
                 "orgUnitId": {
-                    "description": "The unique ID of the organizational unit. orgUnitPath is the human readable version of orgUnitId. While orgUnitPath may change by renaming an organizational unit within the path, orgUnitId is unchangeable for one organizational unit. This property can be [updated](/admin-sdk/directory/v1/guides/manage-chrome-devices#update_chrome_device) using the API, and this will be supported in the future.",
+                    "description": "The unique ID of the organizational unit. orgUnitPath is the human readable version of orgUnitId. While orgUnitPath may change by renaming an organizational unit within the path, orgUnitId is unchangeable for one organizational unit. This property can be [updated](/admin-sdk/directory/v1/guides/manage-chrome-devices#move_chrome_devices_to_ou) using the API. For more information about how to create an organizational structure for your device, see the [administration help center](https://support.google.com/a/answer/182433).",
                     "type": "string"
                 },
                 "orgUnitPath": {
-                    "description": "The full parent path with the organizational unit's name associated with the device. Path names are case insensitive. If the parent organizational unit is the top-level organization, it is represented as a forward slash, `/`. This property can be [updated](/admin-sdk/directory/v1/guides/manage-chrome-devices#update_chrome_device) using the API. For more information about how to create an organizational structure for your device, see the [administration help center](https://support.google.com/a/answer/182433).",
+                    "description": "The full parent path with the organizational unit's name associated with the device. Path names are case insensitive. If the parent organizational unit is the top-level organization, it is represented as a forward slash, `/`. This property can be [updated](/admin-sdk/directory/v1/guides/manage-chrome-devices#move_chrome_devices_to_ou) using the API. For more information about how to create an organizational structure for your device, see the [administration help center](https://support.google.com/a/answer/182433).",
                     "type": "string"
                 },
                 "osVersion": {
@@ -6011,7 +6016,7 @@
                     "type": "string"
                 },
                 "printers": {
-                    "description": "List of printers. If `org_unit_id` was given in the request, then only printers visible for this OU will be returned. If `org_unit_id` was given in the request, then all printers will be returned.",
+                    "description": "List of printers. If `org_unit_id` was given in the request, then only printers visible for this OU will be returned. If `org_unit_id` was not given in the request, then all printers will be returned.",
                     "items": {
                         "$ref": "Printer"
                     },
@@ -6992,7 +6997,7 @@
                     "type": "any"
                 },
                 "hashFunction": {
-                    "description": "Stores the hash format of the password property. We recommend sending the `password` property value as a base 16 bit hexadecimal-encoded hash value. Set the `hashFunction` values as either the [SHA-1](https://wikipedia.org/wiki/SHA-1), [MD5](https://wikipedia.org/wiki/MD5), or [crypt](https://en.wikipedia.org/wiki/Crypt_\\(C\\)) hash format.",
+                    "description": "Stores the hash format of the password property. We recommend sending the `password` property value as a base 16 bit hexadecimal-encoded hash value. The following `hashFunction` values are allowed: * `DES` * `MD5` - hash prefix is `$1$` * `SHA2-256` - hash prefix is `$5$` * `SHA2-512` - hash prefix is `$6$` If rounds are specified as part of the prefix, they must be 10,000 or fewer.",
                     "type": "string"
                 },
                 "id": {
diff --git a/discovery/googleapis/admin__reports_v1.json b/discovery/googleapis/admin__reports_v1.json
index 417c1af..fb766d4 100644
--- a/discovery/googleapis/admin__reports_v1.json
+++ b/discovery/googleapis/admin__reports_v1.json
@@ -621,7 +621,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220215",
     "rootUrl": "https://admin.googleapis.com/",
     "schemas": {
         "Activities": {
diff --git a/discovery/googleapis/admob__v1.json b/discovery/googleapis/admob__v1.json
index 08a634f..2ccb72a 100644
--- a/discovery/googleapis/admob__v1.json
+++ b/discovery/googleapis/admob__v1.json
@@ -313,7 +313,7 @@
             }
         }
     },
-    "revision": "20220125",
+    "revision": "20220215",
     "rootUrl": "https://admob.googleapis.com/",
     "schemas": {
         "AdUnit": {
@@ -405,7 +405,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/adsense__v2.json b/discovery/googleapis/adsense__v2.json
index 0d1851b..5a416ac 100644
--- a/discovery/googleapis/adsense__v2.json
+++ b/discovery/googleapis/adsense__v2.json
@@ -1566,7 +1566,7 @@
             }
         }
     },
-    "revision": "20220125",
+    "revision": "20220215",
     "rootUrl": "https://adsense.googleapis.com/",
     "schemas": {
         "Account": {
@@ -1802,7 +1802,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/analyticsreporting__v4.json b/discovery/googleapis/analyticsreporting__v4.json
index 25a7261..5c91d4a 100644
--- a/discovery/googleapis/analyticsreporting__v4.json
+++ b/discovery/googleapis/analyticsreporting__v4.json
@@ -153,7 +153,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220215",
     "rootUrl": "https://analyticsreporting.googleapis.com/",
     "schemas": {
         "Activity": {
diff --git a/discovery/googleapis/androiddeviceprovisioning__v1.json b/discovery/googleapis/androiddeviceprovisioning__v1.json
index 792ce6c..30eea68 100644
--- a/discovery/googleapis/androiddeviceprovisioning__v1.json
+++ b/discovery/googleapis/androiddeviceprovisioning__v1.json
@@ -110,7 +110,7 @@
                             "type": "integer"
                         },
                         "pageToken": {
-                            "description": "A token specifying which result page to return.",
+                            "description": "A token specifying which result page to return. This field has custom validations in ListCustomersRequestValidator",
                             "location": "query",
                             "type": "string"
                         }
@@ -134,7 +134,7 @@
                             ],
                             "parameters": {
                                 "parent": {
-                                    "description": "Required. The customer that manages the configuration. An API resource name in the format `customers/[CUSTOMER_ID]`.",
+                                    "description": "Required. The customer that manages the configuration. An API resource name in the format `customers/[CUSTOMER_ID]`. This field has custom validation in CreateConfigurationRequestValidator",
                                     "location": "path",
                                     "pattern": "^customers/[^/]+$",
                                     "required": true,
@@ -823,7 +823,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://androiddeviceprovisioning.googleapis.com/",
     "schemas": {
         "ClaimDeviceRequest": {
@@ -1022,7 +1022,7 @@
                 },
                 "device": {
                     "$ref": "DeviceReference",
-                    "description": "Required. The device the configuration is applied to."
+                    "description": "Required. The device the configuration is applied to. There are custom validations in ApplyConfigurationRequestValidator"
                 }
             },
             "type": "object"
@@ -1097,7 +1097,7 @@
             "properties": {
                 "device": {
                     "$ref": "DeviceReference",
-                    "description": "Required. The device to remove the configuration from."
+                    "description": "Required. The device to remove the configuration from. There are custom validations in RemoveConfigurationRequestValidator"
                 }
             },
             "type": "object"
@@ -1108,7 +1108,7 @@
             "properties": {
                 "device": {
                     "$ref": "DeviceReference",
-                    "description": "Required. The device to unclaim."
+                    "description": "Required. The device to unclaim. There are custom validations in UnclaimDeviceRequestValidator."
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/androidenterprise__v1.json b/discovery/googleapis/androidenterprise__v1.json
index 8c2f7ba..790e58e 100644
--- a/discovery/googleapis/androidenterprise__v1.json
+++ b/discovery/googleapis/androidenterprise__v1.json
@@ -2609,7 +2609,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220214",
     "rootUrl": "https://androidenterprise.googleapis.com/",
     "schemas": {
         "Administrator": {
diff --git a/discovery/googleapis/androidmanagement__v1.json b/discovery/googleapis/androidmanagement__v1.json
index 72dde34..4169d7c 100644
--- a/discovery/googleapis/androidmanagement__v1.json
+++ b/discovery/googleapis/androidmanagement__v1.json
@@ -875,7 +875,7 @@
                             ],
                             "parameters": {
                                 "pageSize": {
-                                    "description": "The requested page size. The actual page size may be fixed to a min or max value.",
+                                    "description": "The requested page size. This is a hint and the actual page size in the response may be different.",
                                     "format": "int32",
                                     "location": "query",
                                     "type": "integer"
@@ -1002,7 +1002,7 @@
             }
         }
     },
-    "revision": "20220117",
+    "revision": "20220207",
     "rootUrl": "https://androidmanagement.googleapis.com/",
     "schemas": {
         "AdvancedSecurityOverrides": {
@@ -1739,7 +1739,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: A full date, with non-zero year, month, and day values A month and day value, with a zero year, such as an anniversary A year on its own, with zero month and day values A year and month value, with a zero day, such as a credit card expiration dateRelated types are google.type.TimeOfDay and google.protobuf.Timestamp.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: A full date, with non-zero year, month, and day values A month and day, with a zero year (e.g., an anniversary) A year on its own, with a zero month and a zero day A year and month, with a zero day (e.g., a credit card expiration date)Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -3536,7 +3536,7 @@
                             "Disable unredacted notifications on secure keyguard screens.",
                             "Ignore trust agent state on secure keyguard screens.",
                             "Disable fingerprint sensor on secure keyguard screens.",
-                            "Disable text entry into notifications on secure keyguard screens.",
+                            "On devices running Android 6 and below, disables text entry into notifications on secure keyguard screens. Has no effect on Android 7 and above.",
                             "Disable face authentication on secure keyguard screens.",
                             "Disable iris authentication on secure keyguard screens.",
                             "Disable all biometric authentication on secure keyguard screens.",
diff --git a/discovery/googleapis/androidpublisher__v3.json b/discovery/googleapis/androidpublisher__v3.json
index 070fd28..a598a3d 100644
--- a/discovery/googleapis/androidpublisher__v3.json
+++ b/discovery/googleapis/androidpublisher__v3.json
@@ -3039,7 +3039,7 @@
             }
         }
     },
-    "revision": "20220125",
+    "revision": "20220215",
     "rootUrl": "https://androidpublisher.googleapis.com/",
     "schemas": {
         "Apk": {
diff --git a/discovery/googleapis/apigateway__v1.json b/discovery/googleapis/apigateway__v1.json
index e15dd09..6f99dfa 100644
--- a/discovery/googleapis/apigateway__v1.json
+++ b/discovery/googleapis/apigateway__v1.json
@@ -1081,7 +1081,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220202",
     "rootUrl": "https://apigateway.googleapis.com/",
     "schemas": {
         "ApigatewayApi": {
diff --git a/discovery/googleapis/apigee__v1.json b/discovery/googleapis/apigee__v1.json
index d521a3b..af9d27d 100644
--- a/discovery/googleapis/apigee__v1.json
+++ b/discovery/googleapis/apigee__v1.json
@@ -2894,6 +2894,129 @@
                         }
                     }
                 },
+                "endpointAttachments": {
+                    "methods": {
+                        "create": {
+                            "description": "Creates an EndpointAttachment. **Note:** Not supported for Apigee hybrid.",
+                            "flatPath": "v1/organizations/{organizationsId}/endpointAttachments",
+                            "httpMethod": "POST",
+                            "id": "apigee.organizations.endpointAttachments.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "endpointAttachmentId": {
+                                    "description": "The ID to use for the endpoint attachment. ID must be a 1-20 characters string with lowercase letters and numbers and must start with a letter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "Required. The Organization this EndpointAttachment will be created in.",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/endpointAttachments",
+                            "request": {
+                                "$ref": "GoogleCloudApigeeV1EndpointAttachment"
+                            },
+                            "response": {
+                                "$ref": "GoogleLongrunningOperation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Deletes an endpoint attachment.",
+                            "flatPath": "v1/organizations/{organizationsId}/endpointAttachments/{endpointAttachmentsId}",
+                            "httpMethod": "DELETE",
+                            "id": "apigee.organizations.endpointAttachments.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. Name of the Endpoint Attachment in the following format: `organizations/{organization}/endpointAttachments/{endpoint_attachment}`.",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/endpointAttachments/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleLongrunningOperation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Gets the specified EndpointAttachment.",
+                            "flatPath": "v1/organizations/{organizationsId}/endpointAttachments/{endpointAttachmentsId}",
+                            "httpMethod": "GET",
+                            "id": "apigee.organizations.endpointAttachments.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. Name of the Endpoint Attachment in the following format: `organizations/{organization}/endpointAttachments/{endpoint_attachment}`.",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+/endpointAttachments/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleCloudApigeeV1EndpointAttachment"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists the EndpointAttachments in the specified Organization.",
+                            "flatPath": "v1/organizations/{organizationsId}/endpointAttachments",
+                            "httpMethod": "GET",
+                            "id": "apigee.organizations.endpointAttachments.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "pageSize": {
+                                    "description": "Optional. Maximum number of Endpoint Attachments to return. If unspecified, at most 25 attachments will be returned.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. Page token, returned from a previous ListEndpointAttachments call, that you can use to retrieve the next page.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "Required. Name of the Organization for which to list Endpoint Attachments in the format: `organizations/{organization}`.",
+                                    "location": "path",
+                                    "pattern": "^organizations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/endpointAttachments",
+                            "response": {
+                                "$ref": "GoogleCloudApigeeV1ListEndpointAttachmentsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
+                },
                 "envgroups": {
                     "methods": {
                         "create": {
@@ -7438,7 +7561,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220205",
     "rootUrl": "https://apigee.googleapis.com/",
     "schemas": {
         "EdgeConfigstoreBundleBadBundle": {
@@ -8895,6 +9018,12 @@
                     "format": "int32",
                     "type": "integer"
                 },
+                "createTime": {
+                    "description": "Output only. The first transaction creation timestamp, recorded by UAP.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "filter": {
                     "description": "Optional. A conditional statement which is evaluated against the request message to determine if it should be traced. Syntax matches that of on API Proxy bundle flow Condition.",
                     "type": "string"
@@ -9468,6 +9597,30 @@
             },
             "type": "object"
         },
+        "GoogleCloudApigeeV1EndpointAttachment": {
+            "description": "Apigee Endpoint Attachment.",
+            "id": "GoogleCloudApigeeV1EndpointAttachment",
+            "properties": {
+                "host": {
+                    "description": "Output only. Host that can be used in either HTTP Target Endpoint directly, or as the host in Target Server.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "location": {
+                    "description": "Required. Location of the endpoint attachment.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the Endpoint Attachment in the following format: `organizations/{organization}/endpointAttachments/{endpoint_attachment}`.",
+                    "type": "string"
+                },
+                "serviceAttachment": {
+                    "description": "Format: projects/*/regions/*/serviceAttachments/*",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudApigeeV1EntityMetadata": {
             "description": "Metadata common to many entities in this API.",
             "id": "GoogleCloudApigeeV1EntityMetadata",
@@ -10515,6 +10668,24 @@
             },
             "type": "object"
         },
+        "GoogleCloudApigeeV1ListEndpointAttachmentsResponse": {
+            "description": "Response for ListEndpointAttachments method.",
+            "id": "GoogleCloudApigeeV1ListEndpointAttachmentsResponse",
+            "properties": {
+                "endpointAttachments": {
+                    "description": "Endpoint Attachments in the specified organization.",
+                    "items": {
+                        "$ref": "GoogleCloudApigeeV1EndpointAttachment"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Page token that you can include in a ListEndpointAttachments request to retrieve the next page. If omitted, no subsequent pages exist.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse": {
             "description": "Response for ListEnvironmentGroupAttachments.",
             "id": "GoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse",
@@ -12119,7 +12290,7 @@
                     "type": "string"
                 },
                 "timestampMs": {
-                    "description": "The first transaction creation timestamp in millisecond, recoreded by UAP.",
+                    "description": "The first transaction creation timestamp in millisecond, recorded by UAP.",
                     "format": "int64",
                     "type": "string"
                 }
diff --git a/discovery/googleapis/apikeys__v2.json b/discovery/googleapis/apikeys__v2.json
index 38038ec..f2476af 100644
--- a/discovery/googleapis/apikeys__v2.json
+++ b/discovery/googleapis/apikeys__v2.json
@@ -169,7 +169,7 @@
                         "keys": {
                             "methods": {
                                 "clone": {
-                                    "description": "Clones the existing key's restriction and display name to a new API key. The service account must have the `apikeys.keys.get` and `apikeys.keys.create` permissions in the project. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+                                    "description": "DEPRECATED: API customers can call `GetKey` and then `CreateKey` methods to create a copy of an existing key. Retire `CloneKey` method to eliminate the unnessary method from API Keys API. Clones the existing key's restriction and display name to a new API key. The service account must have the `apikeys.keys.get` and `apikeys.keys.create` permissions in the project. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
                                     "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/keys/{keysId}:clone",
                                     "httpMethod": "POST",
                                     "id": "apikeys.projects.locations.keys.clone",
@@ -321,7 +321,7 @@
                                     ],
                                     "parameters": {
                                         "filter": {
-                                            "description": "Optional. Only list keys that conform to the specified filter. The allowed filter strings are `state:ACTIVE` and `state:DELETED`. By default, ListKeys returns only active keys.",
+                                            "description": "Optional. Deprecated: Use `show_deleted` instead. Only list keys that conform to the specified filter. The allowed filter strings are `state:ACTIVE` and `state:DELETED`. By default, ListKeys returns only active keys.",
                                             "location": "query",
                                             "type": "string"
                                         },
@@ -342,6 +342,11 @@
                                             "pattern": "^projects/[^/]+/locations/[^/]+$",
                                             "required": true,
                                             "type": "string"
+                                        },
+                                        "showDeleted": {
+                                            "description": "Optional. Indicate that keys are marked as deleted within 30 days should also be returned. Normally only active keys are returned.",
+                                            "location": "query",
+                                            "type": "boolean"
                                         }
                                     },
                                     "path": "v2/{+parent}/keys",
@@ -422,7 +427,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220215",
     "rootUrl": "https://apikeys.googleapis.com/",
     "schemas": {
         "Operation": {
diff --git a/discovery/googleapis/appengine__v1.json b/discovery/googleapis/appengine__v1.json
index 9f8a157..0613fc3 100644
--- a/discovery/googleapis/appengine__v1.json
+++ b/discovery/googleapis/appengine__v1.json
@@ -1593,7 +1593,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220205",
     "rootUrl": "https://appengine.googleapis.com/",
     "schemas": {
         "ApiConfigHandler": {
diff --git a/discovery/googleapis/artifactregistry__v1.json b/discovery/googleapis/artifactregistry__v1.json
index e1d5f73..96e4b5f 100644
--- a/discovery/googleapis/artifactregistry__v1.json
+++ b/discovery/googleapis/artifactregistry__v1.json
@@ -106,36 +106,6 @@
     },
     "protocol": "rest",
     "resources": {
-        "operations": {
-            "methods": {
-                "get": {
-                    "description": "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.",
-                    "flatPath": "v1/operations/{operationsId}",
-                    "httpMethod": "GET",
-                    "id": "artifactregistry.operations.get",
-                    "parameterOrder": [
-                        "name"
-                    ],
-                    "parameters": {
-                        "name": {
-                            "description": "The name of the operation resource.",
-                            "location": "path",
-                            "pattern": "^operations/[^/]+$",
-                            "required": true,
-                            "type": "string"
-                        }
-                    },
-                    "path": "v1/{+name}",
-                    "response": {
-                        "$ref": "Operation"
-                    },
-                    "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform",
-                        "https://www.googleapis.com/auth/cloud-platform.read-only"
-                    ]
-                }
-            }
-        },
         "projects": {
             "methods": {
                 "getProjectSettings": {
@@ -202,6 +172,36 @@
             "resources": {
                 "locations": {
                     "resources": {
+                        "operations": {
+                            "methods": {
+                                "get": {
+                                    "description": "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.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                                    "httpMethod": "GET",
+                                    "id": "artifactregistry.projects.locations.operations.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloud-platform.read-only"
+                                    ]
+                                }
+                            }
+                        },
                         "repositories": {
                             "methods": {
                                 "create": {
@@ -479,16 +479,12 @@
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
-                                        }
-                                    }
-                                },
-                                "aptartifacts": {
-                                    "methods": {
+                                        },
                                         "upload": {
                                             "description": "Directly uploads an Apt artifact. The returned Operation will complete once the resources are uploaded. Package, Version, and File resources are created based on the imported artifact. Imported artifacts that conflict with existing resources are ignored.",
                                             "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/repositories/{repositoriesId}/aptArtifacts:create",
                                             "httpMethod": "POST",
-                                            "id": "artifactregistry.projects.locations.repositories.aptartifacts.upload",
+                                            "id": "artifactregistry.projects.locations.repositories.aptArtifacts.upload",
                                             "mediaUpload": {
                                                 "accept": [
                                                     "*/*"
@@ -635,6 +631,11 @@
                                                     "location": "query",
                                                     "type": "string"
                                                 },
+                                                "orderBy": {
+                                                    "description": "The field to order the results by.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
                                                 "pageSize": {
                                                     "description": "The maximum number of files to return.",
                                                     "format": "int32",
@@ -697,13 +698,13 @@
                                         }
                                     }
                                 },
-                                "googetartifacts": {
+                                "googetArtifacts": {
                                     "methods": {
                                         "upload": {
                                             "description": "Directly uploads a GooGet artifact. The returned Operation will complete once the resources are uploaded. Package, Version, and File resources are created based on the imported artifact. Imported artifacts that conflict with existing resources are ignored.",
                                             "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/repositories/{repositoriesId}/googetArtifacts:create",
                                             "httpMethod": "POST",
-                                            "id": "artifactregistry.projects.locations.repositories.googetartifacts.upload",
+                                            "id": "artifactregistry.projects.locations.repositories.googetArtifacts.upload",
                                             "mediaUpload": {
                                                 "accept": [
                                                     "*/*"
@@ -1080,7 +1081,7 @@
                                                     ],
                                                     "parameters": {
                                                         "orderBy": {
-                                                            "description": "Optional. Sorting field and order",
+                                                            "description": "Optional. The field to order the results by.",
                                                             "location": "query",
                                                             "type": "string"
                                                         },
@@ -1160,16 +1161,12 @@
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
-                                        }
-                                    }
-                                },
-                                "yumartifacts": {
-                                    "methods": {
+                                        },
                                         "upload": {
                                             "description": "Directly uploads a Yum artifact. The returned Operation will complete once the resources are uploaded. Package, Version, and File resources are created based on the imported artifact. Imported artifacts that conflict with existing resources are ignored.",
                                             "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/repositories/{repositoriesId}/yumArtifacts:create",
                                             "httpMethod": "POST",
-                                            "id": "artifactregistry.projects.locations.repositories.yumartifacts.upload",
+                                            "id": "artifactregistry.projects.locations.repositories.yumArtifacts.upload",
                                             "mediaUpload": {
                                                 "accept": [
                                                     "*/*"
@@ -1214,7 +1211,7 @@
             }
         }
     },
-    "revision": "20220113",
+    "revision": "20220212",
     "rootUrl": "https://artifactregistry.googleapis.com/",
     "schemas": {
         "Binding": {
@@ -1739,7 +1736,7 @@
                     "type": "string"
                 },
                 "kmsKeyName": {
-                    "description": "The Cloud KMS resource name of the customer managed encryption key that’s used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created.",
+                    "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created.",
                     "type": "string"
                 },
                 "labels": {
diff --git a/discovery/googleapis/assuredworkloads__v1.json b/discovery/googleapis/assuredworkloads__v1.json
index 6ed0269..17fb2b2 100644
--- a/discovery/googleapis/assuredworkloads__v1.json
+++ b/discovery/googleapis/assuredworkloads__v1.json
@@ -349,7 +349,7 @@
             }
         }
     },
-    "revision": "20220113",
+    "revision": "20220214",
     "rootUrl": "https://assuredworkloads.googleapis.com/",
     "schemas": {
         "GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata": {
diff --git a/discovery/googleapis/authorizedbuyersmarketplace__v1.json b/discovery/googleapis/authorizedbuyersmarketplace__v1.json
index 55b8ff2..40809e6 100644
--- a/discovery/googleapis/authorizedbuyersmarketplace__v1.json
+++ b/discovery/googleapis/authorizedbuyersmarketplace__v1.json
@@ -1305,7 +1305,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://authorizedbuyersmarketplace.googleapis.com/",
     "schemas": {
         "AcceptProposalRequest": {
@@ -1575,6 +1575,21 @@
             "description": "Message captures data about the creatives in the deal.",
             "id": "CreativeRequirements",
             "properties": {
+                "creativeFormat": {
+                    "description": "Output only. The format of the creative, only applicable for programmatic guaranteed and preferred deals.",
+                    "enum": [
+                        "CREATIVE_FORMAT_UNSPECIFIED",
+                        "DISPLAY",
+                        "VIDEO"
+                    ],
+                    "enumDescriptions": [
+                        "A placeholder for an unspecified creative format.",
+                        "Banner creatives such as image or HTML5 assets.",
+                        "Video creatives that can be played in a video player."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "creativePreApprovalPolicy": {
                     "description": "Output only. Specifies the creative pre-approval policy.",
                     "enum": [
@@ -1605,6 +1620,12 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "maxAdDurationMs": {
+                    "description": "Output only. The max duration of the video creative in milliseconds. only applicable for deals with video creatives.",
+                    "format": "int64",
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "programmaticCreativeSource": {
                     "description": "Output only. Specifies the creative source for programmatic deals. PUBLISHER means creative is provided by seller and ADVERTISER means creative is provided by the buyer.",
                     "enum": [
@@ -1619,6 +1640,25 @@
                     ],
                     "readOnly": true,
                     "type": "string"
+                },
+                "skippableAdType": {
+                    "description": "Output only. Skippable video ads allow viewers to skip ads after 5 seconds. Only applicable for deals with video creatives.",
+                    "enum": [
+                        "SKIPPABLE_AD_TYPE_UNSPECIFIED",
+                        "SKIPPABLE",
+                        "INSTREAM_SELECT",
+                        "NOT_SKIPPABLE",
+                        "ANY"
+                    ],
+                    "enumDescriptions": [
+                        "A placeholder for an unspecified skippable ad type.",
+                        "Video ad that can be skipped after 5 seconds. This value will appear in RTB bid requests as SkippableBidRequestType::REQUIRE_SKIPPABLE.",
+                        "Video ad that can be skipped after 5 seconds, and is counted as engaged view after 30 seconds. The creative is hosted on YouTube only, and viewcount of the YouTube video increments after the engaged view. This value will appear in RTB bid requests as SkippableBidRequestType::REQUIRE_SKIPPABLE.",
+                        "This video ad is not skippable. This value will appear in RTB bid requests as SkippableBidRequestType::BLOCK_SKIPPABLE.",
+                        "This video ad can be skipped after 5 seconds or not-skippable. This value will appear in RTB bid requests as SkippableBidRequestType::ALLOW_SKIPPABLE."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/baremetalsolution__v1.json b/discovery/googleapis/baremetalsolution__v1.json
index 7032aa0..66b2ef6 100644
--- a/discovery/googleapis/baremetalsolution__v1.json
+++ b/discovery/googleapis/baremetalsolution__v1.json
@@ -266,7 +266,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220209",
     "rootUrl": "https://baremetalsolution.googleapis.com/",
     "schemas": {
         "CancelOperationRequest": {
diff --git a/discovery/googleapis/baremetalsolution__v2.json b/discovery/googleapis/baremetalsolution__v2.json
new file mode 100644
index 0000000..cb48340
--- /dev/null
+++ b/discovery/googleapis/baremetalsolution__v2.json
@@ -0,0 +1,2538 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://baremetalsolution.googleapis.com/",
+    "batchPath": "batch",
+    "description": "Provides ways to manage Bare Metal Solution hardware installed in a regional extension located near a Google Cloud data center.",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/bare-metal",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "baremetalsolution:v2",
+    "kind": "discovery#restDescription",
+    "name": "baremetalsolution",
+    "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": {
+        "projects": {
+            "resources": {
+                "locations": {
+                    "methods": {
+                        "get": {
+                            "description": "Gets information about a location.",
+                            "flatPath": "v2/projects/{projectsId}/locations/{locationsId}",
+                            "httpMethod": "GET",
+                            "id": "baremetalsolution.projects.locations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Resource name for the location.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "response": {
+                                "$ref": "Location"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "flatPath": "v2/projects/{projectsId}/locations",
+                            "httpMethod": "GET",
+                            "id": "baremetalsolution.projects.locations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like \"displayName=tokyo\", and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The maximum number of results to return. If not set, the service selects a default.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "instances": {
+                            "methods": {
+                                "get": {
+                                    "description": "Get details about a single server.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.instances.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "response": {
+                                        "$ref": "Instance"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "List servers in a given project and location.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/instances",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.instances.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "List filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. Server may return fewer items than requested. If unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results from the server.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. Parent value for ListInstancesRequest.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+parent}/instances",
+                                    "response": {
+                                        "$ref": "ListInstancesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Update details of a single server.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "baremetalsolution.projects.locations.instances.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Output only. The resource name of this `Instance`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/instances/{instance}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "The list of fields to update. The only currently supported fields are: `labels`",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "request": {
+                                        "$ref": "Instance"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "reset": {
+                                    "description": "Perform an ungraceful, hard reset on a server. Equivalent to shutting the power off and then turning it back on.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:reset",
+                                    "httpMethod": "POST",
+                                    "id": "baremetalsolution.projects.locations.instances.reset",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}:reset",
+                                    "request": {
+                                        "$ref": "ResetInstanceRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "start": {
+                                    "description": "Starts a server that was shutdown.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:start",
+                                    "httpMethod": "POST",
+                                    "id": "baremetalsolution.projects.locations.instances.start",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}:start",
+                                    "request": {
+                                        "$ref": "StartInstanceRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "networks": {
+                            "methods": {
+                                "get": {
+                                    "description": "Get details of a single network.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/networks/{networksId}",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.networks.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/networks/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "response": {
+                                        "$ref": "Network"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "List network in a given project and location.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/networks",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.networks.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "List filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server might return fewer items than requested. If unspecified, server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results from the server.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. Parent value for ListNetworksRequest.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+parent}/networks",
+                                    "response": {
+                                        "$ref": "ListNetworksResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "listNetworkUsage": {
+                                    "description": "List all Networks (and used IPs for each Network) in the vendor account associated with the specified project.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/networks:listNetworkUsage",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.networks.listNetworkUsage",
+                                    "parameterOrder": [
+                                        "location"
+                                    ],
+                                    "parameters": {
+                                        "location": {
+                                            "description": "Required. Parent value (project and location).",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+location}/networks:listNetworkUsage",
+                                    "response": {
+                                        "$ref": "ListNetworkUsageResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Update details of a single network.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/networks/{networksId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "baremetalsolution.projects.locations.networks.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Output only. The resource name of this `Network`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/networks/{network}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/networks/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "The list of fields to update. The only currently supported fields are: `labels`",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "request": {
+                                        "$ref": "Network"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "nfsShares": {
+                            "methods": {
+                                "get": {
+                                    "description": "Get details of a single NFS share.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nfsShares/{nfsSharesId}",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.nfsShares.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/nfsShares/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "response": {
+                                        "$ref": "NfsShare"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "List NFS shares.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nfsShares",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.nfsShares.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "List filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server might return fewer items than requested. If unspecified, server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results from the server.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. Parent value for ListNfsSharesRequest.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+parent}/nfsShares",
+                                    "response": {
+                                        "$ref": "ListNfsSharesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Update details of a single NFS share.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nfsShares/{nfsSharesId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "baremetalsolution.projects.locations.nfsShares.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Output only. The name of the NFS share.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/nfsShares/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "The list of fields to update. The only currently supported fields are: `labels`",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "request": {
+                                        "$ref": "NfsShare"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "provisioningConfigs": {
+                            "methods": {
+                                "submit": {
+                                    "description": "Submit a provisiong configuration for a given project.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/provisioningConfigs:submit",
+                                    "httpMethod": "POST",
+                                    "id": "baremetalsolution.projects.locations.provisioningConfigs.submit",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Required. The parent project and location containing the ProvisioningConfig.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+parent}/provisioningConfigs:submit",
+                                    "request": {
+                                        "$ref": "SubmitProvisioningConfigRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "SubmitProvisioningConfigResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "provisioningQuotas": {
+                            "methods": {
+                                "list": {
+                                    "description": "List the budget details to provision resources on a given project.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/provisioningQuotas",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.provisioningQuotas.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "pageSize": {
+                                            "description": "Requested page size. The server might return fewer items than requested. If unspecified, server will pick an appropriate default. Notice that page_size field is not supported and won't be respected in the API request for now, will be updated when pagination is supported.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results from the server.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. Parent value for ListProvisioningQuotasRequest.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+parent}/provisioningQuotas",
+                                    "response": {
+                                        "$ref": "ListProvisioningQuotasResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "snapshotSchedulePolicies": {
+                            "methods": {
+                                "create": {
+                                    "description": "Create a snapshot schedule policy in the specified project.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/snapshotSchedulePolicies",
+                                    "httpMethod": "POST",
+                                    "id": "baremetalsolution.projects.locations.snapshotSchedulePolicies.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Required. The parent project and location containing the SnapshotSchedulePolicy.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "snapshotSchedulePolicyId": {
+                                            "description": "Required. Snapshot policy ID",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+parent}/snapshotSchedulePolicies",
+                                    "request": {
+                                        "$ref": "SnapshotSchedulePolicy"
+                                    },
+                                    "response": {
+                                        "$ref": "SnapshotSchedulePolicy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Delete a named snapshot schedule policy.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/snapshotSchedulePolicies/{snapshotSchedulePoliciesId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "baremetalsolution.projects.locations.snapshotSchedulePolicies.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the snapshot schedule policy to delete.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/snapshotSchedulePolicies/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Get details of a single snapshot schedule policy.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/snapshotSchedulePolicies/{snapshotSchedulePoliciesId}",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.snapshotSchedulePolicies.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/snapshotSchedulePolicies/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "response": {
+                                        "$ref": "SnapshotSchedulePolicy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "List snapshot schedule policies in a given project and location.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/snapshotSchedulePolicies",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.snapshotSchedulePolicies.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "List filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "The maximum number of items to return.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "The next_page_token value returned from a previous List request, if any.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The parent project containing the Snapshot Schedule Policies.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+parent}/snapshotSchedulePolicies",
+                                    "response": {
+                                        "$ref": "ListSnapshotSchedulePoliciesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Update a snapshot schedule policy in the specified project.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/snapshotSchedulePolicies/{snapshotSchedulePoliciesId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "baremetalsolution.projects.locations.snapshotSchedulePolicies.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Output only. The name of the snapshot schedule policy.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/snapshotSchedulePolicies/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required. The list of fields to update.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "request": {
+                                        "$ref": "SnapshotSchedulePolicy"
+                                    },
+                                    "response": {
+                                        "$ref": "SnapshotSchedulePolicy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "volumes": {
+                            "methods": {
+                                "get": {
+                                    "description": "Get details of a single storage volume.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.volumes.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. Name of the resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "response": {
+                                        "$ref": "Volume"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "List storage volumes in a given project and location.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes",
+                                    "httpMethod": "GET",
+                                    "id": "baremetalsolution.projects.locations.volumes.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "List filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Requested page size. The server might return fewer items than requested. If unspecified, server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "A token identifying a page of results from the server.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. Parent value for ListVolumesRequest.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+parent}/volumes",
+                                    "response": {
+                                        "$ref": "ListVolumesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Update details of a single storage volume.",
+                                    "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "baremetalsolution.projects.locations.volumes.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Output only. The resource name of this `Volume`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/volumes/{volume}`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "The list of fields to update. The only currently supported fields are: `snapshot_auto_delete_behavior` `snapshot_schedule_policy_name` 'labels' 'requested_size_gib'",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2/{+name}",
+                                    "request": {
+                                        "$ref": "Volume"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "luns": {
+                                    "methods": {
+                                        "get": {
+                                            "description": "Get details of a single storage logical unit number(LUN).",
+                                            "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/luns/{lunsId}",
+                                            "httpMethod": "GET",
+                                            "id": "baremetalsolution.projects.locations.volumes.luns.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Name of the resource.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/luns/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+name}",
+                                            "response": {
+                                                "$ref": "Lun"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "List storage volume luns for given storage volume.",
+                                            "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/luns",
+                                            "httpMethod": "GET",
+                                            "id": "baremetalsolution.projects.locations.volumes.luns.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server might return fewer items than requested. If unspecified, server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results from the server.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. Parent value for ListLunsRequest.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+parent}/luns",
+                                            "response": {
+                                                "$ref": "ListLunsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "snapshots": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Create a storage volume snapshot in a containing volume.",
+                                            "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots",
+                                            "httpMethod": "POST",
+                                            "id": "baremetalsolution.projects.locations.volumes.snapshots.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "Required. The volume to snapshot.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+parent}/snapshots",
+                                            "request": {
+                                                "$ref": "VolumeSnapshot"
+                                            },
+                                            "response": {
+                                                "$ref": "VolumeSnapshot"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes a storage volume snapshot for a given volume.",
+                                            "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots/{snapshotsId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "baremetalsolution.projects.locations.volumes.snapshots.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The name of the snapshot to delete.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/snapshots/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+name}",
+                                            "response": {
+                                                "$ref": "Empty"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Get details of a single storage volume snapshot.",
+                                            "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots/{snapshotsId}",
+                                            "httpMethod": "GET",
+                                            "id": "baremetalsolution.projects.locations.volumes.snapshots.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. Name of the resource.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/snapshots/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+name}",
+                                            "response": {
+                                                "$ref": "VolumeSnapshot"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "List storage volume snapshots for given storage volume.",
+                                            "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots",
+                                            "httpMethod": "GET",
+                                            "id": "baremetalsolution.projects.locations.volumes.snapshots.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "pageSize": {
+                                                    "description": "Requested page size. The server might return fewer items than requested. If unspecified, server will pick an appropriate default.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "A token identifying a page of results from the server.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. Parent value for ListVolumesRequest.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+parent}/snapshots",
+                                            "response": {
+                                                "$ref": "ListVolumeSnapshotsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "restoreVolumeSnapshot": {
+                                            "description": "Restore a storage volume snapshot to its containing volume.",
+                                            "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots/{snapshotsId}:restoreVolumeSnapshot",
+                                            "httpMethod": "POST",
+                                            "id": "baremetalsolution.projects.locations.volumes.snapshots.restoreVolumeSnapshot",
+                                            "parameterOrder": [
+                                                "volumeSnapshot"
+                                            ],
+                                            "parameters": {
+                                                "volumeSnapshot": {
+                                                    "description": "Required. Name of the resource.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/snapshots/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2/{+volumeSnapshot}:restoreVolumeSnapshot",
+                                            "request": {
+                                                "$ref": "RestoreVolumeSnapshotRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "20220209",
+    "rootUrl": "https://baremetalsolution.googleapis.com/",
+    "schemas": {
+        "AllowedClient": {
+            "description": "Represents an 'access point' for the share.",
+            "id": "AllowedClient",
+            "properties": {
+                "allowDev": {
+                    "description": "Allow dev flag. Which controls whether to allow creation of devices.",
+                    "type": "boolean"
+                },
+                "allowSuid": {
+                    "description": "Allow the setuid flag.",
+                    "type": "boolean"
+                },
+                "allowedClientsCidr": {
+                    "description": "The subnet of IP addresses permitted to access the share.",
+                    "type": "string"
+                },
+                "mountPermissions": {
+                    "description": "Mount permissions.",
+                    "enum": [
+                        "MOUNT_PERMISSIONS_UNSPECIFIED",
+                        "READ",
+                        "READ_WRITE"
+                    ],
+                    "enumDescriptions": [
+                        "Permissions were not specified.",
+                        "NFS share can be mount with read-only permissions.",
+                        "NFS share can be mount with read-write permissions."
+                    ],
+                    "type": "string"
+                },
+                "network": {
+                    "description": "The network the access point sits on.",
+                    "type": "string"
+                },
+                "noRootSquash": {
+                    "description": "Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication.",
+                    "type": "boolean"
+                },
+                "shareIp": {
+                    "description": "The IP address of the share on this network.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "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 `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "Instance": {
+            "description": "A server.",
+            "id": "Instance",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. Create a time stamp.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "hyperthreadingEnabled": {
+                    "description": "True if you enable hyperthreading for the server, otherwise false. The default value is false.",
+                    "type": "boolean"
+                },
+                "id": {
+                    "description": "An identifier for the `Instance`, generated by the backend.",
+                    "type": "string"
+                },
+                "interactiveSerialConsoleEnabled": {
+                    "description": "True if the interactive serial console feature is enabled for the instance, false otherwise. The default value is false.",
+                    "type": "boolean"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels as key value pairs.",
+                    "type": "object"
+                },
+                "luns": {
+                    "description": "List of LUNs associated with this server.",
+                    "items": {
+                        "$ref": "Lun"
+                    },
+                    "type": "array"
+                },
+                "machineType": {
+                    "description": "The server type. [Available server types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The resource name of this `Instance`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/instances/{instance}`",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "networks": {
+                    "description": "List of networks associated with this server.",
+                    "items": {
+                        "$ref": "Network"
+                    },
+                    "type": "array"
+                },
+                "state": {
+                    "description": "The state of the server.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "PROVISIONING",
+                        "RUNNING",
+                        "DELETED"
+                    ],
+                    "enumDescriptions": [
+                        "The server is in an unknown state.",
+                        "The server is being provisioned.",
+                        "The server is running.",
+                        "The server has been deleted."
+                    ],
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. Update a time stamp.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "InstanceConfig": {
+            "description": "Configuration parameters for a new instance.",
+            "id": "InstanceConfig",
+            "properties": {
+                "clientNetwork": {
+                    "$ref": "NetworkAddress",
+                    "description": "Client network address."
+                },
+                "hyperthreading": {
+                    "description": "Whether the instance should be provisioned with Hyperthreading enabled.",
+                    "type": "boolean"
+                },
+                "id": {
+                    "description": "A transient unique identifier to idenfity an instance within an ProvisioningConfig request.",
+                    "type": "string"
+                },
+                "instanceType": {
+                    "description": "Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The name of the instance config.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "osImage": {
+                    "description": "OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)",
+                    "type": "string"
+                },
+                "privateNetwork": {
+                    "$ref": "NetworkAddress",
+                    "description": "Private network address, if any."
+                },
+                "userNote": {
+                    "description": "User note field, it can be used by customers to add additional information for the BMS Ops team .",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "InstanceQuota": {
+            "description": "A resource budget.",
+            "id": "InstanceQuota",
+            "properties": {
+                "availableMachineCount": {
+                    "description": "Number of machines than can be created for the given location and instance_type.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "instanceType": {
+                    "description": "Instance type.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "Location where the quota applies.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The name of the instance quota.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "IntakeVlanAttachment": {
+            "description": "A GCP vlan attachment.",
+            "id": "IntakeVlanAttachment",
+            "properties": {
+                "id": {
+                    "description": "Identifier of the VLAN attachment.",
+                    "type": "string"
+                },
+                "pairingKey": {
+                    "description": "Attachment pairing key.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListInstancesResponse": {
+            "description": "Response message for the list of servers.",
+            "id": "ListInstancesResponse",
+            "properties": {
+                "instances": {
+                    "description": "The list of servers.",
+                    "items": {
+                        "$ref": "Instance"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token identifying a page of results from the server.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListLocationsResponse": {
+            "description": "The response message for Locations.ListLocations.",
+            "id": "ListLocationsResponse",
+            "properties": {
+                "locations": {
+                    "description": "A list of locations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Location"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListLunsResponse": {
+            "description": "Response message containing the list of storage volume luns.",
+            "id": "ListLunsResponse",
+            "properties": {
+                "luns": {
+                    "description": "The list of luns.",
+                    "items": {
+                        "$ref": "Lun"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token identifying a page of results from the server.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListNetworkUsageResponse": {
+            "description": "Response with Networks with IPs",
+            "id": "ListNetworkUsageResponse",
+            "properties": {
+                "networks": {
+                    "description": "Networks with IPs.",
+                    "items": {
+                        "$ref": "NetworkUsage"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListNetworksResponse": {
+            "description": "Response message containing the list of networks.",
+            "id": "ListNetworksResponse",
+            "properties": {
+                "networks": {
+                    "description": "The list of networks.",
+                    "items": {
+                        "$ref": "Network"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token identifying a page of results from the server.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListNfsSharesResponse": {
+            "description": "Response message containing the list of NFS shares.",
+            "id": "ListNfsSharesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token identifying a page of results from the server.",
+                    "type": "string"
+                },
+                "nfsShares": {
+                    "description": "The list of NFS shares.",
+                    "items": {
+                        "$ref": "NfsShare"
+                    },
+                    "type": "array"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListProvisioningQuotasResponse": {
+            "description": "Response message for the list of provisioning quotas.",
+            "id": "ListProvisioningQuotasResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                },
+                "provisioningQuotas": {
+                    "description": "The provisioning quotas registered in this project.",
+                    "items": {
+                        "$ref": "ProvisioningQuota"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListSnapshotSchedulePoliciesResponse": {
+            "description": "Response message containing the list of snapshot schedule policies.",
+            "id": "ListSnapshotSchedulePoliciesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                },
+                "snapshotSchedulePolicies": {
+                    "description": "The snapshot schedule policies registered in this project.",
+                    "items": {
+                        "$ref": "SnapshotSchedulePolicy"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListVolumeSnapshotsResponse": {
+            "description": "Response message containing the list of storage volume snapshots.",
+            "id": "ListVolumeSnapshotsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token identifying a page of results from the server.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "volumeSnapshots": {
+                    "description": "The list of storage volumes.",
+                    "items": {
+                        "$ref": "VolumeSnapshot"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListVolumesResponse": {
+            "description": "Response message containing the list of storage volumes.",
+            "id": "ListVolumesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A token identifying a page of results from the server.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "volumes": {
+                    "description": "The list of storage volumes.",
+                    "items": {
+                        "$ref": "Volume"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Location": {
+            "description": "A resource that represents Google Cloud Platform location.",
+            "id": "Location",
+            "properties": {
+                "displayName": {
+                    "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+                    "type": "object"
+                },
+                "locationId": {
+                    "description": "The canonical id for this location. For example: `\"us-east1\"`.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata. For example the available capacity at the given location.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Lun": {
+            "description": "A storage volume logical unit number (LUN).",
+            "id": "Lun",
+            "properties": {
+                "bootLun": {
+                    "description": "Display if this LUN is a boot LUN.",
+                    "type": "boolean"
+                },
+                "id": {
+                    "description": "An identifier for the LUN, generated by the backend.",
+                    "type": "string"
+                },
+                "multiprotocolType": {
+                    "description": "The LUN multiprotocol type ensures the characteristics of the LUN are optimized for each operating system.",
+                    "enum": [
+                        "MULTIPROTOCOL_TYPE_UNSPECIFIED",
+                        "LINUX"
+                    ],
+                    "enumDescriptions": [
+                        "Server has no OS specified.",
+                        "Server with Linux OS."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The name of the LUN.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "shareable": {
+                    "description": "Display if this LUN can be shared between multiple physical servers.",
+                    "type": "boolean"
+                },
+                "sizeGb": {
+                    "description": "The size of this LUN, in gigabytes.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The state of this storage volume.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "CREATING",
+                        "UPDATING",
+                        "READY",
+                        "DELETING"
+                    ],
+                    "enumDescriptions": [
+                        "The LUN is in an unknown state.",
+                        "The LUN is being created.",
+                        "The LUN is being updated.",
+                        "The LUN is ready for use.",
+                        "The LUN has been requested to be deleted."
+                    ],
+                    "type": "string"
+                },
+                "storageType": {
+                    "description": "The storage type for this LUN.",
+                    "enum": [
+                        "STORAGE_TYPE_UNSPECIFIED",
+                        "SSD",
+                        "HDD"
+                    ],
+                    "enumDescriptions": [
+                        "The storage type for this LUN is unknown.",
+                        "This storage type for this LUN is SSD.",
+                        "This storage type for this LUN is HDD."
+                    ],
+                    "type": "string"
+                },
+                "storageVolume": {
+                    "description": "Display the storage volume for this LUN.",
+                    "type": "string"
+                },
+                "wwid": {
+                    "description": "The WWID for this LUN.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "LunRange": {
+            "description": "A LUN(Logical Unit Number) range.",
+            "id": "LunRange",
+            "properties": {
+                "quantity": {
+                    "description": "Number of LUNs to create.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "sizeGb": {
+                    "description": "The requested size of each LUN, in GB.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "Network": {
+            "description": "A Network.",
+            "id": "Network",
+            "properties": {
+                "cidr": {
+                    "description": "The cidr of the Network.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "An identifier for the `Network`, generated by the backend.",
+                    "type": "string"
+                },
+                "ipAddress": {
+                    "description": "IP address configured.",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels as key value pairs.",
+                    "type": "object"
+                },
+                "macAddress": {
+                    "description": "List of physical interfaces.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Output only. The resource name of this `Network`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/networks/{network}`",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "servicesCidr": {
+                    "description": "IP range for reserved for services (e.g. NFS).",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The Network state.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "PROVISIONING",
+                        "PROVISIONED"
+                    ],
+                    "enumDescriptions": [
+                        "The Network is in an unknown state.",
+                        "The Network is provisioning.",
+                        "The Network has been provisioned."
+                    ],
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of this network.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "CLIENT",
+                        "PRIVATE"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified value.",
+                        "Client network, a network peered to a Google Cloud VPC.",
+                        "Private network, a network local to the Bare Metal Solution environment."
+                    ],
+                    "type": "string"
+                },
+                "vlanId": {
+                    "description": "The vlan id of the Network.",
+                    "type": "string"
+                },
+                "vrf": {
+                    "$ref": "VRF",
+                    "description": "The vrf for the Network."
+                }
+            },
+            "type": "object"
+        },
+        "NetworkAddress": {
+            "description": "A network.",
+            "id": "NetworkAddress",
+            "properties": {
+                "address": {
+                    "description": "IPv4 address to be assigned to the server.",
+                    "type": "string"
+                },
+                "existingNetworkId": {
+                    "description": "Name of the existing network to use.",
+                    "type": "string"
+                },
+                "networkId": {
+                    "description": "Id of the network to use, within the same ProvisioningConfig request.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "NetworkConfig": {
+            "description": "Configuration parameters for a new network.",
+            "id": "NetworkConfig",
+            "properties": {
+                "bandwidth": {
+                    "description": "Interconnect bandwidth. Set only when type is CLIENT.",
+                    "enum": [
+                        "BANDWIDTH_UNSPECIFIED",
+                        "BW_1_GBPS",
+                        "BW_2_GBPS",
+                        "BW_5_GBPS",
+                        "BW_10_GBPS"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified value.",
+                        "1 Gbps.",
+                        "2 Gbps.",
+                        "5 Gbps.",
+                        "10 Gbps."
+                    ],
+                    "type": "string"
+                },
+                "cidr": {
+                    "description": "CIDR range of the network.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "A transient unique identifier to identify a volume within an ProvisioningConfig request.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The name of the network config.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "serviceCidr": {
+                    "description": "Service CIDR, if any.",
+                    "enum": [
+                        "SERVICE_CIDR_UNSPECIFIED",
+                        "DISABLED",
+                        "HIGH_26",
+                        "HIGH_27",
+                        "HIGH_28"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified value.",
+                        "Services are disabled for the given network.",
+                        "Use the highest /26 block of the network to host services.",
+                        "Use the highest /27 block of the network to host services.",
+                        "Use the highest /28 block of the network to host services."
+                    ],
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of this network, either Client or Private.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "CLIENT",
+                        "PRIVATE"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified value.",
+                        "Client network, that is a network peered to a GCP VPC.",
+                        "Private network, that is a network local to the BMS POD."
+                    ],
+                    "type": "string"
+                },
+                "userNote": {
+                    "description": "User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).",
+                    "type": "string"
+                },
+                "vlanAttachments": {
+                    "description": "List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).",
+                    "items": {
+                        "$ref": "IntakeVlanAttachment"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "NetworkUsage": {
+            "description": "Network with all used IP addresses.",
+            "id": "NetworkUsage",
+            "properties": {
+                "network": {
+                    "$ref": "Network",
+                    "description": "Network."
+                },
+                "usedIps": {
+                    "description": "All used IP addresses in this network.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "NfsExport": {
+            "description": "A NFS export entry.",
+            "id": "NfsExport",
+            "properties": {
+                "allowDev": {
+                    "description": "Allow dev flag in NfsShare AllowedClientsRequest.",
+                    "type": "boolean"
+                },
+                "allowSuid": {
+                    "description": "Allow the setuid flag.",
+                    "type": "boolean"
+                },
+                "cidr": {
+                    "description": "A CIDR range.",
+                    "type": "string"
+                },
+                "machineId": {
+                    "description": "Either a single machine, identified by an ID, or a comma-separated list of machine IDs.",
+                    "type": "string"
+                },
+                "networkId": {
+                    "description": "Network to use to publish the export.",
+                    "type": "string"
+                },
+                "noRootSquash": {
+                    "description": "Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication.",
+                    "type": "boolean"
+                },
+                "permissions": {
+                    "description": "Export permissions.",
+                    "enum": [
+                        "PERMISSIONS_UNSPECIFIED",
+                        "READ_ONLY",
+                        "READ_WRITE"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified value.",
+                        "Read-only permission.",
+                        "Read-write permission."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "NfsShare": {
+            "description": "An NFS share.",
+            "id": "NfsShare",
+            "properties": {
+                "allowedClients": {
+                    "description": "List of allowed access points.",
+                    "items": {
+                        "$ref": "AllowedClient"
+                    },
+                    "type": "array"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels as key value pairs.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The name of the NFS share.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "nfsShareId": {
+                    "description": "Output only. An identifier for the NFS share, generated by the backend.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The state of the NFS share.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "PROVISIONED"
+                    ],
+                    "enumDescriptions": [
+                        "The share is in an unknown state.",
+                        "The share has been provisioned."
+                    ],
+                    "type": "string"
+                },
+                "volume": {
+                    "description": "The volume containing the share.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a network API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "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.",
+                    "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 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.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "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}`.",
+                    "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 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`.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "ProvisioningConfig": {
+            "description": "A provisioning configuration.",
+            "id": "ProvisioningConfig",
+            "properties": {
+                "handoverServiceAccount": {
+                    "description": "A service account to enable customers to access instance credentials upon handover.",
+                    "type": "string"
+                },
+                "instances": {
+                    "description": "Instances to be created.",
+                    "items": {
+                        "$ref": "InstanceConfig"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Output only. The name of the provisioning config.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "networks": {
+                    "description": "Networks to be created.",
+                    "items": {
+                        "$ref": "NetworkConfig"
+                    },
+                    "type": "array"
+                },
+                "ticketId": {
+                    "description": "A generated buganizer id to track provisioning request.",
+                    "type": "string"
+                },
+                "volumes": {
+                    "description": "Volumes to be created.",
+                    "items": {
+                        "$ref": "VolumeConfig"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ProvisioningQuota": {
+            "description": "A provisioning quota for a given project.",
+            "id": "ProvisioningQuota",
+            "properties": {
+                "assetType": {
+                    "description": "The asset type of this provisioning quota.",
+                    "enum": [
+                        "ASSET_TYPE_UNSPECIFIED",
+                        "ASSET_TYPE_SERVER",
+                        "ASSET_TYPE_STORAGE",
+                        "ASSET_TYPE_NETWORK"
+                    ],
+                    "enumDescriptions": [
+                        "The unspecified type.",
+                        "The server asset type.",
+                        "The storage asset type.",
+                        "The network asset type."
+                    ],
+                    "type": "string"
+                },
+                "availableCount": {
+                    "description": "The available count of the provisioning quota.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "gcpService": {
+                    "description": "The gcp service of the provisioning quota.",
+                    "type": "string"
+                },
+                "instanceQuota": {
+                    "$ref": "InstanceQuota",
+                    "description": "Instance quota."
+                },
+                "location": {
+                    "description": "The specific location of the provisioining quota.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The name of the provisioning quota.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "QosPolicy": {
+            "description": "QOS policy parameters.",
+            "id": "QosPolicy",
+            "properties": {
+                "bandwidthGbps": {
+                    "description": "The bandwidth permitted by the QOS policy, in gbps.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
+        "ResetInstanceRequest": {
+            "description": "Message requesting to reset a server.",
+            "id": "ResetInstanceRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "RestoreVolumeSnapshotRequest": {
+            "description": "Message for restoring a volume snapshot.",
+            "id": "RestoreVolumeSnapshotRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "Schedule": {
+            "description": "A snapshot schedule.",
+            "id": "Schedule",
+            "properties": {
+                "crontabSpec": {
+                    "description": "A crontab-like specification that the schedule uses to take snapshots.",
+                    "type": "string"
+                },
+                "prefix": {
+                    "description": "A list of snapshot names created in this schedule.",
+                    "type": "string"
+                },
+                "retentionCount": {
+                    "description": "The maximum number of snapshots to retain in this schedule.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "SnapshotReservationDetail": {
+            "description": "Details about snapshot space reservation and usage on the storage volume.",
+            "id": "SnapshotReservationDetail",
+            "properties": {
+                "reservedSpaceGib": {
+                    "description": "The space on this storage volume reserved for snapshots, shown in GiB.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "reservedSpaceRemainingGib": {
+                    "description": "The amount, in GiB, of available space in this storage volume's reserved snapshot space.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "reservedSpaceUsedPercent": {
+                    "description": "The percent of snapshot space on this storage volume actually being used by the snapshot copies. This value might be higher than 100% if the snapshot copies have overflowed into the data portion of the storage volume.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "SnapshotSchedulePolicy": {
+            "description": "A snapshot schedule policy.",
+            "id": "SnapshotSchedulePolicy",
+            "properties": {
+                "description": {
+                    "description": "The description of the snapshot schedule policy.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "An identifier for the snapshot schedule policy, generated by the backend.",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels as key value pairs.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The name of the snapshot schedule policy.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "schedules": {
+                    "description": "The snapshot schedules contained in this policy. You can specify a maximum of 5 schedules.",
+                    "items": {
+                        "$ref": "Schedule"
+                    },
+                    "type": "array"
+                },
+                "state": {
+                    "description": "The state of the snapshot schedule policy.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "PROVISIONED"
+                    ],
+                    "enumDescriptions": [
+                        "The policy is in an unknown state.",
+                        "The policy is been provisioned."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StartInstanceRequest": {
+            "description": "Message requesting to start a server.",
+            "id": "StartInstanceRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). 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).",
+            "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 message 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 user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SubmitProvisioningConfigRequest": {
+            "description": "Request for SubmitProvisioningConfig.",
+            "id": "SubmitProvisioningConfigRequest",
+            "properties": {
+                "email": {
+                    "description": "Optional. Email provided to send a confirmation with provisioning config to.",
+                    "type": "string"
+                },
+                "provisioningConfig": {
+                    "$ref": "ProvisioningConfig",
+                    "description": "Required. The ProvisioningConfig to create."
+                }
+            },
+            "type": "object"
+        },
+        "SubmitProvisioningConfigResponse": {
+            "description": "Response for SubmitProvisioningConfig.",
+            "id": "SubmitProvisioningConfigResponse",
+            "properties": {
+                "provisioningConfig": {
+                    "$ref": "ProvisioningConfig",
+                    "description": "The submitted provisioning config."
+                }
+            },
+            "type": "object"
+        },
+        "VRF": {
+            "description": "A network VRF.",
+            "id": "VRF",
+            "properties": {
+                "name": {
+                    "description": "The name of the VRF.",
+                    "type": "string"
+                },
+                "qosPolicy": {
+                    "$ref": "QosPolicy",
+                    "description": "The QOS policy applied to this VRF."
+                },
+                "state": {
+                    "description": "The possible state of VRF.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "PROVISIONING",
+                        "PROVISIONED"
+                    ],
+                    "enumDescriptions": [
+                        "The unspecified state.",
+                        "The vrf is provisioning.",
+                        "The vrf is provisioned."
+                    ],
+                    "type": "string"
+                },
+                "vlanAttachments": {
+                    "description": "The list of VLAN attachments for the VRF.",
+                    "items": {
+                        "$ref": "VlanAttachment"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "VlanAttachment": {
+            "description": "VLAN attachment details.",
+            "id": "VlanAttachment",
+            "properties": {
+                "peerIp": {
+                    "description": "The peer IP of the attachment.",
+                    "type": "string"
+                },
+                "peerVlanId": {
+                    "description": "The peer vlan ID of the attachment.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "routerIp": {
+                    "description": "The router IP of the attachment.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Volume": {
+            "description": "A storage volume.",
+            "id": "Volume",
+            "properties": {
+                "autoGrownSizeGib": {
+                    "description": "The size, in GiB, that this storage volume has expanded as a result of an auto grow policy. In the absence of auto-grow, the value is 0.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "currentSizeGib": {
+                    "description": "The current size of this storage volume, in GiB, including space reserved for snapshots. This size might be different than the requested size if the storage volume has been configured with auto grow or auto shrink.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "An identifier for the `Volume`, generated by the backend.",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels as key value pairs.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The resource name of this `Volume`. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. Format: `projects/{project}/locations/{location}/volumes/{volume}`",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "remainingSpaceGib": {
+                    "description": "The space remaining in the storage volume for new LUNs, in GiB, excluding space reserved for snapshots.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "requestedSizeGib": {
+                    "description": "The requested size of this storage volume, in GiB.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "snapshotAutoDeleteBehavior": {
+                    "description": "The behavior to use when snapshot reserved space is full.",
+                    "enum": [
+                        "SNAPSHOT_AUTO_DELETE_BEHAVIOR_UNSPECIFIED",
+                        "DISABLED",
+                        "OLDEST_FIRST",
+                        "NEWEST_FIRST"
+                    ],
+                    "enumDescriptions": [
+                        "The unspecified behavior.",
+                        "Don't delete any snapshots. This disables new snapshot creation, as long as the snapshot reserved space is full.",
+                        "Delete the oldest snapshots first.",
+                        "Delete the newest snapshots first."
+                    ],
+                    "type": "string"
+                },
+                "snapshotReservationDetail": {
+                    "$ref": "SnapshotReservationDetail",
+                    "description": "Details about snapshot space reservation and usage on the storage volume."
+                },
+                "snapshotSchedulePolicy": {
+                    "description": "The name of the snapshot schedule policy in use for this volume, if any.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The state of this storage volume.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "CREATING",
+                        "READY",
+                        "DELETING"
+                    ],
+                    "enumDescriptions": [
+                        "The storage volume is in an unknown state.",
+                        "The storage volume is being created.",
+                        "The storage volume is ready for use.",
+                        "The storage volume has been requested to be deleted."
+                    ],
+                    "type": "string"
+                },
+                "storageType": {
+                    "description": "The storage type for this volume.",
+                    "enum": [
+                        "STORAGE_TYPE_UNSPECIFIED",
+                        "SSD",
+                        "HDD"
+                    ],
+                    "enumDescriptions": [
+                        "The storage type for this volume is unknown.",
+                        "The storage type for this volume is SSD.",
+                        "This storage type for this volume is HDD."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "VolumeConfig": {
+            "description": "Configuration parameters for a new volume.",
+            "id": "VolumeConfig",
+            "properties": {
+                "id": {
+                    "description": "A transient unique identifier to identify a volume within an ProvisioningConfig request.",
+                    "type": "string"
+                },
+                "lunRanges": {
+                    "description": "LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.",
+                    "items": {
+                        "$ref": "LunRange"
+                    },
+                    "type": "array"
+                },
+                "machineIds": {
+                    "description": "Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Output only. The name of the volume config.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "nfsExports": {
+                    "description": "NFS exports. Set only when protocol is PROTOCOL_NFS.",
+                    "items": {
+                        "$ref": "NfsExport"
+                    },
+                    "type": "array"
+                },
+                "protocol": {
+                    "description": "Volume protocol.",
+                    "enum": [
+                        "PROTOCOL_UNSPECIFIED",
+                        "PROTOCOL_FC",
+                        "PROTOCOL_NFS"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified value.",
+                        "Fibre channel.",
+                        "Network file system."
+                    ],
+                    "type": "string"
+                },
+                "sizeGb": {
+                    "description": "The requested size of this volume, in GB.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "snapshotsEnabled": {
+                    "description": "Whether snapshots should be enabled.",
+                    "type": "boolean"
+                },
+                "type": {
+                    "description": "The type of this Volume.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "FLASH",
+                        "DISK"
+                    ],
+                    "enumDescriptions": [
+                        "The unspecified type.",
+                        "This Volume is on flash.",
+                        "This Volume is on disk."
+                    ],
+                    "type": "string"
+                },
+                "userNote": {
+                    "description": "User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "VolumeSnapshot": {
+            "description": "Snapshot registered for a given storage volume.",
+            "id": "VolumeSnapshot",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The creation time of the storage volume snapshot.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "The description of the storage volume snapshot.",
+                    "type": "string"
+                },
+                "id": {
+                    "description": "An identifier for the snapshot, generated by the backend.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The name of the storage volume snapshot.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "sizeBytes": {
+                    "description": "The size of the storage volume snapshot, in bytes.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "storageVolume": {
+                    "description": "The storage volume this snapshot belongs to.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Bare Metal Solution API",
+    "version": "v2",
+    "version_module": true
+}
\ No newline at end of file
diff --git a/discovery/googleapis/bigquery__v2.json b/discovery/googleapis/bigquery__v2.json
index 3a9dc55..f9a85ba 100644
--- a/discovery/googleapis/bigquery__v2.json
+++ b/discovery/googleapis/bigquery__v2.json
@@ -1692,7 +1692,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220206",
     "rootUrl": "https://bigquery.googleapis.com/",
     "schemas": {
         "AggregateClassificationMetrics": {
@@ -2798,6 +2798,23 @@
                 "selfLink": {
                     "description": "[Output-only] A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource.",
                     "type": "string"
+                },
+                "tags": {
+                    "description": "[Optional]The tags associated with this dataset. Tag keys are globally unique.",
+                    "items": {
+                        "properties": {
+                            "tagKey": {
+                                "description": "[Required] The namespaced friendly name of the tag key, e.g. \"12345/environment\" where 12345 is org id.",
+                                "type": "string"
+                            },
+                            "tagValue": {
+                                "description": "[Required] Friendly short name of the tag value, e.g. \"production\".",
+                                "type": "string"
+                            }
+                        },
+                        "type": "object"
+                    },
+                    "type": "array"
                 }
             },
             "type": "object"
@@ -2811,13 +2828,15 @@
                 },
                 "target_types": {
                     "items": {
-                        "properties": {
-                            "targetType": {
-                                "description": "[Required] Which resources in the dataset this entry applies to. Currently, only views are supported, but additional target types may be added in the future. Possible values: VIEWS: This entry applies to all views in the dataset.",
-                                "type": "string"
-                            }
-                        },
-                        "type": "object"
+                        "enum": [
+                            "TARGET_TYPE_UNSPECIFIED",
+                            "VIEWS"
+                        ],
+                        "enumDescriptions": [
+                            "Do not use. You must set a target type explicitly.",
+                            "This entry applies to views in the dataset."
+                        ],
+                        "type": "string"
                     },
                     "type": "array"
                 }
@@ -5447,7 +5466,7 @@
             "type": "object"
         },
         "StandardSqlDataType": {
-            "description": "The type of a variable, e.g., a function argument. Examples: INT64: {type_kind=\"INT64\"} ARRAY: {type_kind=\"ARRAY\", array_element_type=\"STRING\"} STRUCT>: {type_kind=\"STRUCT\", struct_type={fields=[ {name=\"x\", type={type_kind=\"STRING\"}}, {name=\"y\", type={type_kind=\"ARRAY\", array_element_type=\"DATE\"}} ]}}",
+            "description": "The data type of a variable such as a function argument. Examples include: * INT64: `{\"typeKind\": \"INT64\"}` * ARRAY: { \"typeKind\": \"ARRAY\", \"arrayElementType\": {\"typeKind\": \"STRING\"} } * STRUCT>: { \"typeKind\": \"STRUCT\", \"structType\": { \"fields\": [ { \"name\": \"x\", \"type\": {\"typeKind: \"STRING\"} }, { \"name\": \"y\", \"type\": { \"typeKind\": \"ARRAY\", \"arrayElementType\": {\"typekind\": \"DATE\"} } } ] } }",
             "id": "StandardSqlDataType",
             "properties": {
                 "arrayElementType": {
diff --git a/discovery/googleapis/bigquerydatatransfer__v1.json b/discovery/googleapis/bigquerydatatransfer__v1.json
index 6b32179..7d5558b 100644
--- a/discovery/googleapis/bigquerydatatransfer__v1.json
+++ b/discovery/googleapis/bigquerydatatransfer__v1.json
@@ -1338,7 +1338,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220127",
     "rootUrl": "https://bigquerydatatransfer.googleapis.com/",
     "schemas": {
         "CheckValidCredsRequest": {
diff --git a/discovery/googleapis/bigqueryreservation__v1.json b/discovery/googleapis/bigqueryreservation__v1.json
index cad0679..0b965b9 100644
--- a/discovery/googleapis/bigqueryreservation__v1.json
+++ b/discovery/googleapis/bigqueryreservation__v1.json
@@ -786,7 +786,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220205",
     "rootUrl": "https://bigqueryreservation.googleapis.com/",
     "schemas": {
         "Assignment": {
diff --git a/discovery/googleapis/bigtableadmin__v2.json b/discovery/googleapis/bigtableadmin__v2.json
index adf3487..7d34c4c 100644
--- a/discovery/googleapis/bigtableadmin__v2.json
+++ b/discovery/googleapis/bigtableadmin__v2.json
@@ -1801,7 +1801,7 @@
             }
         }
     },
-    "revision": "20220103",
+    "revision": "20220205",
     "rootUrl": "https://bigtableadmin.googleapis.com/",
     "schemas": {
         "AppProfile": {
@@ -1901,7 +1901,7 @@
             "id": "AutoscalingTargets",
             "properties": {
                 "cpuUtilizationPercent": {
-                    "description": "The cpu utilization that the Autoscaler should be trying to achieve. This number is on a scale from 0 (no utilization) to 100 (total utilization).",
+                    "description": "The cpu utilization that the Autoscaler should be trying to achieve. This number is on a scale from 0 (no utilization) to 100 (total utilization), and is limited between 10 and 80.",
                     "format": "int32",
                     "type": "integer"
                 }
diff --git a/discovery/googleapis/billingbudgets__v1.json b/discovery/googleapis/billingbudgets__v1.json
index 5cfbc1a..c185c39 100644
--- a/discovery/googleapis/billingbudgets__v1.json
+++ b/discovery/googleapis/billingbudgets__v1.json
@@ -268,7 +268,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220211",
     "rootUrl": "https://billingbudgets.googleapis.com/",
     "schemas": {
         "GoogleCloudBillingBudgetsV1Budget": {
@@ -504,7 +504,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/binaryauthorization__v1.json b/discovery/googleapis/binaryauthorization__v1.json
index c918320..1f653dd 100644
--- a/discovery/googleapis/binaryauthorization__v1.json
+++ b/discovery/googleapis/binaryauthorization__v1.json
@@ -549,7 +549,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220211",
     "rootUrl": "https://binaryauthorization.googleapis.com/",
     "schemas": {
         "AdmissionRule": {
diff --git a/discovery/googleapis/blogger__v3.json b/discovery/googleapis/blogger__v3.json
index 3ee5d8b..3fdbef5 100644
--- a/discovery/googleapis/blogger__v3.json
+++ b/discovery/googleapis/blogger__v3.json
@@ -1676,7 +1676,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220215",
     "rootUrl": "https://blogger.googleapis.com/",
     "schemas": {
         "Blog": {
diff --git a/discovery/googleapis/books__v1.json b/discovery/googleapis/books__v1.json
index 29775fe..54972a9 100644
--- a/discovery/googleapis/books__v1.json
+++ b/discovery/googleapis/books__v1.json
@@ -2670,7 +2670,7 @@
             }
         }
     },
-    "revision": "20220117",
+    "revision": "20220214",
     "rootUrl": "https://books.googleapis.com/",
     "schemas": {
         "Annotation": {
diff --git a/discovery/googleapis/calendar__v3.json b/discovery/googleapis/calendar__v3.json
index 414fea3..f81c53f 100644
--- a/discovery/googleapis/calendar__v3.json
+++ b/discovery/googleapis/calendar__v3.json
@@ -960,7 +960,7 @@
                             "enumDescriptions": [
                                 "Notifications are sent to all guests.",
                                 "Notifications are sent to non-Google Calendar guests only.",
-                                "No notifications are sent. For calendar migration tasks, consider using the Events.import method instead."
+                                "No notifications are sent. Warning: Using the value none can have significant adverse effects, including events not syncing to external calendars or events being lost altogether for some users. For calendar migration tasks, consider using the events.import method instead."
                             ],
                             "location": "query",
                             "type": "string"
@@ -1723,7 +1723,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220203",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Acl": {
diff --git a/discovery/googleapis/certificatemanager__v1.json b/discovery/googleapis/certificatemanager__v1.json
new file mode 100644
index 0000000..6e575a3
--- /dev/null
+++ b/discovery/googleapis/certificatemanager__v1.json
@@ -0,0 +1,1696 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://certificatemanager.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Certificate Manager",
+    "description": "",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/certificate-manager",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "certificatemanager:v1",
+    "kind": "discovery#restDescription",
+    "name": "certificatemanager",
+    "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": {
+        "projects": {
+            "resources": {
+                "locations": {
+                    "methods": {
+                        "get": {
+                            "description": "Gets information about a location.",
+                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+                            "httpMethod": "GET",
+                            "id": "certificatemanager.projects.locations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Resource name for the location.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "Location"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "flatPath": "v1/projects/{projectsId}/locations",
+                            "httpMethod": "GET",
+                            "id": "certificatemanager.projects.locations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like \"displayName=tokyo\", and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The maximum number of results to return. If not set, the service selects a default.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "certificateMaps": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates a new CertificateMap in a given project and location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps",
+                                    "httpMethod": "POST",
+                                    "id": "certificatemanager.projects.locations.certificateMaps.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "certificateMapId": {
+                                            "description": "Required. A user-provided name of the certificate map.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The parent resource of the certificate map. Must be in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/certificateMaps",
+                                    "request": {
+                                        "$ref": "CertificateMap"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a single CertificateMap. A Certificate Map can't be deleted if it contains Certificate Map Entries. Remove all the entries from the map before calling this method.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps/{certificateMapsId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "certificatemanager.projects.locations.certificateMaps.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. A name of the certificate map to delete. Must be in the format `projects/*/locations/*/certificateMaps/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/certificateMaps/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets details of a single CertificateMap.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps/{certificateMapsId}",
+                                    "httpMethod": "GET",
+                                    "id": "certificatemanager.projects.locations.certificateMaps.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. A name of the certificate map to describe. Must be in the format `projects/*/locations/*/certificateMaps/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/certificateMaps/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "CertificateMap"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists CertificateMaps in a given project and location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps",
+                                    "httpMethod": "GET",
+                                    "id": "certificatemanager.projects.locations.certificateMaps.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "Filter expression to restrict the Certificates Maps returned.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "A list of Certificate Map field names used to specify the order of the returned results. The default sorting order is ascending. To specify descending order for a field, add a suffix \" desc\".",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Maximum number of certificate maps to return per call.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "The value returned by the last `ListCertificateMapsResponse`. Indicates that this is a continuation of a prior `ListCertificateMaps` call, and that the system should return the next page of data.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The project and location from which the certificate maps should be listed, specified in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/certificateMaps",
+                                    "response": {
+                                        "$ref": "ListCertificateMapsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates a CertificateMap.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps/{certificateMapsId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "certificatemanager.projects.locations.certificateMaps.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "A user-defined name of the Certificate Map. Certificate Map names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/certificateMaps/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required. The update mask applies to the resource. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "CertificateMap"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "certificateMapEntries": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Creates a new CertificateMapEntry in a given project and location.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps/{certificateMapsId}/certificateMapEntries",
+                                            "httpMethod": "POST",
+                                            "id": "certificatemanager.projects.locations.certificateMaps.certificateMapEntries.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "certificateMapEntryId": {
+                                                    "description": "Required. A user-provided name of the certificate map entry.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The parent resource of the certificate map entry. Must be in the format `projects/*/locations/*/certificateMaps/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/certificateMaps/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/certificateMapEntries",
+                                            "request": {
+                                                "$ref": "CertificateMapEntry"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes a single CertificateMapEntry.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps/{certificateMapsId}/certificateMapEntries/{certificateMapEntriesId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "certificatemanager.projects.locations.certificateMaps.certificateMapEntries.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. A name of the certificate map entry to delete. Must be in the format `projects/*/locations/*/certificateMaps/*/certificateMapEntries/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/certificateMaps/[^/]+/certificateMapEntries/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Gets details of a single CertificateMapEntry.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps/{certificateMapsId}/certificateMapEntries/{certificateMapEntriesId}",
+                                            "httpMethod": "GET",
+                                            "id": "certificatemanager.projects.locations.certificateMaps.certificateMapEntries.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. A name of the certificate map entry to describe. Must be in the format `projects/*/locations/*/certificateMaps/*/certificateMapEntries/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/certificateMaps/[^/]+/certificateMapEntries/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "CertificateMapEntry"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "Lists CertificateMapEntries in a given project and location.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps/{certificateMapsId}/certificateMapEntries",
+                                            "httpMethod": "GET",
+                                            "id": "certificatemanager.projects.locations.certificateMaps.certificateMapEntries.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "filter": {
+                                                    "description": "Filter expression to restrict the returned Certificate Map Entries.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "orderBy": {
+                                                    "description": "A list of Certificate Map Entry field names used to specify the order of the returned results. The default sorting order is ascending. To specify descending order for a field, add a suffix \" desc\".",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Maximum number of certificate map entries to return. The service may return fewer than this value. If unspecified, at most 50 certificate map entries will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "The value returned by the last `ListCertificateMapEntriesResponse`. Indicates that this is a continuation of a prior `ListCertificateMapEntries` call, and that the system should return the next page of data.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The project, location and certificate map from which the certificate map entries should be listed, specified in the format `projects/*/locations/*/certificateMaps/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/certificateMaps/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/certificateMapEntries",
+                                            "response": {
+                                                "$ref": "ListCertificateMapEntriesResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "patch": {
+                                            "description": "Updates a CertificateMapEntry.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateMaps/{certificateMapsId}/certificateMapEntries/{certificateMapEntriesId}",
+                                            "httpMethod": "PATCH",
+                                            "id": "certificatemanager.projects.locations.certificateMaps.certificateMapEntries.patch",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "A user-defined name of the Certificate Map Entry. Certificate Map Entry names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*/certificateMapEntries/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/certificateMaps/[^/]+/certificateMapEntries/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "updateMask": {
+                                                    "description": "Required. The update mask applies to the resource. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "request": {
+                                                "$ref": "CertificateMapEntry"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                }
+                            }
+                        },
+                        "certificates": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates a new Certificate in a given project and location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificates",
+                                    "httpMethod": "POST",
+                                    "id": "certificatemanager.projects.locations.certificates.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "certificateId": {
+                                            "description": "Required. A user-provided name of the certificate.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The parent resource of the certificate. Must be in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/certificates",
+                                    "request": {
+                                        "$ref": "Certificate"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a single Certificate.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificates/{certificatesId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "certificatemanager.projects.locations.certificates.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. A name of the certificate to delete. Must be in the format `projects/*/locations/*/certificates/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/certificates/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets details of a single Certificate.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificates/{certificatesId}",
+                                    "httpMethod": "GET",
+                                    "id": "certificatemanager.projects.locations.certificates.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. A name of the certificate to describe. Must be in the format `projects/*/locations/*/certificates/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/certificates/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Certificate"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists Certificates in a given project and location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificates",
+                                    "httpMethod": "GET",
+                                    "id": "certificatemanager.projects.locations.certificates.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "Filter expression to restrict the Certificates returned.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "A list of Certificate field names used to specify the order of the returned results. The default sorting order is ascending. To specify descending order for a field, add a suffix \" desc\".",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Maximum number of certificates to return per call.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "The value returned by the last `ListCertificatesResponse`. Indicates that this is a continuation of a prior `ListCertificates` call, and that the system should return the next page of data.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The project and location from which the certificate should be listed, specified in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/certificates",
+                                    "response": {
+                                        "$ref": "ListCertificatesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates a Certificate.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificates/{certificatesId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "certificatemanager.projects.locations.certificates.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "A user-defined name of the certificate. Certificate names must be unique globally and match pattern `projects/*/locations/*/certificates/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/certificates/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required. The update mask applies to the resource. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "Certificate"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "dnsAuthorizations": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates a new DnsAuthorization in a given project and location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dnsAuthorizations",
+                                    "httpMethod": "POST",
+                                    "id": "certificatemanager.projects.locations.dnsAuthorizations.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "dnsAuthorizationId": {
+                                            "description": "Required. A user-provided name of the dns authorization.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The parent resource of the dns authorization. Must be in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/dnsAuthorizations",
+                                    "request": {
+                                        "$ref": "DnsAuthorization"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a single DnsAuthorization.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dnsAuthorizations/{dnsAuthorizationsId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "certificatemanager.projects.locations.dnsAuthorizations.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. A name of the dns authorization to delete. Must be in the format `projects/*/locations/*/dnsAuthorizations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/dnsAuthorizations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Gets details of a single DnsAuthorization.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dnsAuthorizations/{dnsAuthorizationsId}",
+                                    "httpMethod": "GET",
+                                    "id": "certificatemanager.projects.locations.dnsAuthorizations.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. A name of the dns authorization to describe. Must be in the format `projects/*/locations/*/dnsAuthorizations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/dnsAuthorizations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "DnsAuthorization"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists DnsAuthorizations in a given project and location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dnsAuthorizations",
+                                    "httpMethod": "GET",
+                                    "id": "certificatemanager.projects.locations.dnsAuthorizations.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "Filter expression to restrict the Dns Authorizations returned.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "A list of Dns Authorization field names used to specify the order of the returned results. The default sorting order is ascending. To specify descending order for a field, add a suffix \" desc\".",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Maximum number of dns authorizations to return per call.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "The value returned by the last `ListDnsAuthorizationsResponse`. Indicates that this is a continuation of a prior `ListDnsAuthorizations` call, and that the system should return the next page of data.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The project and location from which the dns authorizations should be listed, specified in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/dnsAuthorizations",
+                                    "response": {
+                                        "$ref": "ListDnsAuthorizationsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates a DnsAuthorization.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dnsAuthorizations/{dnsAuthorizationsId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "certificatemanager.projects.locations.dnsAuthorizations.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "A user-defined name of the dns authorization. DnsAuthorization names must be unique globally and match pattern `projects/*/locations/*/dnsAuthorizations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/dnsAuthorizations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required. The update mask applies to the resource. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "DnsAuthorization"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "operations": {
+                            "methods": {
+                                "cancel": {
+                                    "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+                                    "httpMethod": "POST",
+                                    "id": "certificatemanager.projects.locations.operations.cancel",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource to be cancelled.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}:cancel",
+                                    "request": {
+                                        "$ref": "CancelOperationRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "certificatemanager.projects.locations.operations.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource to be deleted.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "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.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                                    "httpMethod": "GET",
+                                    "id": "certificatemanager.projects.locations.operations.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding allows API services to override the binding to use different resource name schemes, such as `users/*/operations`. To override the binding, API services can add a binding such as `\"/v1/{name=users/*}/operations\"` to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+                                    "httpMethod": "GET",
+                                    "id": "certificatemanager.projects.locations.operations.list",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "The standard list filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "The name of the operation's parent resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "The standard list page size.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "The standard list page token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}/operations",
+                                    "response": {
+                                        "$ref": "ListOperationsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "20220202",
+    "rootUrl": "https://certificatemanager.googleapis.com/",
+    "schemas": {
+        "AuthorizationAttemptInfo": {
+            "description": "State of the latest attempt to authorize a domain for certificate issuance.",
+            "id": "AuthorizationAttemptInfo",
+            "properties": {
+                "details": {
+                    "description": "Human readable explanation for reaching the state. Provided to help address the configuration issues. Not guaranteed to be stable. For programmatic access use Reason enum.",
+                    "type": "string"
+                },
+                "domain": {
+                    "description": "Domain name of the authorization attempt.",
+                    "type": "string"
+                },
+                "failureReason": {
+                    "description": "Output only. Reason for failure of the authorization attempt for the domain.",
+                    "enum": [
+                        "FAILURE_REASON_UNSPECIFIED",
+                        "CONFIG",
+                        "CAA",
+                        "RATE_LIMITED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "There was a problem with the user's DNS or load balancer configuration for this domain.",
+                        "Certificate issuance forbidden by an explicit CAA record for the domain or a failure to check CAA records for the domain.",
+                        "Reached a CA or internal rate-limit for the domain, e.g. for certificates per top-level private domain."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "state": {
+                    "description": "State of the domain for managed certificate issuance.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "AUTHORIZING",
+                        "AUTHORIZED",
+                        "FAILED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Certificate provisioning for this domain is under way. GCP will attempt to authorize the domain.",
+                        "A managed certificate can be provisioned, no issues for this domain.",
+                        "Attempt to authorize the domain failed. This prevents the Managed Certificate from being issued. See `failure_reason` and `details` fields for more information."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CancelOperationRequest": {
+            "description": "The request message for Operations.CancelOperation.",
+            "id": "CancelOperationRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "Certificate": {
+            "description": "Defines TLS certificate.",
+            "id": "Certificate",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The creation timestamp of a Certificate.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "One or more paragraphs of text description of a certificate.",
+                    "type": "string"
+                },
+                "expireTime": {
+                    "description": "Output only. The expiry timestamp of a Certificate.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Set of labels associated with a Certificate.",
+                    "type": "object"
+                },
+                "managed": {
+                    "$ref": "ManagedCertificate",
+                    "description": "If set, contains configuration and state of a managed certificate."
+                },
+                "name": {
+                    "description": "A user-defined name of the certificate. Certificate names must be unique globally and match pattern `projects/*/locations/*/certificates/*`.",
+                    "type": "string"
+                },
+                "pemCertificate": {
+                    "description": "Output only. The PEM-encoded certificate chain.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "sanDnsnames": {
+                    "description": "Output only. The list of Subject Alternative Names of dnsName type defined in the certificate (see RFC 5280 4.2.1.6)",
+                    "items": {
+                        "type": "string"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
+                "scope": {
+                    "description": "Immutable. The scope of the certificate.",
+                    "enum": [
+                        "DEFAULT",
+                        "EDGE_CACHE"
+                    ],
+                    "enumDescriptions": [
+                        "Certificates with default scope are served from core Google data centers. If unsure, choose this option.",
+                        "Certificates with scope EDGE_CACHE are special-purposed certificates, served from non-core Google data centers."
+                    ],
+                    "type": "string"
+                },
+                "selfManaged": {
+                    "$ref": "SelfManagedCertificate",
+                    "description": "If set, defines data of a self-managed certificate."
+                },
+                "updateTime": {
+                    "description": "Output only. The last update timestamp of a Certificate.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CertificateMap": {
+            "description": "Defines a collection of certificate configurations.",
+            "id": "CertificateMap",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The creation timestamp of a Certificate Map.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "One or more paragraphs of text description of a certificate map.",
+                    "type": "string"
+                },
+                "gclbTargets": {
+                    "description": "Output only. A list of GCLB targets which use this Certificate Map.",
+                    "items": {
+                        "$ref": "GclbTarget"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Set of labels associated with a Certificate Map.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "A user-defined name of the Certificate Map. Certificate Map names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*`.",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The update timestamp of a Certificate Map.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CertificateMapEntry": {
+            "description": "Defines a certificate map entry.",
+            "id": "CertificateMapEntry",
+            "properties": {
+                "certificates": {
+                    "description": "A set of Certificates defines for the given `hostname`. There can be defined up to fifteen certificates in each Certificate Map Entry. Each certificate must match pattern `projects/*/locations/*/certificates/*`.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "createTime": {
+                    "description": "Output only. The creation timestamp of a Certificate Map Entry.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "One or more paragraphs of text description of a certificate map entry.",
+                    "type": "string"
+                },
+                "hostname": {
+                    "description": "A Hostname (FQDN, e.g. example.com) or a wildcard hostname expression (*.example.com) for a set of hostnames with common suffix. Used as Server Name Indication (SNI) for selecting a proper certificate.",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Set of labels associated with a Certificate Map Entry.",
+                    "type": "object"
+                },
+                "matcher": {
+                    "description": "A predefined matcher for particular cases, other than SNI selection.",
+                    "enum": [
+                        "MATCHER_UNSPECIFIED",
+                        "PRIMARY"
+                    ],
+                    "enumDescriptions": [
+                        "A matcher has't been recognized.",
+                        "A primary certificate that is served when SNI wasn't specified in the request or SNI couldn't be found in the map."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "A user-defined name of the Certificate Map Entry. Certificate Map Entry names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*/certificateMapEntries/*`.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Output only. A serving state of this Certificate Map Entry.",
+                    "enum": [
+                        "SERVING_STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "PENDING"
+                    ],
+                    "enumDescriptions": [
+                        "The status is undefined.",
+                        "The configuration is serving.",
+                        "Update is in progress. Some frontends may serve this configuration."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The update timestamp of a Certificate Map Entry.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DnsAuthorization": {
+            "description": "A DnsAuthorization resource describes a way to perform domain authorization for certificate issuance.",
+            "id": "DnsAuthorization",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The creation timestamp of a DnsAuthorization.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "One or more paragraphs of text description of a DnsAuthorization.",
+                    "type": "string"
+                },
+                "dnsResourceRecord": {
+                    "$ref": "DnsResourceRecord",
+                    "description": "Output only. DNS Resource Record that needs to be added to DNS configuration.",
+                    "readOnly": true
+                },
+                "domain": {
+                    "description": "Required. Immutable. A domain which is being authorized. A DnsAuthorization resource covers a single domain and its wildcard, e.g. authorization for \"example.com\" can be used to issue certificates for \"example.com\" and \"*.example.com\".",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Set of labels associated with a DnsAuthorization.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "A user-defined name of the dns authorization. DnsAuthorization names must be unique globally and match pattern `projects/*/locations/*/dnsAuthorizations/*`.",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The last update timestamp of a DnsAuthorization.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DnsResourceRecord": {
+            "description": "The structure describing the DNS Resource Record that needs to be added to DNS configuration for the authorization to be usable by certificate.",
+            "id": "DnsResourceRecord",
+            "properties": {
+                "data": {
+                    "description": "Output only. Data of the DNS Resource Record.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. Fully qualified name of the DNS Resource Record. e.g. \"_acme-challenge.example.com.\"",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Output only. Type of the DNS Resource Record. Currently always set to \"CNAME\".",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Empty": {
+            "description": "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 `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "GclbTarget": {
+            "description": "Describes a Target Proxy which uses this Certificate Map.",
+            "id": "GclbTarget",
+            "properties": {
+                "ipConfigs": {
+                    "description": "IP configurations for this Target Proxy where the Certificate Map is serving.",
+                    "items": {
+                        "$ref": "IpConfig"
+                    },
+                    "type": "array"
+                },
+                "targetHttpsProxy": {
+                    "description": "A name must be in the format `projects/*/locations/*/targetHttpsProxies/*`.",
+                    "type": "string"
+                },
+                "targetSslProxy": {
+                    "description": "A name must be in the format `projects/*/locations/*/targetSslProxies/*`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "IpConfig": {
+            "description": "Defines IP configuration where this Certificate Map is serving.",
+            "id": "IpConfig",
+            "properties": {
+                "ipAddress": {
+                    "description": "An external IP address.",
+                    "type": "string"
+                },
+                "ports": {
+                    "description": "Ports.",
+                    "items": {
+                        "format": "uint32",
+                        "type": "integer"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListCertificateMapEntriesResponse": {
+            "description": "Response for the `ListCertificateMapEntries` method.",
+            "id": "ListCertificateMapEntriesResponse",
+            "properties": {
+                "certificateMapEntries": {
+                    "description": "A list of certificate map entries for the parent resource.",
+                    "items": {
+                        "$ref": "CertificateMapEntry"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListCertificateMapsResponse": {
+            "description": "Response for the `ListCertificateMaps` method.",
+            "id": "ListCertificateMapsResponse",
+            "properties": {
+                "certificateMaps": {
+                    "description": "A list of certificate maps for the parent resource.",
+                    "items": {
+                        "$ref": "CertificateMap"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListCertificatesResponse": {
+            "description": "Response for the `ListCertificates` method.",
+            "id": "ListCertificatesResponse",
+            "properties": {
+                "certificates": {
+                    "description": "A list of certificates for the parent resource.",
+                    "items": {
+                        "$ref": "Certificate"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "A list of locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListDnsAuthorizationsResponse": {
+            "description": "Response for the `ListDnsAuthorizations` method.",
+            "id": "ListDnsAuthorizationsResponse",
+            "properties": {
+                "dnsAuthorizations": {
+                    "description": "A list of dns authorizations for the parent resource.",
+                    "items": {
+                        "$ref": "DnsAuthorization"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListLocationsResponse": {
+            "description": "The response message for Locations.ListLocations.",
+            "id": "ListLocationsResponse",
+            "properties": {
+                "locations": {
+                    "description": "A list of locations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Location"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Location": {
+            "description": "A resource that represents Google Cloud Platform location.",
+            "id": "Location",
+            "properties": {
+                "displayName": {
+                    "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+                    "type": "object"
+                },
+                "locationId": {
+                    "description": "The canonical id for this location. For example: `\"us-east1\"`.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata. For example the available capacity at the given location.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ManagedCertificate": {
+            "description": "Configuration and state of a Managed Certificate. Certificate Manager provisions and renews Managed Certificates automatically, for as long as it's authorized to do so.",
+            "id": "ManagedCertificate",
+            "properties": {
+                "authorizationAttemptInfo": {
+                    "description": "Output only. Detailed state of the latest authorization attempt for each domain specified for managed certificate resource.",
+                    "items": {
+                        "$ref": "AuthorizationAttemptInfo"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
+                "dnsAuthorizations": {
+                    "description": "Immutable. Authorizations that will be used for performing domain authorization.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "domains": {
+                    "description": "Immutable. The domains for which a managed SSL certificate will be generated. Wildcard domains are only supported with DNS challenge resolution.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "provisioningIssue": {
+                    "$ref": "ProvisioningIssue",
+                    "description": "Information about issues with provisioning a Managed Certificate."
+                },
+                "state": {
+                    "description": "Output only. State of the managed certificate resource.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "PROVISIONING",
+                        "FAILED",
+                        "ACTIVE"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Certificate Manager attempts to provision or renew the certificate. If the process takes longer than expected, consult the `provisioning_issue` field.",
+                        "Multiple certificate provisioning attempts failed and Certificate Manager gave up. To try again, delete and create a new managed Certificate resource. For details see the `provisioning_issue` field.",
+                        "The certificate management is working, and a certificate has been provisioned."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a network API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "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.",
+                    "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 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.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "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}`.",
+                    "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 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`.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadata": {
+            "description": "Represents the metadata of the long-running operation. Output only.",
+            "id": "OperationMetadata",
+            "properties": {
+                "apiVersion": {
+                    "description": "API version used to start the operation.",
+                    "type": "string"
+                },
+                "createTime": {
+                    "description": "The time the operation was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "The time the operation finished running.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "requestedCancellation": {
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+                    "type": "boolean"
+                },
+                "statusMessage": {
+                    "description": "Human-readable status of the operation, if any.",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Server-defined resource path for the target of the operation.",
+                    "type": "string"
+                },
+                "verb": {
+                    "description": "Name of the verb executed by the operation.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ProvisioningIssue": {
+            "description": "Information about issues with provisioning a Managed Certificate.",
+            "id": "ProvisioningIssue",
+            "properties": {
+                "details": {
+                    "description": "Human readable explanation about the issue. Provided to help address the configuration issues. Not guaranteed to be stable. For programmatic access use Reason enum.",
+                    "type": "string"
+                },
+                "reason": {
+                    "description": "Reason for provisioning failures.",
+                    "enum": [
+                        "REASON_UNSPECIFIED",
+                        "AUTHORIZATION_ISSUE",
+                        "RATE_LIMITED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Certificate provisioning failed due to an issue with one or more of the domains on the certificate. For details of which domains failed, consult the `authorization_attempt_info` field.",
+                        "Exceeded Certificate Authority quotas or internal rate limits of the system. Provisioning may take longer to complete."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SelfManagedCertificate": {
+            "description": "Certificate data for a SelfManaged Certificate. SelfManaged Certificates are uploaded by the user. Updating such certificates before they expire remains the user's responsibility.",
+            "id": "SelfManagedCertificate",
+            "properties": {
+                "pemCertificate": {
+                    "description": "Input only. The PEM-encoded certificate chain. Leaf certificate comes first, followed by intermediate ones if any.",
+                    "type": "string"
+                },
+                "pemPrivateKey": {
+                    "description": "Input only. The PEM-encoded private key of the leaf certificate.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). 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).",
+            "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 message 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 user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Certificate Manager API",
+    "version": "v1",
+    "version_module": true
+}
\ No newline at end of file
diff --git a/discovery/googleapis/chat__v1.json b/discovery/googleapis/chat__v1.json
index b99c2a9..6372bcf 100644
--- a/discovery/googleapis/chat__v1.json
+++ b/discovery/googleapis/chat__v1.json
@@ -593,7 +593,7 @@
                                     "type": "string"
                                 },
                                 "updateMask": {
-                                    "description": "Required. The field paths to be updated, comma separated if there are multiple. Currently supported field paths: * text * cards * gsuite_message_integration_render_data * attachment",
+                                    "description": "Required. The field paths to be updated, comma separated if there are multiple. Currently supported field paths: * text * cards * attachment",
                                     "format": "google-fieldmask",
                                     "location": "query",
                                     "type": "string"
@@ -640,7 +640,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220209",
     "rootUrl": "https://chat.googleapis.com/",
     "schemas": {
         "ActionParameter": {
@@ -2364,13 +2364,13 @@
                 },
                 "member": {
                     "$ref": "User",
-                    "description": "A user in Google Chat. Represents a person in the People API. Formatted as `users/person_id` where `person_id` is available from the [People API](https://developers.google.com/people/api/rest/v1/people)."
+                    "description": "A user in Google Chat. Represents a [person](https://developers.google.com/people/api/rest/v1/people) in the People API. Format: `users/{person}`"
                 },
                 "name": {
                     "type": "string"
                 },
                 "state": {
-                    "description": "State of the membership. Required for `CreateMembership`. Read-only for other usage.",
+                    "description": "Output only. State of the membership.",
                     "enum": [
                         "MEMBERSHIP_STATE_UNSPECIFIED",
                         "JOINED",
@@ -2383,6 +2383,7 @@
                         "The user has been invited, is able to join the space, but currently has not joined.",
                         "The user is not a member of the space, has not been invited and is not able to join the space."
                     ],
+                    "readOnly": true,
                     "type": "string"
                 }
             },
diff --git a/discovery/googleapis/chromemanagement__v1.json b/discovery/googleapis/chromemanagement__v1.json
index 666c05a..06b64ec 100644
--- a/discovery/googleapis/chromemanagement__v1.json
+++ b/discovery/googleapis/chromemanagement__v1.json
@@ -447,7 +447,7 @@
                                             "type": "string"
                                         },
                                         "pageSize": {
-                                            "description": "Maximum number of results to return. Maximum and default are 100.",
+                                            "description": "Maximum number of results to return. Default value is 100. Maximum value is 200.",
                                             "format": "int32",
                                             "location": "query",
                                             "type": "integer"
@@ -486,7 +486,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://chromemanagement.googleapis.com/",
     "schemas": {
         "GoogleChromeManagementV1AndroidAppInfo": {
@@ -1819,7 +1819,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/chromepolicy__v1.json b/discovery/googleapis/chromepolicy__v1.json
index 0e4fcbb..8a9583c 100644
--- a/discovery/googleapis/chromepolicy__v1.json
+++ b/discovery/googleapis/chromepolicy__v1.json
@@ -322,7 +322,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220215",
     "rootUrl": "https://chromepolicy.googleapis.com/",
     "schemas": {
         "ChromeCrosDpanelAutosettingsProtoPolicyApiLifecycle": {
@@ -726,6 +726,11 @@
             "description": "The resolved value of a policy for a given target.",
             "id": "GoogleChromePolicyV1ResolvedPolicy",
             "properties": {
+                "addedSourceKey": {
+                    "$ref": "GoogleChromePolicyV1PolicyTargetKey",
+                    "description": "Output only. The added source key establishes at which level an entity was explicitly added for management. This is useful for certain type of policies that are only applied if they are explicitly added for management. For example: apps and networks. An entity can only be deleted from management in an Organizational Unit that it was explicitly added to. If this is not present it means that the policy is managed without the need to explicitly add an entity, for example: standard user or device policies.",
+                    "readOnly": true
+                },
                 "sourceKey": {
                     "$ref": "GoogleChromePolicyV1PolicyTargetKey",
                     "description": "Output only. The source resource from which this policy value is obtained. May be the same as `targetKey` if the policy is directly modified on the target, otherwise it would be another resource from which the policy gets its value (if applicable). If not present, the source is the default value for the customer.",
@@ -773,7 +778,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/chromeuxreport__v1.json b/discovery/googleapis/chromeuxreport__v1.json
index 7d34a71..8d39439 100644
--- a/discovery/googleapis/chromeuxreport__v1.json
+++ b/discovery/googleapis/chromeuxreport__v1.json
@@ -114,7 +114,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220215",
     "rootUrl": "https://chromeuxreport.googleapis.com/",
     "schemas": {
         "Bin": {
diff --git a/discovery/googleapis/classroom__v1.json b/discovery/googleapis/classroom__v1.json
index ad046bb..d267a9a 100644
--- a/discovery/googleapis/classroom__v1.json
+++ b/discovery/googleapis/classroom__v1.json
@@ -168,7 +168,7 @@
         "courses": {
             "methods": {
                 "create": {
-                    "description": "Creates a course. The user specified in `ownerId` is the owner of the created course and added as a teacher. This method returns the following error codes: * `PERMISSION_DENIED` if the requesting user is not permitted to create courses or for access errors. * `NOT_FOUND` if the primary teacher is not a valid user. * `FAILED_PRECONDITION` if the course owner's account is disabled or for the following request errors: * UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if an alias was specified in the `id` and already exists.",
+                    "description": "Creates a course. The user specified in `ownerId` is the owner of the created course and added as a teacher. A non-admin requesting user can only create a course with themselves as the owner. Domain admins can create courses owned by any user within their domain. This method returns the following error codes: * `PERMISSION_DENIED` if the requesting user is not permitted to create courses or for access errors. * `NOT_FOUND` if the primary teacher is not a valid user. * `FAILED_PRECONDITION` if the course owner's account is disabled or for the following request errors: * UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if an alias was specified in the `id` and already exists.",
                     "flatPath": "v1/courses",
                     "httpMethod": "POST",
                     "id": "classroom.courses.create",
@@ -1469,7 +1469,7 @@
                 "students": {
                     "methods": {
                         "create": {
-                            "description": "Adds a user as a student of a course. This method returns the following error codes: * `PERMISSION_DENIED` if the requesting user is not permitted to create students in this course or for access errors. * `NOT_FOUND` if the requested course ID does not exist. * `FAILED_PRECONDITION` if the requested user's account is disabled, for the following request errors: * CourseMemberLimitReached * CourseNotModifiable * UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if the user is already a student or teacher in the course.",
+                            "description": "Adds a user as a student of a course. Domain administrators are permitted to [directly add](https://developers.google.com/classroom/guides/manage-users) users within their domain as students to courses within their domain. Students are permitted to add themselves to a course using an enrollment code. This method returns the following error codes: * `PERMISSION_DENIED` if the requesting user is not permitted to create students in this course or for access errors. * `NOT_FOUND` if the requested course ID does not exist. * `FAILED_PRECONDITION` if the requested user's account is disabled, for the following request errors: * CourseMemberLimitReached * CourseNotModifiable * UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if the user is already a student or teacher in the course.",
                             "flatPath": "v1/courses/{courseId}/students",
                             "httpMethod": "POST",
                             "id": "classroom.courses.students.create",
@@ -1610,7 +1610,7 @@
                 "teachers": {
                     "methods": {
                         "create": {
-                            "description": "Creates a teacher of a course. This method returns the following error codes: * `PERMISSION_DENIED` if the requesting user is not permitted to create teachers in this course or for access errors. * `NOT_FOUND` if the requested course ID does not exist. * `FAILED_PRECONDITION` if the requested user's account is disabled, for the following request errors: * CourseMemberLimitReached * CourseNotModifiable * CourseTeacherLimitReached * UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if the user is already a teacher or student in the course.",
+                            "description": "Creates a teacher of a course. Domain administrators are permitted to [directly add](https://developers.google.com/classroom/guides/manage-users) users within their domain as teachers to courses within their domain. Non-admin users should send an Invitation instead. This method returns the following error codes: * `PERMISSION_DENIED` if the requesting user is not permitted to create teachers in this course or for access errors. * `NOT_FOUND` if the requested course ID does not exist. * `FAILED_PRECONDITION` if the requested user's account is disabled, for the following request errors: * CourseMemberLimitReached * CourseNotModifiable * CourseTeacherLimitReached * UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if the user is already a teacher or student in the course.",
                             "flatPath": "v1/courses/{courseId}/teachers",
                             "httpMethod": "POST",
                             "id": "classroom.courses.teachers.create",
@@ -2398,7 +2398,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220210",
     "rootUrl": "https://classroom.googleapis.com/",
     "schemas": {
         "Announcement": {
@@ -2603,6 +2603,10 @@
                     "description": "Enrollment code to use when joining this course. Specifying this field in a course update mask results in an error. Read-only.",
                     "type": "string"
                 },
+                "gradebookSettings": {
+                    "$ref": "GradebookSettings",
+                    "description": "The gradebook settings that specify how a student's overall grade for the course will be calculated and who it will be displayed to. Read-only"
+                },
                 "guardiansEnabled": {
                     "description": "Whether or not guardian notifications are enabled for this course. Read-only.",
                     "type": "boolean"
@@ -2761,6 +2765,10 @@
                     "$ref": "TimeOfDay",
                     "description": "Optional time of day, in UTC, that submissions for this course work are due. This must be specified if `due_date` is specified."
                 },
+                "gradeCategory": {
+                    "$ref": "GradeCategory",
+                    "description": "The category that this coursework's grade contributes to. Present only when a category has been chosen for the coursework. May be used in calculating the overall grade. Read-only."
+                },
                 "id": {
                     "description": "Classroom-assigned identifier of this course work, unique per course. Read-only.",
                     "type": "string"
@@ -2955,7 +2963,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -3097,6 +3105,31 @@
             },
             "type": "object"
         },
+        "GradeCategory": {
+            "description": "Details for a grade category in a course. Coursework may have zero or one grade category, and the category may be used in computing the overall grade. See the [help center article](https://support.google.com/edu/classroom/answer/9184995) for details.",
+            "id": "GradeCategory",
+            "properties": {
+                "defaultGradeDenominator": {
+                    "description": "Default value of denominator. Only applicable when grade calculation type is TOTAL_POINTS.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "id": {
+                    "description": "ID of the grade category.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the grade category.",
+                    "type": "string"
+                },
+                "weight": {
+                    "description": "The weight of the category average as part of overall average. A weight of 12.34% is represented as 123400 (100% is 1,000,000). The last two digits should always be zero since we use two decimal precision. Only applicable when grade calculation type is WEIGHTED_CATEGORIES.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "GradeHistory": {
             "description": "The history of each grade on this submission.",
             "id": "GradeHistory",
@@ -3139,6 +3172,50 @@
             },
             "type": "object"
         },
+        "GradebookSettings": {
+            "description": "The gradebook settings for a course. See the [help center article](https://support.google.com/edu/classroom/answer/9184995) for details.",
+            "id": "GradebookSettings",
+            "properties": {
+                "calculationType": {
+                    "description": "Indicates how the overall grade is calculated.",
+                    "enum": [
+                        "CALCULATION_TYPE_UNSPECIFIED",
+                        "TOTAL_POINTS",
+                        "WEIGHTED_CATEGORIES"
+                    ],
+                    "enumDescriptions": [
+                        "No method specified. This is never returned.",
+                        "Overall grade is the sum of grades divided by the sum of total points regardless of category.",
+                        "Overall grade is the weighted average by category."
+                    ],
+                    "type": "string"
+                },
+                "displaySetting": {
+                    "description": "Indicates who can see the overall grade..",
+                    "enum": [
+                        "DISPLAY_SETTING_UNSPECIFIED",
+                        "SHOW_OVERALL_GRADE",
+                        "HIDE_OVERALL_GRADE",
+                        "SHOW_TEACHERS_ONLY"
+                    ],
+                    "enumDescriptions": [
+                        "No setting specified. This is never returned.",
+                        "Shows overall grade in the gradebook and student profile to both teachers and students.",
+                        "Does not show overall grade in the gradebook or student profile.",
+                        "Shows the overall grade to teachers in the gradebook and student profile. Hides from students in their student profile."
+                    ],
+                    "type": "string"
+                },
+                "gradeCategories": {
+                    "description": "Grade categories that are available for coursework in the course.",
+                    "items": {
+                        "$ref": "GradeCategory"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "Guardian": {
             "description": "Association between a student and a guardian of that student. The guardian may receive information about the student's course work.",
             "id": "Guardian",
diff --git a/discovery/googleapis/cloudasset__v1.json b/discovery/googleapis/cloudasset__v1.json
index 379583d..75081f2 100644
--- a/discovery/googleapis/cloudasset__v1.json
+++ b/discovery/googleapis/cloudasset__v1.json
@@ -155,7 +155,7 @@
                             "type": "string"
                         },
                         "parent": {
-                            "description": "Required. Name of the organization or project the assets belong to. Format: \"organizations/[organization-number]\" (such as \"organizations/123\"), \"projects/[project-id]\" (such as \"projects/my-project-id\"), \"projects/[project-number]\" (such as \"projects/12345\"), or \"folders/[folder-number]\" (such as \"folders/12345\").",
+                            "description": "Required. Name of the organization, folder, or project the assets belong to. Format: \"organizations/[organization-number]\" (such as \"organizations/123\"), \"projects/[project-id]\" (such as \"projects/my-project-id\"), \"projects/[project-number]\" (such as \"projects/12345\"), or \"folders/[folder-number]\" (such as \"folders/12345\").",
                             "location": "path",
                             "pattern": "^[^/]+/[^/]+$",
                             "required": true,
@@ -892,7 +892,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220204",
     "rootUrl": "https://cloudasset.googleapis.com/",
     "schemas": {
         "AccessSelector": {
@@ -1232,7 +1232,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -1353,14 +1353,14 @@
             "id": "Feed",
             "properties": {
                 "assetNames": {
-                    "description": "A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. See [Resource Names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more info.",
+                    "description": "A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format).",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
                 },
                 "assetTypes": {
-                    "description": "A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `\"compute.googleapis.com/Disk\"` See [this topic](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for a list of all supported asset types.",
+                    "description": "A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `\"compute.googleapis.com/Disk\"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types).",
                     "items": {
                         "type": "string"
                     },
diff --git a/discovery/googleapis/cloudbilling__v1.json b/discovery/googleapis/cloudbilling__v1.json
index ebab251..5aee02c 100644
--- a/discovery/googleapis/cloudbilling__v1.json
+++ b/discovery/googleapis/cloudbilling__v1.json
@@ -519,7 +519,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://cloudbilling.googleapis.com/",
     "schemas": {
         "AggregationInfo": {
diff --git a/discovery/googleapis/cloudbuild__v1.json b/discovery/googleapis/cloudbuild__v1.json
index b44da40..b45234d 100644
--- a/discovery/googleapis/cloudbuild__v1.json
+++ b/discovery/googleapis/cloudbuild__v1.json
@@ -2037,7 +2037,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220131",
     "rootUrl": "https://cloudbuild.googleapis.com/",
     "schemas": {
         "AddBitbucketServerConnectedRepositoryRequest": {
diff --git a/discovery/googleapis/cloudchannel__v1.json b/discovery/googleapis/cloudchannel__v1.json
index 37d435e..bc6d33f 100644
--- a/discovery/googleapis/cloudchannel__v1.json
+++ b/discovery/googleapis/cloudchannel__v1.json
@@ -551,6 +551,11 @@
                                         "parent"
                                     ],
                                     "parameters": {
+                                        "filter": {
+                                            "description": "Optional. Filters applied to the [CloudChannelService.ListCustomers] results. See https://cloud.google.com/channel/docs/concepts/google-cloud/filter-customers for more information.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
                                         "pageSize": {
                                             "description": "Optional. The maximum number of customers to return. The service may return fewer than this value. If unspecified, returns at most 10 customers. The maximum value is 50.",
                                             "format": "int32",
@@ -733,6 +738,11 @@
                                 "parent"
                             ],
                             "parameters": {
+                                "filter": {
+                                    "description": "Optional. Filters applied to the [CloudChannelService.ListCustomers] results. See https://cloud.google.com/channel/docs/concepts/google-cloud/filter-customers for more information.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
                                 "pageSize": {
                                     "description": "Optional. The maximum number of customers to return. The service may return fewer than this value. If unspecified, returns at most 10 customers. The maximum value is 50.",
                                     "format": "int32",
@@ -1587,7 +1597,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://cloudchannel.googleapis.com/",
     "schemas": {
         "GoogleCloudChannelV1ActivateEntitlementRequest": {
@@ -3030,7 +3040,7 @@
                     "type": "string"
                 },
                 "provisioningId": {
-                    "description": "Output only. Provisioning ID of the entitlement. For Google Workspace, this would be the underlying Subscription ID.",
+                    "description": "Output only. Provisioning ID of the entitlement. For Google Workspace, this is the underlying Subscription ID. For Google Cloud Platform, this is the Billing Account ID of the billing subaccount.\"",
                     "readOnly": true,
                     "type": "string"
                 },
@@ -3711,7 +3721,7 @@
                     "type": "string"
                 },
                 "provisioningId": {
-                    "description": "Output only. Provisioning ID of the entitlement. For Google Workspace, this would be the underlying Subscription ID.",
+                    "description": "Output only. Provisioning ID of the entitlement. For Google Workspace, this is the underlying Subscription ID. For Google Cloud Platform, this is the Billing Account ID of the billing subaccount.\"",
                     "readOnly": true,
                     "type": "string"
                 },
diff --git a/discovery/googleapis/clouddebugger__v2.json b/discovery/googleapis/clouddebugger__v2.json
index caf6617..58d5120 100644
--- a/discovery/googleapis/clouddebugger__v2.json
+++ b/discovery/googleapis/clouddebugger__v2.json
@@ -446,7 +446,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220204",
     "rootUrl": "https://clouddebugger.googleapis.com/",
     "schemas": {
         "AliasContext": {
diff --git a/discovery/googleapis/clouddeploy__v1.json b/discovery/googleapis/clouddeploy__v1.json
index f879f35..0440847 100644
--- a/discovery/googleapis/clouddeploy__v1.json
+++ b/discovery/googleapis/clouddeploy__v1.json
@@ -1102,7 +1102,7 @@
                                             "type": "boolean"
                                         },
                                         "name": {
-                                            "description": "Optional. Name of the `Target`. Format is projects/{project}/locations/{location}/ deliveryPipelines/{deliveryPipeline}/targets/a-z{0,62}.",
+                                            "description": "Optional. Name of the `Target`. Format is projects/{project}/locations/{location}/targets/a-z{0,62}.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/targets/[^/]+$",
                                             "required": true,
@@ -1199,9 +1199,20 @@
             }
         }
     },
-    "revision": "20220108",
+    "revision": "20220202",
     "rootUrl": "https://clouddeploy.googleapis.com/",
     "schemas": {
+        "AnthosCluster": {
+            "description": "Information specifying an Anthos Cluster.",
+            "id": "AnthosCluster",
+            "properties": {
+                "membership": {
+                    "description": "Membership of the GKE Hub-registered cluster to which to apply the Skaffold configuration. Format is `projects/{project}/locations/{location}/memberships/{membership_name}`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ApproveRolloutRequest": {
             "description": "The request object used by `ApproveRollout`.",
             "id": "ApproveRolloutRequest",
@@ -1335,7 +1346,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -1440,6 +1451,10 @@
             "description": "Configuration of the environment to use when calling Skaffold.",
             "id": "ExecutionConfig",
             "properties": {
+                "artifactStorage": {
+                    "description": "Optional. Cloud Storage location in which to store execution outputs. This can either be a bucket (\"gs://my-bucket\") or a path within a bucket (\"gs://my-bucket/my-dir\"). If unspecified, a default bucket located in the same region will be used.",
+                    "type": "string"
+                },
                 "defaultPool": {
                     "$ref": "DefaultPool",
                     "description": "Optional. Use default Cloud Build pool."
@@ -1448,6 +1463,10 @@
                     "$ref": "PrivatePool",
                     "description": "Optional. Use private Cloud Build pool."
                 },
+                "serviceAccount": {
+                    "description": "Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) is used.",
+                    "type": "string"
+                },
                 "usages": {
                     "description": "Required. Usages when this configuration should be applied.",
                     "items": {
@@ -1464,6 +1483,10 @@
                         "type": "string"
                     },
                     "type": "array"
+                },
+                "workerPool": {
+                    "description": "Optional. The resource name of the `WorkerPool`, with the format `projects/{project}/locations/{location}/workerPools/{worker_pool}`. If this optional field is unspecified, the default Cloud Build pool will be used.",
+                    "type": "string"
                 }
             },
             "type": "object"
@@ -1498,6 +1521,10 @@
                 "cluster": {
                     "description": "Information specifying a GKE Cluster. Format is `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}.",
                     "type": "string"
+                },
+                "internalIp": {
+                    "description": "Optional. If true, `cluster` is accessed using the private IP address of the control plane endpoint. Otherwise, the default IP address of the control plane endpoint is used. The default IP address is the private IP address for clusters with private control-plane endpoints and the public IP address otherwise. Only specify this option when `cluster` is a [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept).",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -1938,7 +1965,7 @@
                     "type": "object"
                 },
                 "targetSnapshots": {
-                    "description": "Output only. Snapshot of the parent pipeline's targets taken at release creation time.",
+                    "description": "Output only. Snapshot of the targets taken at release creation time.",
                     "items": {
                         "$ref": "Target"
                     },
@@ -2155,7 +2182,7 @@
                     "type": "array"
                 },
                 "targetId": {
-                    "description": "The target_id to which this stage points. This field refers exclusively to the last segment of a target name. For example, this field would just be `my-target` (rather than `projects/project/deliveryPipelines/pipeline/targets/my-target`). The parent `DeliveryPipeline` of the `Target` is inferred to be the parent `DeliveryPipeline` of the `Release` in which this `Stage` lives.",
+                    "description": "The target_id to which this stage points. This field refers exclusively to the last segment of a target name. For example, this field would just be `my-target` (rather than `projects/project/locations/location/targets/my-target`). The location of the `Target` is inferred to be the same as the location of the `DeliveryPipeline` that contains this `Stage`.",
                     "type": "string"
                 }
             },
@@ -2199,6 +2226,10 @@
                     "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Google Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations.",
                     "type": "object"
                 },
+                "anthosCluster": {
+                    "$ref": "AnthosCluster",
+                    "description": "Information specifying an Anthos Cluster."
+                },
                 "createTime": {
                     "description": "Output only. Time at which the `Target` was created.",
                     "format": "google-datetime",
@@ -2232,7 +2263,7 @@
                     "type": "object"
                 },
                 "name": {
-                    "description": "Optional. Name of the `Target`. Format is projects/{project}/locations/{location}/ deliveryPipelines/{deliveryPipeline}/targets/a-z{0,62}.",
+                    "description": "Optional. Name of the `Target`. Format is projects/{project}/locations/{location}/targets/a-z{0,62}.",
                     "type": "string"
                 },
                 "requireApproval": {
diff --git a/discovery/googleapis/cloudfunctions__v1.json b/discovery/googleapis/cloudfunctions__v1.json
index 1d1bcbc..b1cc6d6 100644
--- a/discovery/googleapis/cloudfunctions__v1.json
+++ b/discovery/googleapis/cloudfunctions__v1.json
@@ -544,7 +544,7 @@
             }
         }
     },
-    "revision": "20220113",
+    "revision": "20220203",
     "rootUrl": "https://cloudfunctions.googleapis.com/",
     "schemas": {
         "AuditConfig": {
@@ -681,6 +681,20 @@
                     "description": "User-provided description of a function.",
                     "type": "string"
                 },
+                "dockerRegistry": {
+                    "description": "Docker Registry to use for this deployment. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments.",
+                    "enum": [
+                        "DOCKER_REGISTRY_UNSPECIFIED",
+                        "CONTAINER_REGISTRY",
+                        "ARTIFACT_REGISTRY"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Docker images will be stored in multi-regional Container Registry repositories named `gcf`.",
+                        "Docker images will be stored in regional Artifact Registry repositories. By default, GCF will create and use repositories named `gcf-artifacts` in every region in which a function is deployed. But the repository to use can also be specified by the user using the `docker_repository` field."
+                    ],
+                    "type": "string"
+                },
                 "dockerRepository": {
                     "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. If specified, deployments will use Artifact Registry. If unspecified and the deployment is eligible to use Artifact Registry, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'.",
                     "type": "string"
@@ -943,6 +957,300 @@
             },
             "type": "object"
         },
+        "GoogleCloudFunctionsV2alphaOperationMetadata": {
+            "description": "Represents the metadata of the long-running operation.",
+            "id": "GoogleCloudFunctionsV2alphaOperationMetadata",
+            "properties": {
+                "apiVersion": {
+                    "description": "API version used to start the operation.",
+                    "type": "string"
+                },
+                "cancelRequested": {
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+                    "type": "boolean"
+                },
+                "createTime": {
+                    "description": "The time the operation was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "The time the operation finished running.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "requestResource": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The original request that started the operation.",
+                    "type": "object"
+                },
+                "stages": {
+                    "description": "Mechanism for reporting in-progress stages",
+                    "items": {
+                        "$ref": "GoogleCloudFunctionsV2alphaStage"
+                    },
+                    "type": "array"
+                },
+                "statusDetail": {
+                    "description": "Human-readable status of the operation, if any.",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Server-defined resource path for the target of the operation.",
+                    "type": "string"
+                },
+                "verb": {
+                    "description": "Name of the verb executed by the operation.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2alphaStage": {
+            "description": "Each Stage of the deployment process",
+            "id": "GoogleCloudFunctionsV2alphaStage",
+            "properties": {
+                "message": {
+                    "description": "Message describing the Stage",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the Stage. This will be unique for each Stage.",
+                    "enum": [
+                        "NAME_UNSPECIFIED",
+                        "ARTIFACT_REGISTRY",
+                        "BUILD",
+                        "SERVICE",
+                        "TRIGGER",
+                        "SERVICE_ROLLBACK",
+                        "TRIGGER_ROLLBACK"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid name.",
+                        "Artifact Regsitry Stage",
+                        "Build Stage",
+                        "Service Stage",
+                        "Trigger Stage",
+                        "Service Rollback Stage",
+                        "Trigger Rollback Stage"
+                    ],
+                    "type": "string"
+                },
+                "resource": {
+                    "description": "Resource of the Stage",
+                    "type": "string"
+                },
+                "resourceUri": {
+                    "description": "Link to the current Stage resource",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Current state of the Stage",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "NOT_STARTED",
+                        "IN_PROGRESS",
+                        "COMPLETE"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid state.",
+                        "Stage has not started.",
+                        "Stage is in progress.",
+                        "Stage has completed."
+                    ],
+                    "type": "string"
+                },
+                "stateMessages": {
+                    "description": "State messages from the current Stage.",
+                    "items": {
+                        "$ref": "GoogleCloudFunctionsV2alphaStateMessage"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2alphaStateMessage": {
+            "description": "Informational messages about the state of the Cloud Function or Operation.",
+            "id": "GoogleCloudFunctionsV2alphaStateMessage",
+            "properties": {
+                "message": {
+                    "description": "The message.",
+                    "type": "string"
+                },
+                "severity": {
+                    "description": "Severity of the state message.",
+                    "enum": [
+                        "SEVERITY_UNSPECIFIED",
+                        "ERROR",
+                        "WARNING",
+                        "INFO"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid severity.",
+                        "ERROR-level severity.",
+                        "WARNING-level severity.",
+                        "INFO-level severity."
+                    ],
+                    "type": "string"
+                },
+                "type": {
+                    "description": "One-word CamelCase type of the state message.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2betaOperationMetadata": {
+            "description": "Represents the metadata of the long-running operation.",
+            "id": "GoogleCloudFunctionsV2betaOperationMetadata",
+            "properties": {
+                "apiVersion": {
+                    "description": "API version used to start the operation.",
+                    "type": "string"
+                },
+                "cancelRequested": {
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+                    "type": "boolean"
+                },
+                "createTime": {
+                    "description": "The time the operation was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "The time the operation finished running.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "requestResource": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The original request that started the operation.",
+                    "type": "object"
+                },
+                "stages": {
+                    "description": "Mechanism for reporting in-progress stages",
+                    "items": {
+                        "$ref": "GoogleCloudFunctionsV2betaStage"
+                    },
+                    "type": "array"
+                },
+                "statusDetail": {
+                    "description": "Human-readable status of the operation, if any.",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Server-defined resource path for the target of the operation.",
+                    "type": "string"
+                },
+                "verb": {
+                    "description": "Name of the verb executed by the operation.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2betaStage": {
+            "description": "Each Stage of the deployment process",
+            "id": "GoogleCloudFunctionsV2betaStage",
+            "properties": {
+                "message": {
+                    "description": "Message describing the Stage",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the Stage. This will be unique for each Stage.",
+                    "enum": [
+                        "NAME_UNSPECIFIED",
+                        "ARTIFACT_REGISTRY",
+                        "BUILD",
+                        "SERVICE",
+                        "TRIGGER",
+                        "SERVICE_ROLLBACK",
+                        "TRIGGER_ROLLBACK"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid name.",
+                        "Artifact Regsitry Stage",
+                        "Build Stage",
+                        "Service Stage",
+                        "Trigger Stage",
+                        "Service Rollback Stage",
+                        "Trigger Rollback Stage"
+                    ],
+                    "type": "string"
+                },
+                "resource": {
+                    "description": "Resource of the Stage",
+                    "type": "string"
+                },
+                "resourceUri": {
+                    "description": "Link to the current Stage resource",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Current state of the Stage",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "NOT_STARTED",
+                        "IN_PROGRESS",
+                        "COMPLETE"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid state.",
+                        "Stage has not started.",
+                        "Stage is in progress.",
+                        "Stage has completed."
+                    ],
+                    "type": "string"
+                },
+                "stateMessages": {
+                    "description": "State messages from the current Stage.",
+                    "items": {
+                        "$ref": "GoogleCloudFunctionsV2betaStateMessage"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2betaStateMessage": {
+            "description": "Informational messages about the state of the Cloud Function or Operation.",
+            "id": "GoogleCloudFunctionsV2betaStateMessage",
+            "properties": {
+                "message": {
+                    "description": "The message.",
+                    "type": "string"
+                },
+                "severity": {
+                    "description": "Severity of the state message.",
+                    "enum": [
+                        "SEVERITY_UNSPECIFIED",
+                        "ERROR",
+                        "WARNING",
+                        "INFO"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid severity.",
+                        "ERROR-level severity.",
+                        "WARNING-level severity.",
+                        "INFO-level severity."
+                    ],
+                    "type": "string"
+                },
+                "type": {
+                    "description": "One-word CamelCase type of the state message.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "HttpsTrigger": {
             "description": "Describes HttpsTrigger, could be used to connect web hooks to function.",
             "id": "HttpsTrigger",
diff --git a/discovery/googleapis/cloudidentity__v1.json b/discovery/googleapis/cloudidentity__v1.json
index eeb3a49..034875f 100644
--- a/discovery/googleapis/cloudidentity__v1.json
+++ b/discovery/googleapis/cloudidentity__v1.json
@@ -1339,7 +1339,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220215",
     "rootUrl": "https://cloudidentity.googleapis.com/",
     "schemas": {
         "CheckTransitiveMembershipResponse": {
@@ -2295,7 +2295,7 @@
                 },
                 "groupKey": {
                     "$ref": "EntityKey",
-                    "description": "Required. Immutable. The `EntityKey` of the `Group`."
+                    "description": "Required. The `EntityKey` of the `Group`."
                 },
                 "labels": {
                     "additionalProperties": {
@@ -2850,45 +2850,6 @@
                 }
             },
             "type": "object"
-        },
-        "UserInvitation": {
-            "description": "The `UserInvitation` resource represents an email that can be sent to an unmanaged user account inviting them to join the customer's Google Workspace or Cloud Identity account. An unmanaged account shares an email address domain with the Google Workspace or Cloud Identity account but is not managed by it yet. If the user accepts the `UserInvitation`, the user account will become managed.",
-            "id": "UserInvitation",
-            "properties": {
-                "mailsSentCount": {
-                    "description": "Number of invitation emails sent to the user.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "Shall be of the form `customers/{customer}/userinvitations/{user_email_address}`.",
-                    "type": "string"
-                },
-                "state": {
-                    "description": "State of the `UserInvitation`.",
-                    "enum": [
-                        "STATE_UNSPECIFIED",
-                        "NOT_YET_SENT",
-                        "INVITED",
-                        "ACCEPTED",
-                        "DECLINED"
-                    ],
-                    "enumDescriptions": [
-                        "The default value. This value is used if the state is omitted.",
-                        "The `UserInvitation` has been created and is ready for sending as an email.",
-                        "The user has been invited by email.",
-                        "The user has accepted the invitation and is part of the organization.",
-                        "The user declined the invitation."
-                    ],
-                    "type": "string"
-                },
-                "updateTime": {
-                    "description": "Time when the `UserInvitation` was last updated.",
-                    "format": "google-datetime",
-                    "type": "string"
-                }
-            },
-            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/cloudiot__v1.json b/discovery/googleapis/cloudiot__v1.json
index c9adc59..e28e869 100644
--- a/discovery/googleapis/cloudiot__v1.json
+++ b/discovery/googleapis/cloudiot__v1.json
@@ -936,7 +936,7 @@
             }
         }
     },
-    "revision": "20220110",
+    "revision": "20220131",
     "rootUrl": "https://cloudiot.googleapis.com/",
     "schemas": {
         "BindDeviceToGatewayRequest": {
diff --git a/discovery/googleapis/cloudkms__v1.json b/discovery/googleapis/cloudkms__v1.json
index 4f0ee3b..13afb87 100644
--- a/discovery/googleapis/cloudkms__v1.json
+++ b/discovery/googleapis/cloudkms__v1.json
@@ -211,6 +211,66 @@
                     "resources": {
                         "ekmConnections": {
                             "methods": {
+                                "create": {
+                                    "description": "Creates a new EkmConnection in a given Project and Location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ekmConnections",
+                                    "httpMethod": "POST",
+                                    "id": "cloudkms.projects.locations.ekmConnections.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "ekmConnectionId": {
+                                            "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The resource name of the location associated with the EkmConnection, in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/ekmConnections",
+                                    "request": {
+                                        "$ref": "EkmConnection"
+                                    },
+                                    "response": {
+                                        "$ref": "EkmConnection"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudkms"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Returns metadata for a given EkmConnection.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ekmConnections/{ekmConnectionsId}",
+                                    "httpMethod": "GET",
+                                    "id": "cloudkms.projects.locations.ekmConnections.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the EkmConnection to get.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/ekmConnections/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "EkmConnection"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudkms"
+                                    ]
+                                },
                                 "getIamPolicy": {
                                     "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ekmConnections/{ekmConnectionsId}:getIamPolicy",
@@ -243,6 +303,88 @@
                                         "https://www.googleapis.com/auth/cloudkms"
                                     ]
                                 },
+                                "list": {
+                                    "description": "Lists EkmConnections.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ekmConnections",
+                                    "httpMethod": "GET",
+                                    "id": "cloudkms.projects.locations.ekmConnections.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "Optional. Only include resources that match the filter in the response. For more information, see [Sorting and filtering list results](https://cloud.google.com/kms/docs/sorting-and-filtering).",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "Optional. Specify how the results should be sorted. If not specified, the results will be sorted in the default order. For more information, see [Sorting and filtering list results](https://cloud.google.com/kms/docs/sorting-and-filtering).",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Optional. Optional limit on the number of EkmConnections to include in the response. Further EkmConnections can subsequently be obtained by including the ListEkmConnectionsResponse.next_page_token in a subsequent request. If unspecified, the server will pick an appropriate default.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "Optional. Optional pagination token, returned earlier via ListEkmConnectionsResponse.next_page_token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The resource name of the location associated with the EkmConnections to list, in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/ekmConnections",
+                                    "response": {
+                                        "$ref": "ListEkmConnectionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudkms"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates an EkmConnection's metadata.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ekmConnections/{ekmConnectionsId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "cloudkms.projects.locations.ekmConnections.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Output only. The resource name for the EkmConnection in the format `projects/*/locations/*/ekmConnections/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/ekmConnections/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required. List of fields to be updated in this request.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "EkmConnection"
+                                    },
+                                    "response": {
+                                        "$ref": "EkmConnection"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform",
+                                        "https://www.googleapis.com/auth/cloudkms"
+                                    ]
+                                },
                                 "setIamPolicy": {
                                     "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
                                     "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ekmConnections/{ekmConnectionsId}:setIamPolicy",
@@ -1438,7 +1580,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220208",
     "rootUrl": "https://cloudkms.googleapis.com/",
     "schemas": {
         "AsymmetricDecryptRequest": {
@@ -1478,13 +1620,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 },
@@ -1535,13 +1679,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 },
@@ -1636,6 +1782,63 @@
             },
             "type": "object"
         },
+        "Certificate": {
+            "description": "A Certificate represents an X.509 certificate used to authenticate HTTPS connections to EKM replicas.",
+            "id": "Certificate",
+            "properties": {
+                "issuer": {
+                    "description": "Output only. The issuer distinguished name in RFC 2253 format. Only present if parsed is true.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "notAfterTime": {
+                    "description": "Output only. The certificate is not valid after this time. Only present if parsed is true.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "notBeforeTime": {
+                    "description": "Output only. The certificate is not valid before this time. Only present if parsed is true.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "parsed": {
+                    "description": "Output only. True if the certificate was parsed successfully.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
+                "rawDer": {
+                    "description": "Required. The raw certificate bytes in DER format.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "serialNumber": {
+                    "description": "Output only. The certificate serial number as a hex string. Only present if parsed is true.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "sha256Fingerprint": {
+                    "description": "Output only. The SHA-256 certificate fingerprint as a hex string. Only present if parsed is true.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "subject": {
+                    "description": "Output only. The subject distinguished name in RFC 2253 format. Only present if parsed is true.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "subjectAlternativeDnsNames": {
+                    "description": "Output only. The subject Alternative DNS names. Only present if parsed is true.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "CertificateChains": {
             "description": "Certificate chains needed to verify the attestation. Certificates in chains are PEM-encoded and are ordered based on https://tools.ietf.org/html/rfc5246#section-7.4.2.",
             "id": "CertificateChains",
@@ -1674,6 +1877,10 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "cryptoKeyBackend": {
+                    "description": "Immutable. The resource name of the backend environment where the key material for all CryptoKeyVersions associated with this CryptoKey reside and where all related cryptographic operations are performed. Only applicable if CryptoKeyVersions have a ProtectionLevel of EXTERNAL_VPC, with the resource name in the format `projects/*/locations/*/ekmConnections/*`. Note, this list is non-exhaustive and may apply to additional ProtectionLevels in the future.",
+                    "type": "string"
+                },
                 "destroyScheduledDuration": {
                     "description": "Immutable. The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED. If not specified at creation time, the default duration is 24 hours.",
                     "format": "google-duration",
@@ -1823,7 +2030,7 @@
                 },
                 "externalProtectionLevelOptions": {
                     "$ref": "ExternalProtectionLevelOptions",
-                    "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level."
+                    "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels."
                 },
                 "generateTime": {
                     "description": "Output only. The time this CryptoKeyVersion's key material was generated.",
@@ -1858,13 +2065,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -1969,13 +2178,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 }
@@ -2029,13 +2240,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 },
@@ -2074,6 +2287,35 @@
             },
             "type": "object"
         },
+        "EkmConnection": {
+            "description": "An EkmConnection represents an individual EKM connection. It can be used for creating CryptoKeys and CryptoKeyVersions with a ProtectionLevel of EXTERNAL_VPC, as well as performing cryptographic operations using keys created within the EkmConnection.",
+            "id": "EkmConnection",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The time at which the EkmConnection was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "etag": {
+                    "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The resource name for the EkmConnection in the format `projects/*/locations/*/ekmConnections/*`.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "serviceResolvers": {
+                    "description": "A list of ServiceResolvers where the EKM can be reached. There should be one ServiceResolver per EKM replica. Currently, only a single ServiceResolver is supported.",
+                    "items": {
+                        "$ref": "ServiceResolver"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "EncryptRequest": {
             "description": "Request message for KeyManagementService.Encrypt.",
             "id": "EncryptRequest",
@@ -2125,13 +2367,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 },
@@ -2170,9 +2414,13 @@
             "type": "object"
         },
         "ExternalProtectionLevelOptions": {
-            "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level.",
+            "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels.",
             "id": "ExternalProtectionLevelOptions",
             "properties": {
+                "ekmConnectionKeyPath": {
+                    "description": "The path to the external key material on the EKM when using EkmConnection e.g., \"v0/my/key\". Set this field instead of external_key_uri when using an EkmConnection.",
+                    "type": "string"
+                },
                 "externalKeyUri": {
                     "description": "The URI for an external resource that this CryptoKeyVersion represents.",
                     "type": "string"
@@ -2195,13 +2443,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 }
@@ -2361,13 +2611,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 },
@@ -2493,6 +2745,29 @@
             },
             "type": "object"
         },
+        "ListEkmConnectionsResponse": {
+            "description": "Response message for KeyManagementService.ListEkmConnections.",
+            "id": "ListEkmConnectionsResponse",
+            "properties": {
+                "ekmConnections": {
+                    "description": "The list of EkmConnections.",
+                    "items": {
+                        "$ref": "EkmConnection"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to retrieve next page of results. Pass this value in ListEkmConnectionsRequest.page_token to retrieve the next page of results.",
+                    "type": "string"
+                },
+                "totalSize": {
+                    "description": "The total number of EkmConnections that matched the query.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "ListImportJobsResponse": {
             "description": "Response message for KeyManagementService.ListImportJobs.",
             "id": "ListImportJobsResponse",
@@ -2647,13 +2922,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 },
@@ -2705,13 +2982,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 },
@@ -2846,13 +3125,15 @@
                         "PROTECTION_LEVEL_UNSPECIFIED",
                         "SOFTWARE",
                         "HSM",
-                        "EXTERNAL"
+                        "EXTERNAL",
+                        "EXTERNAL_VPC"
                     ],
                     "enumDescriptions": [
                         "Not specified.",
                         "Crypto operations are performed in software.",
                         "Crypto operations are performed in a Hardware Security Module.",
-                        "Crypto operations are performed by an external key manager."
+                        "Crypto operations are performed by an external key manager.",
+                        "Crypto operations are performed in an EKM-over-VPC backend."
                     ],
                     "type": "string"
                 }
@@ -2865,6 +3146,32 @@
             "properties": {},
             "type": "object"
         },
+        "ServiceResolver": {
+            "description": "A ServiceResolver represents an EKM replica that can be reached within an EkmConnection.",
+            "id": "ServiceResolver",
+            "properties": {
+                "endpointFilter": {
+                    "description": "Optional. The filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered. An endpoint will be chosen arbitrarily from the filtered list for each request. For endpoint filter syntax and examples, see https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest.",
+                    "type": "string"
+                },
+                "hostname": {
+                    "description": "Required. The hostname of the EKM replica used at TLS and HTTP layers.",
+                    "type": "string"
+                },
+                "serverCertificates": {
+                    "description": "Required. A list of leaf server certificates used to authenticate HTTPS connections to the EKM replica. Currently, a maximum of 10 Certificate is supported.",
+                    "items": {
+                        "$ref": "Certificate"
+                    },
+                    "type": "array"
+                },
+                "serviceDirectoryService": {
+                    "description": "Required. The resource name of the Service Directory service pointing to an EKM replica, in the format `projects/*/locations/*/namespaces/*/services/*`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "SetIamPolicyRequest": {
             "description": "Request message for `SetIamPolicy` method.",
             "id": "SetIamPolicyRequest",
diff --git a/discovery/googleapis/cloudprofiler__v2.json b/discovery/googleapis/cloudprofiler__v2.json
index 07ee17b..b9e2b84 100644
--- a/discovery/googleapis/cloudprofiler__v2.json
+++ b/discovery/googleapis/cloudprofiler__v2.json
@@ -214,7 +214,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220205",
     "rootUrl": "https://cloudprofiler.googleapis.com/",
     "schemas": {
         "CreateProfileRequest": {
diff --git a/discovery/googleapis/cloudresourcemanager__v1.json b/discovery/googleapis/cloudresourcemanager__v1.json
index 2baf170..ef27056 100644
--- a/discovery/googleapis/cloudresourcemanager__v1.json
+++ b/discovery/googleapis/cloudresourcemanager__v1.json
@@ -1169,7 +1169,7 @@
             }
         }
     },
-    "revision": "20220123",
+    "revision": "20220214",
     "rootUrl": "https://cloudresourcemanager.googleapis.com/",
     "schemas": {
         "Ancestor": {
diff --git a/discovery/googleapis/cloudresourcemanager__v2.json b/discovery/googleapis/cloudresourcemanager__v2.json
index bc5be80..dcd93b9 100644
--- a/discovery/googleapis/cloudresourcemanager__v2.json
+++ b/discovery/googleapis/cloudresourcemanager__v2.json
@@ -448,7 +448,7 @@
             }
         }
     },
-    "revision": "20220123",
+    "revision": "20220214",
     "rootUrl": "https://cloudresourcemanager.googleapis.com/",
     "schemas": {
         "AuditConfig": {
diff --git a/discovery/googleapis/cloudresourcemanager__v3.json b/discovery/googleapis/cloudresourcemanager__v3.json
index 77e31fb..c931654 100644
--- a/discovery/googleapis/cloudresourcemanager__v3.json
+++ b/discovery/googleapis/cloudresourcemanager__v3.json
@@ -1610,7 +1610,7 @@
             }
         }
     },
-    "revision": "20220123",
+    "revision": "20220214",
     "rootUrl": "https://cloudresourcemanager.googleapis.com/",
     "schemas": {
         "AuditConfig": {
diff --git a/discovery/googleapis/cloudsearch__v1.json b/discovery/googleapis/cloudsearch__v1.json
index a0bc333..d909920 100644
--- a/discovery/googleapis/cloudsearch__v1.json
+++ b/discovery/googleapis/cloudsearch__v1.json
@@ -519,7 +519,7 @@
                                             "type": "string"
                                         },
                                         "version": {
-                                            "description": "Required. The incremented version of the item to delete from the index. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won't delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. See [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations) to understand how item version affects reindexing after delete item.",
+                                            "description": "Required. The incremented version of the item to delete from the index. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won't delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. For information on how item version affects the deletion process, refer to [Handle revisions after manual deletes](https://developers.google.com/cloud-search/docs/guides/operations).",
                                             "format": "byte",
                                             "location": "query",
                                             "type": "string"
@@ -1992,9 +1992,104 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220207",
     "rootUrl": "https://cloudsearch.googleapis.com/",
     "schemas": {
+        "AclInfo": {
+            "description": "Next tag: 4",
+            "id": "AclInfo",
+            "properties": {
+                "groupsCount": {
+                    "description": "Number of groups which have at least read access to the document.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "scope": {
+                    "description": "The scope to which the content was shared.",
+                    "enum": [
+                        "LIMITED",
+                        "DASHER_DOMAIN_WITH_LINK",
+                        "DASHER_DOMAIN",
+                        "PUBLIC_WITH_LINK",
+                        "PUBLIC",
+                        "TEAM_DRIVE"
+                    ],
+                    "enumDescriptions": [
+                        "Explicit set of people and groups.",
+                        "Anybody at the same domain with the link.",
+                        "Now it works only for google.com. Anybody at the same domain. Now it works only",
+                        "for google.com. Anybody with the link.",
+                        "Anybody.",
+                        "Special tag to indicate TeamDrive scope."
+                    ],
+                    "type": "string"
+                },
+                "usersCount": {
+                    "description": "Number of users which have at least read access to the document.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "AppId": {
+            "description": "Identifier of an App.",
+            "id": "AppId",
+            "properties": {
+                "appType": {
+                    "description": "Enum indicating the type of App this is.",
+                    "enum": [
+                        "APP_TYPE_UNSPECIFIED",
+                        "APP",
+                        "GSUITE_APP",
+                        "INCOMING_WEBHOOK"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "3P APP eg. external Bots(Asana Bot), 1P Bots(Drive Bot).",
+                        "1P APP eg. Tasks, Meet, Docs, Calendar..",
+                        "Asynchronous messages via an incoming webhook."
+                    ],
+                    "type": "string"
+                },
+                "gsuiteAppType": {
+                    "description": "Enum indicating which 1P App this is when app_type is GSUITE_APP. Determined & set by the 1P API as a convenience for all users of this identifier(Eg. clients, chime, backend etc.) to map to 1P properties.",
+                    "enum": [
+                        "GSUITE_APP_TYPE_UNSPECIFIED",
+                        "TASKS_APP",
+                        "CALENDAR_APP",
+                        "DOCS_APP",
+                        "SHEETS_APP",
+                        "SLIDES_APP",
+                        "MEET_APP",
+                        "FILE_SUGGESTION_APP",
+                        "CONTACTS_APP",
+                        "ACTIVITY_FEED_APP",
+                        "DRIVE_APP"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "Powered by Bullseye",
+                        "",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "id": {
+                    "description": "Numeric identifier of the App. Set to Project number for 1/3P Apps. For Webhook, this is WebhookId. Determined & set by the 1P API from App credentials on the side channel.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "AuditLoggingSettings": {
             "description": "Represents the settings for Cloud audit logging",
             "id": "AuditLoggingSettings",
@@ -2018,6 +2113,15 @@
             },
             "type": "object"
         },
+        "AvatarInfo": {
+            "id": "AvatarInfo",
+            "properties": {
+                "emoji": {
+                    "$ref": "Emoji"
+                }
+            },
+            "type": "object"
+        },
         "BooleanOperatorOptions": {
             "description": "Used to provide a search operator for boolean properties. This is optional. Search operators let users restrict the query to specific fields relevant to the type of item being searched.",
             "id": "BooleanOperatorOptions",
@@ -2095,6 +2199,74 @@
             },
             "type": "object"
         },
+        "CustomEmoji": {
+            "description": "Proto representation of a custom emoji. May be used in both APIs and in Spanner, but certain fields should be restricted to one or the other. See the per-field documentation for details. NEXT_TAG: 11",
+            "id": "CustomEmoji",
+            "properties": {
+                "blobId": {
+                    "description": "ID for the underlying image data in Blobstore. This field should *only* be present in Spanner or within the server, but should not be exposed in public APIs.",
+                    "type": "string"
+                },
+                "createTimeMicros": {
+                    "description": "Time when the Emoji was created, in microseconds. This field may be present in Spanner, within the server, or in public APIs.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "creatorUserId": {
+                    "$ref": "UserId",
+                    "description": "This field should *never* be persisted to Spanner."
+                },
+                "ownerCustomerId": {
+                    "$ref": "CustomerId",
+                    "description": "This field should *never* be persisted to Spanner."
+                },
+                "readToken": {
+                    "description": "Opaque token that clients use to construct the URL for accessing the custom emoji’s image data. This field is intended for API consumption, and should *never* be persisted to Spanner.",
+                    "type": "string"
+                },
+                "shortcode": {
+                    "description": "User-provided, human-readable ID for the custom emoji. Users are expected to observe this field in the UI instead of the UUID. This shortcode should be unique within an organization, but has no global uniqueness guarantees, unlike the UUID. This field should *never* be persisted to Spanner.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Snapshot of the current state of the emoji, which may differ from the source-of-truth in the CustomEmojis table. This field should *never* be persisted to Spanner.",
+                    "enum": [
+                        "EMOJI_STATE_UNSPECIFIED",
+                        "EMOJI_ENABLED",
+                        "EMOJI_SYSTEM_DISABLED",
+                        "EMOJI_HIDDEN",
+                        "EMOJI_DELETED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Emoji is visible and available to be used, subject to access control requirements.",
+                        "Emoji can no longer be used (e.g. due to a shortcode conflict), but is not removed from existing embeddings.",
+                        "Emoji is hidden from pickers, so new usages are not allowed, but is not removed from existing embeddings.",
+                        "Emoji is removed everywhere and is not available to end-users."
+                    ],
+                    "type": "string"
+                },
+                "updateTimeMicros": {
+                    "format": "int64",
+                    "type": "string"
+                },
+                "uuid": {
+                    "description": "Unique key for a custom emoji resource. Required. This field is *always* populated.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "CustomerId": {
+            "description": "Represents a GSuite customer ID. Obfuscated with CustomerIdObfuscator.",
+            "id": "CustomerId",
+            "properties": {
+                "customerId": {
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "CustomerIndexStats": {
             "description": "Aggregation of items by status code as of the specified date.",
             "id": "CustomerIndexStats",
@@ -2393,6 +2565,16 @@
             },
             "type": "object"
         },
+        "DmId": {
+            "id": "DmId",
+            "properties": {
+                "dmId": {
+                    "description": "Unique server assigned Id, per Direct Message Space.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "DoubleOperatorOptions": {
             "description": "Used to provide a search operator for double properties. This is optional. Search operators let users restrict the query to specific fields relevant to the type of item being searched.",
             "id": "DoubleOperatorOptions",
@@ -2550,6 +2732,20 @@
             },
             "type": "object"
         },
+        "Emoji": {
+            "id": "Emoji",
+            "properties": {
+                "customEmoji": {
+                    "$ref": "CustomEmoji",
+                    "description": "A custom emoji."
+                },
+                "unicode": {
+                    "description": "A basic emoji represented by a unicode string.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "EnumOperatorOptions": {
             "description": "Used to provide a search operator for enum properties. This is optional. Search operators let users restrict the query to specific fields relevant to the type of item being searched. For example, if you provide no operator for a *priority* enum property with possible values *p0* and *p1*, a query that contains the term *p0* returns items that have *p0* as the value of the *priority* property, as well as any items that contain the string *p0* in other fields. If you provide an operator name for the enum, such as *priority*, then search users can use that operator to refine results to only items that have *p0* as this property's value, with the query *priority:p0*.",
             "id": "EnumOperatorOptions",
@@ -2934,6 +3130,123 @@
             },
             "type": "object"
         },
+        "GoogleDocsMetadata": {
+            "description": "The corpus specific metadata for office-type documents, from Google Docs and other sources. This message is passed to the scorer and beyond. Next tag: 7",
+            "id": "GoogleDocsMetadata",
+            "properties": {
+                "aclInfo": {
+                    "$ref": "AclInfo",
+                    "description": "Contains number of users and groups which can access the document."
+                },
+                "documentType": {
+                    "description": "The conceptual type (presentation, document, etc.) of this document.",
+                    "enum": [
+                        "UNKNOWN",
+                        "DOCUMENT",
+                        "PRESENTATION",
+                        "SPREADSHEET",
+                        "PDF",
+                        "IMAGE",
+                        "BINARY_BLOB",
+                        "FUSION_TABLE",
+                        "FOLDER",
+                        "DRAWING",
+                        "VIDEO",
+                        "FORM",
+                        "DRAFT_SITE",
+                        "DRAFT_SITE_PAGE",
+                        "JAM",
+                        "SHORTCUT",
+                        "SCRIPT"
+                    ],
+                    "enumDescriptions": [
+                        "If the type is unknown or not represented in this enum.",
+                        "Writely, Word, etc.",
+                        "Presently, PowerPoint, etc.",
+                        "Trix, Excel, etc.",
+                        "File types for Gdrive objects are below.",
+                        "",
+                        "Fall-back for unknown Gdrive types.",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "",
+                        "For Atari page and site drafts",
+                        "",
+                        "Jamboard Jams (go/jam)",
+                        "Drive Shortcuts (go/shortcuts)",
+                        ""
+                    ],
+                    "type": "string"
+                },
+                "fileExtension": {
+                    "description": "The file extension of the document. NOTE: As of October 2018 this field is not backfilled for old documents.",
+                    "type": "string"
+                },
+                "lastContentModifiedTimestamp": {
+                    "description": "The last time this document was modified, in seconds since epoch. Only counts content modifications.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "resultInfo": {
+                    "$ref": "GoogleDocsResultInfo",
+                    "description": "Additional per-result information, akin to Gmail's SingleThreadResponse. Note: GWS no longer seems to use this field, but there's still one reference to it for Scribe, so we can't remove it."
+                },
+                "typeInfo": {
+                    "$ref": "TypeInfo",
+                    "description": "Contains additional information about the document depending on its type."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleDocsResultInfo": {
+            "description": "A message containing information about a specific result. This information is passed to the scorer and beyond; in particular, GWS relies on it to format the result in the UI. Split from GoogleDocsMetadata in case we later want to reuse the message.",
+            "id": "GoogleDocsResultInfo",
+            "properties": {
+                "attachmentSha1": {
+                    "description": "The SHA1 hash of the object in Drive, if any.",
+                    "type": "string"
+                },
+                "cosmoId": {
+                    "$ref": "Id",
+                    "description": "The storage identifier for the object in Cosmo. This field is intended to used by Stratus/Moonshine integration only. It should not be exposed externally (please refer to encrypted_id for that purpose)."
+                },
+                "cosmoNameSpace": {
+                    "description": "For Cosmo objects, the Cosmo namespace the object was in. This allows downstream clients to identify whether a document was created in Writely or Kix, Presently or Punch, or whether it was uploaded from GDrive. See storage_cosmo.Id.NAME_SPACE for a list of all Cosmo name spaces.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "encryptedId": {
+                    "description": "The encrypted (user-visible) id of this object. Knowing the id is sufficient to create a canonical URL for this document.",
+                    "type": "string"
+                },
+                "mimeType": {
+                    "description": "The mimetype of the document.",
+                    "type": "string"
+                },
+                "shareScope": {
+                    "$ref": "ShareScope",
+                    "description": "The visibility indicator in the UI will be based upon this."
+                }
+            },
+            "type": "object"
+        },
+        "GroupId": {
+            "description": "Id representing a group that could be a space, a chat, or a direct message space. Which ID is set here will determine which group",
+            "id": "GroupId",
+            "properties": {
+                "dmId": {
+                    "$ref": "DmId",
+                    "description": "Unique, immutable ID of the Direct Message Space"
+                },
+                "spaceId": {
+                    "$ref": "SpaceId",
+                    "description": "Unique, immutable ID of the Space"
+                }
+            },
+            "type": "object"
+        },
         "HtmlOperatorOptions": {
             "description": "Used to provide a search operator for html properties. This is optional. Search operators let users restrict the query to specific fields relevant to the type of item being searched.",
             "id": "HtmlOperatorOptions",
@@ -2974,6 +3287,27 @@
             },
             "type": "object"
         },
+        "Id": {
+            "description": "Identifies a particular object, including both Users and DirEntries. This Id is unique across the entire server instance, such as the production or qa instance.",
+            "id": "Id",
+            "properties": {
+                "creatorUserId": {
+                    "description": "The User account in which the DirEntry was originally created. If name_space==GAIA, then it's the gaia_id of the user this id is referring to.",
+                    "format": "uint64",
+                    "type": "string"
+                },
+                "localId": {
+                    "description": "The local identifier for the DirEntry (local to the creator's account). local_id + app_name is guaranteed to be unique within the creator account, but not across all User accounts. The string is case sensitive. Ignore if name_space==GAIA. NB For name_space==COSMO, all local_id's should be defined in google3/java/com/google/storage/cosmo/server/api/SpecialObjectIds.java as they have a special predefined meaning. See cosmo.client.CosmoIdFactory.createObjectId(long,String) for IMPORTANT recommendations when generating IDs.",
+                    "type": "string"
+                },
+                "nameSpace": {
+                    "description": "The name space in which this id is unique (typically the application that created it). Values should be drawn from the above enum, but for experimentation, use values greater than 1000.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "IndexItemOptions": {
             "id": "IndexItemOptions",
             "properties": {
@@ -3176,7 +3510,7 @@
                     "description": "The structured data for the item that should conform to a registered object definition in the schema for the data source."
                 },
                 "version": {
-                    "description": "Required. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won't index or delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. See [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations) to understand how item version affects reindexing after delete item.",
+                    "description": "Required. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won't index or delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. For information on how item version affects the deletion process, refer to [Handle revisions after manual deletes](https://developers.google.com/cloud-search/docs/guides/operations).",
                     "format": "byte",
                     "type": "string"
                 }
@@ -3355,7 +3689,7 @@
                     "description": "Additional search quality metadata of the item"
                 },
                 "sourceRepositoryUrl": {
-                    "description": "Link to the source repository serving the data. Search results apply this link to the title. Whitespace or special characters may cause Cloud Search result links to trigger a redirect notice; to avoid this, encode the URL. The maximum length is 2048 characters.",
+                    "description": "Link to the source repository serving the data. Seach results apply this link to the title. Whitespace or special characters may cause Cloud Seach result links to trigger a redirect notice; to avoid this, encode the URL. The maximum length is 2048 characters.",
                     "type": "string"
                 },
                 "title": {
@@ -4761,7 +5095,7 @@
                     "type": "integer"
                 },
                 "query": {
-                    "description": "The raw query string. See supported search operators in the [Cloud search Cheat Sheet](https://support.google.com/a/users/answer/9299929)",
+                    "description": "The raw query string. See supported search operators in the [Narrow your search with operators](https://support.google.com/cloudsearch/answer/6172299)",
                     "type": "string"
                 },
                 "queryInterpretationOptions": {
@@ -4883,6 +5217,36 @@
             },
             "type": "object"
         },
+        "ShareScope": {
+            "id": "ShareScope",
+            "properties": {
+                "domain": {
+                    "description": "If scope is DOMAIN, this field contains the dasher domain, for example \"google.com\".",
+                    "type": "string"
+                },
+                "scope": {
+                    "description": "The scope to which the content was shared.",
+                    "enum": [
+                        "UNKNOWN",
+                        "PRIVATE",
+                        "LIMITED",
+                        "EXTENDED",
+                        "DASHER_DOMAIN",
+                        "PUBLIC"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Only the author can view the post.",
+                        "Viewable only by a set of people.",
+                        "Viewable by extended circles.",
+                        "",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "Snippet": {
             "description": "Snippet of the search result, which summarizes the content of the resulting page.",
             "id": "Snippet",
@@ -5042,6 +5406,58 @@
             },
             "type": "object"
         },
+        "SpaceId": {
+            "description": "Primary key for Space resource.",
+            "id": "SpaceId",
+            "properties": {
+                "spaceId": {
+                    "description": "Unique, immutable ID of the Space",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SpaceInfo": {
+            "description": "Defines the representation of a single matching space.",
+            "id": "SpaceInfo",
+            "properties": {
+                "avatarInfo": {
+                    "$ref": "AvatarInfo"
+                },
+                "description": {
+                    "type": "string"
+                },
+                "groupId": {
+                    "$ref": "GroupId"
+                },
+                "name": {
+                    "type": "string"
+                },
+                "numMembers": {
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "userMembershipState": {
+                    "description": "searching user's membership state in this space",
+                    "enum": [
+                        "MEMBER_UNKNOWN",
+                        "MEMBER_INVITED",
+                        "MEMBER_JOINED",
+                        "MEMBER_NOT_A_MEMBER",
+                        "MEMBER_FAILED"
+                    ],
+                    "enumDescriptions": [
+                        "Default state, do not use",
+                        "An invitation to the space has been sent",
+                        "User has joined the space",
+                        "User is not a member",
+                        "This state should never be stored in Spanner. It is a state for responses to the clients to indicate that membership mutations have failed and the member is in its previous state."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "SpellResult": {
             "id": "SpellResult",
             "properties": {
@@ -5266,6 +5682,17 @@
             },
             "type": "object"
         },
+        "TypeInfo": {
+            "description": "Next tag: 2",
+            "id": "TypeInfo",
+            "properties": {
+                "videoInfo": {
+                    "$ref": "VideoInfo",
+                    "description": "Contains additional video information only if document_type is VIDEO."
+                }
+            },
+            "type": "object"
+        },
         "UnmappedIdentity": {
             "id": "UnmappedIdentity",
             "properties": {
@@ -5346,7 +5773,7 @@
             "type": "object"
         },
         "UploadItemRef": {
-            "description": "Represents an upload session reference. This reference is created via upload method. UploadItemRef may be used upto 30 days since creation. Updating of item content may refer to this uploaded content via contentDataRef.",
+            "description": "Represents an upload session reference. This reference is created via upload method. This reference is valid for 30 days after its creation. Updating of item content may refer to this uploaded content via contentDataRef.",
             "id": "UploadItemRef",
             "properties": {
                 "name": {
@@ -5356,6 +5783,33 @@
             },
             "type": "object"
         },
+        "UserId": {
+            "description": "Primary key for User resource.",
+            "id": "UserId",
+            "properties": {
+                "id": {
+                    "description": "Opaque, server-assigned ID of the User.",
+                    "type": "string"
+                },
+                "originAppId": {
+                    "$ref": "AppId",
+                    "description": "Optional. Identifier of the App involved (directly or on behalf of a human creator) in creating this message. This is not set if the user posted a message directly, but is used in the case of, for example, a message being generated by a 1P integration based on a user action (creating an event, creating a task etc). This should only be used on the BE. For clients, please use the field in the FE message proto instead (google3/apps/dynamite/v1/frontend/api/message.proto?q=origin_app_id)."
+                },
+                "type": {
+                    "description": "Clients do not need to send UserType to Backend, but Backend will always send this field to clients per the following rule: 1. For HUMAN Ids, the field is empty but by default .getType() will return HUMAN. 2. For BOT Ids, the field is ALWAYS set to BOT.",
+                    "enum": [
+                        "HUMAN",
+                        "BOT"
+                    ],
+                    "enumDescriptions": [
+                        "Notes on HUMAN type: 1) Leaving UserId.UserType field empty will return HUMAN as default value. This is expected because all the existing UserIds are without explicitly setting UserType, most of which are HUMAN Ids. For Bot Ids we will always set BOT in UserType field. 2) DO NOT explicitly set HUMAN as type. This is a proto2 issue, that a UserId with explicitly set default value HUMAN as type is NOT equal to an id without setting the field. aka. UserId id1 = UserId.newBuilder() .setId(\"dummy\").setType(UserType.HUMAN).build(); UserId id2 = UserId.newBuilder().setId(\"dummy\").build(); AssertThat(id1).isNotEqual(id2); AssertThat(id2.getType()).isEqualTo(UserType.HUMAN);",
+                        ""
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "VPCSettings": {
             "id": "VPCSettings",
             "properties": {
@@ -5407,6 +5861,18 @@
                 }
             },
             "type": "object"
+        },
+        "VideoInfo": {
+            "description": "Next tag: 2",
+            "id": "VideoInfo",
+            "properties": {
+                "duration": {
+                    "description": "Duration of the video in milliseconds. This field can be absent for recently uploaded video or inaccurate sometimes.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
         }
     },
     "servicePath": "",
diff --git a/discovery/googleapis/cloudshell__v1.json b/discovery/googleapis/cloudshell__v1.json
index 67be5a7..00c8109 100644
--- a/discovery/googleapis/cloudshell__v1.json
+++ b/discovery/googleapis/cloudshell__v1.json
@@ -372,7 +372,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220212",
     "rootUrl": "https://cloudshell.googleapis.com/",
     "schemas": {
         "AddPublicKeyMetadata": {
diff --git a/discovery/googleapis/cloudtasks__v2.json b/discovery/googleapis/cloudtasks__v2.json
index c8d76c0..6051570 100644
--- a/discovery/googleapis/cloudtasks__v2.json
+++ b/discovery/googleapis/cloudtasks__v2.json
@@ -686,7 +686,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220129",
     "rootUrl": "https://cloudtasks.googleapis.com/",
     "schemas": {
         "AppEngineHttpRequest": {
diff --git a/discovery/googleapis/cloudtrace__v2.json b/discovery/googleapis/cloudtrace__v2.json
index e5dc3b8..8a4ff6d 100644
--- a/discovery/googleapis/cloudtrace__v2.json
+++ b/discovery/googleapis/cloudtrace__v2.json
@@ -179,7 +179,7 @@
             }
         }
     },
-    "revision": "20220114",
+    "revision": "20220204",
     "rootUrl": "https://cloudtrace.googleapis.com/",
     "schemas": {
         "Annotation": {
diff --git a/discovery/googleapis/composer__v1.json b/discovery/googleapis/composer__v1.json
index b5ed4a6..2a021fc 100644
--- a/discovery/googleapis/composer__v1.json
+++ b/discovery/googleapis/composer__v1.json
@@ -404,7 +404,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220202",
     "rootUrl": "https://composer.googleapis.com/",
     "schemas": {
         "AllowedIpRange": {
@@ -477,7 +477,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -959,6 +959,10 @@
             "description": "The configuration information for configuring a Private IP Cloud Composer environment.",
             "id": "PrivateEnvironmentConfig",
             "properties": {
+                "cloudComposerConnectionSubnetwork": {
+                    "description": "Optional. When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork.",
+                    "type": "string"
+                },
                 "cloudComposerNetworkIpv4CidrBlock": {
                     "description": "Optional. The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.",
                     "type": "string"
diff --git a/discovery/googleapis/compute__v1.json b/discovery/googleapis/compute__v1.json
index dfadade..430065e 100644
--- a/discovery/googleapis/compute__v1.json
+++ b/discovery/googleapis/compute__v1.json
@@ -9589,6 +9589,53 @@
                         "https://www.googleapis.com/auth/compute"
                     ]
                 },
+                "resume": {
+                    "description": "Resumes an instance that was suspended using the instances().suspend method.",
+                    "flatPath": "projects/{project}/zones/{zone}/instances/{instance}/resume",
+                    "httpMethod": "POST",
+                    "id": "compute.instances.resume",
+                    "parameterOrder": [
+                        "project",
+                        "zone",
+                        "instance"
+                    ],
+                    "parameters": {
+                        "instance": {
+                            "description": "Name of the instance resource to resume.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestId": {
+                            "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000).",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "zone": {
+                            "description": "The name of the zone for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "projects/{project}/zones/{zone}/instances/{instance}/resume",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
                 "sendDiagnosticInterrupt": {
                     "description": "Sends diagnostic interrupt to the instance.",
                     "flatPath": "projects/{project}/zones/{zone}/instances/{instance}/sendDiagnosticInterrupt",
@@ -10039,7 +10086,7 @@
                     ]
                 },
                 "setScheduling": {
-                    "description": "Sets an instance's scheduling options. You can only call this method on a stopped instance, that is, a VM instance that is in a `TERMINATED` state. See Instance Life Cycle for more information on the possible instance states.",
+                    "description": "Sets an instance's scheduling options. You can only call this method on a stopped instance, that is, a VM instance that is in a `TERMINATED` state. See Instance Life Cycle for more information on the possible instance states. For more information about setting scheduling options for a VM, see Set VM availability policies.",
                     "flatPath": "projects/{project}/zones/{zone}/instances/{instance}/setScheduling",
                     "httpMethod": "POST",
                     "id": "compute.instances.setScheduling",
@@ -10239,7 +10286,7 @@
                     ]
                 },
                 "simulateMaintenanceEvent": {
-                    "description": "Simulates a maintenance event on the instance.",
+                    "description": "Simulates a host maintenance event on a VM. For more information, see Simulate a host maintenance event.",
                     "flatPath": "projects/{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent",
                     "httpMethod": "POST",
                     "id": "compute.instances.simulateMaintenanceEvent",
@@ -10424,6 +10471,53 @@
                         "https://www.googleapis.com/auth/compute"
                     ]
                 },
+                "suspend": {
+                    "description": "This method suspends a running instance, saving its state to persistent storage, and allows you to resume the instance at a later time. Suspended instances have no compute costs (cores or RAM), and incur only storage charges for the saved VM memory and localSSD data. Any charged resources the virtual machine was using, such as persistent disks and static IP addresses, will continue to be charged while the instance is suspended. For more information, see Suspending and resuming an instance.",
+                    "flatPath": "projects/{project}/zones/{zone}/instances/{instance}/suspend",
+                    "httpMethod": "POST",
+                    "id": "compute.instances.suspend",
+                    "parameterOrder": [
+                        "project",
+                        "zone",
+                        "instance"
+                    ],
+                    "parameters": {
+                        "instance": {
+                            "description": "Name of the instance resource to suspend.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "project": {
+                            "description": "Project ID for this request.",
+                            "location": "path",
+                            "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "requestId": {
+                            "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000).",
+                            "location": "query",
+                            "type": "string"
+                        },
+                        "zone": {
+                            "description": "The name of the zone for this request.",
+                            "location": "path",
+                            "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "projects/{project}/zones/{zone}/instances/{instance}/suspend",
+                    "response": {
+                        "$ref": "Operation"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/compute"
+                    ]
+                },
                 "testIamPermissions": {
                     "description": "Returns permissions that a caller has on the specified resource.",
                     "flatPath": "projects/{project}/zones/{zone}/instances/{resource}/testIamPermissions",
@@ -28808,7 +28902,7 @@
             }
         }
     },
-    "revision": "20211228",
+    "revision": "20220215",
     "rootUrl": "https://compute.googleapis.com/",
     "schemas": {
         "AcceleratorConfig": {
@@ -31385,7 +31479,7 @@
                 },
                 "securitySettings": {
                     "$ref": "SecuritySettings",
-                    "description": "This field specifies the security policy that applies to this backend service. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
+                    "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
                 },
                 "selfLink": {
                     "description": "[Output Only] Server-defined URL for the resource.",
@@ -53593,7 +53687,7 @@
                     "type": "array"
                 },
                 "onHostMaintenance": {
-                    "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Setting Instance Scheduling Options.",
+                    "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM availability policies.",
                     "enum": [
                         "MIGRATE",
                         "TERMINATE"
diff --git a/discovery/googleapis/connectors__v1.json b/discovery/googleapis/connectors__v1.json
index ca330d4..09e3a89 100644
--- a/discovery/googleapis/connectors__v1.json
+++ b/discovery/googleapis/connectors__v1.json
@@ -1053,7 +1053,7 @@
             }
         }
     },
-    "revision": "20211217",
+    "revision": "20220120",
     "rootUrl": "https://connectors.googleapis.com/",
     "schemas": {
         "AuditConfig": {
@@ -1328,10 +1328,6 @@
                     "readOnly": true,
                     "type": "string"
                 },
-                "inactive": {
-                    "description": "Optional. Inactive indicates the connection is active to use or not.",
-                    "type": "boolean"
-                },
                 "labels": {
                     "additionalProperties": {
                         "type": "string"
@@ -1362,6 +1358,10 @@
                     "description": "Output only. Current status of the connection.",
                     "readOnly": true
                 },
+                "suspended": {
+                    "description": "Optional. Suspended indicates if a user has suspended a connection or not.",
+                    "type": "boolean"
+                },
                 "updateTime": {
                     "description": "Output only. Updated time.",
                     "format": "google-datetime",
diff --git a/discovery/googleapis/contactcenterinsights__v1.json b/discovery/googleapis/contactcenterinsights__v1.json
index a423846..e7570e1 100644
--- a/discovery/googleapis/contactcenterinsights__v1.json
+++ b/discovery/googleapis/contactcenterinsights__v1.json
@@ -1273,7 +1273,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://contactcenterinsights.googleapis.com/",
     "schemas": {
         "GoogleCloudContactcenterinsightsV1Analysis": {
diff --git a/discovery/googleapis/container__v1.json b/discovery/googleapis/container__v1.json
index a309cdc..3caecb3 100644
--- a/discovery/googleapis/container__v1.json
+++ b/discovery/googleapis/container__v1.json
@@ -205,7 +205,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "The name (project, location, cluster id) of the cluster to complete IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                            "description": "The name (project, location, cluster name) of the cluster to complete IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                             "required": true,
@@ -341,7 +341,7 @@
                                     ],
                                     "parameters": {
                                         "parent": {
-                                            "description": "The cluster (project, location, cluster id) to get keys for. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                            "description": "The cluster (project, location, cluster name) to get keys for. Specified in the format `projects/*/locations/*/clusters/*`.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                             "required": true,
@@ -426,7 +426,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "The name (project, location, cluster id) of the cluster to set legacy abac. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                            "description": "The name (project, location, cluster name) of the cluster to set legacy abac. Specified in the format `projects/*/locations/*/clusters/*`.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                             "required": true,
@@ -510,7 +510,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "The name (project, location, cluster id) of the cluster to set maintenance policy. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                            "description": "The name (project, location, cluster name) of the cluster to set maintenance policy. Specified in the format `projects/*/locations/*/clusters/*`.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                             "required": true,
@@ -594,7 +594,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "The name (project, location, cluster id) of the cluster to set networking policy. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                            "description": "The name (project, location, cluster name) of the cluster to set networking policy. Specified in the format `projects/*/locations/*/clusters/*`.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                             "required": true,
@@ -622,7 +622,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "The name (project, location, cluster id) of the cluster to set labels. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                            "description": "The name (project, location, cluster name) of the cluster to set labels. Specified in the format `projects/*/locations/*/clusters/*`.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                             "required": true,
@@ -650,7 +650,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "The name (project, location, cluster id) of the cluster to start IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                            "description": "The name (project, location, cluster name) of the cluster to start IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                             "required": true,
@@ -738,7 +738,7 @@
                                             ],
                                             "parameters": {
                                                 "parent": {
-                                                    "description": "The parent (project, location, cluster id) where the node pool will be created. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                                    "description": "The parent (project, location, cluster name) where the node pool will be created. Specified in the format `projects/*/locations/*/clusters/*`.",
                                                     "location": "path",
                                                     "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                                     "required": true,
@@ -861,7 +861,7 @@
                                                     "type": "string"
                                                 },
                                                 "parent": {
-                                                    "description": "The parent (project, location, cluster id) where the node pools will be listed. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                                    "description": "The parent (project, location, cluster name) where the node pools will be listed. Specified in the format `projects/*/locations/*/clusters/*`.",
                                                     "location": "path",
                                                     "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                                     "required": true,
@@ -1040,7 +1040,7 @@
                                             ],
                                             "parameters": {
                                                 "parent": {
-                                                    "description": "The cluster (project, location, cluster id) to get the discovery document for. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                                    "description": "The cluster (project, location, cluster name) to get the discovery document for. Specified in the format `projects/*/locations/*/clusters/*`.",
                                                     "location": "path",
                                                     "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
                                                     "required": true,
@@ -2107,7 +2107,7 @@
                                                     "type": "string"
                                                 },
                                                 "parent": {
-                                                    "description": "The parent (project, location, cluster id) where the node pools will be listed. Specified in the format `projects/*/locations/*/clusters/*`.",
+                                                    "description": "The parent (project, location, cluster name) where the node pools will be listed. Specified in the format `projects/*/locations/*/clusters/*`.",
                                                     "location": "query",
                                                     "type": "string"
                                                 },
@@ -2457,7 +2457,7 @@
             }
         }
     },
-    "revision": "20220110",
+    "revision": "20220116",
     "rootUrl": "https://container.googleapis.com/",
     "schemas": {
         "AcceleratorConfig": {
@@ -2760,7 +2760,7 @@
                 },
                 "confidentialNodes": {
                     "$ref": "ConfidentialNodes",
-                    "description": "Configuration of Confidential Nodes"
+                    "description": "Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled."
                 },
                 "createTime": {
                     "description": "[Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
@@ -2812,6 +2812,10 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "identityServiceConfig": {
+                    "$ref": "IdentityServiceConfig",
+                    "description": "Configuration for Identity Service component."
+                },
                 "initialClusterVersion": {
                     "description": "The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"\",\"-\": picks the default Kubernetes version",
                     "type": "string"
@@ -3096,6 +3100,10 @@
                     "$ref": "GcfsConfig",
                     "description": "The desired GCFS config for the cluster"
                 },
+                "desiredIdentityServiceConfig": {
+                    "$ref": "IdentityServiceConfig",
+                    "description": "The desired Identity Service component configuration."
+                },
                 "desiredImageType": {
                     "description": "The desired image type for the node pool. NOTE: Set the \"desired_node_pool\" field as well.",
                     "type": "string"
@@ -3215,7 +3223,7 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "The name (project, location, cluster id) of the cluster to complete IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.",
+                    "description": "The name (project, location, cluster name) of the cluster to complete IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.",
                     "type": "string"
                 },
                 "projectId": {
@@ -3234,7 +3242,7 @@
             "id": "ConfidentialNodes",
             "properties": {
                 "enabled": {
-                    "description": "Whether Confidential Nodes feature is enabled for all nodes in this cluster.",
+                    "description": "Whether Confidential Nodes feature is enabled.",
                     "type": "boolean"
                 }
             },
@@ -3298,7 +3306,7 @@
                     "description": "Required. The node pool to create."
                 },
                 "parent": {
-                    "description": "The parent (project, location, cluster id) where the node pool will be created. Specified in the format `projects/*/locations/*/clusters/*`.",
+                    "description": "The parent (project, location, cluster name) where the node pool will be created. Specified in the format `projects/*/locations/*/clusters/*`.",
                     "type": "string"
                 },
                 "projectId": {
@@ -3660,6 +3668,17 @@
             },
             "type": "object"
         },
+        "IdentityServiceConfig": {
+            "description": "IdentityServiceConfig is configuration for Identity Service which allows customers to use external identity providers with the K8S API",
+            "id": "IdentityServiceConfig",
+            "properties": {
+                "enabled": {
+                    "description": "Whether to enable the Identity Service component",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "IntraNodeVisibilityConfig": {
             "description": "IntraNodeVisibilityConfig contains the desired config of the intra-node visibility on this cluster.",
             "id": "IntraNodeVisibilityConfig",
@@ -5096,7 +5115,7 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "The name (project, location, cluster id) of the cluster to set labels. Specified in the format `projects/*/locations/*/clusters/*`.",
+                    "description": "The name (project, location, cluster name) of the cluster to set labels. Specified in the format `projects/*/locations/*/clusters/*`.",
                     "type": "string"
                 },
                 "projectId": {
@@ -5130,7 +5149,7 @@
                     "type": "boolean"
                 },
                 "name": {
-                    "description": "The name (project, location, cluster id) of the cluster to set legacy abac. Specified in the format `projects/*/locations/*/clusters/*`.",
+                    "description": "The name (project, location, cluster name) of the cluster to set legacy abac. Specified in the format `projects/*/locations/*/clusters/*`.",
                     "type": "string"
                 },
                 "projectId": {
@@ -5214,7 +5233,7 @@
                     "description": "Required. The maintenance policy to be set for the cluster. An empty field clears the existing maintenance policy."
                 },
                 "name": {
-                    "description": "The name (project, location, cluster id) of the cluster to set maintenance policy. Specified in the format `projects/*/locations/*/clusters/*`.",
+                    "description": "The name (project, location, cluster name) of the cluster to set maintenance policy. Specified in the format `projects/*/locations/*/clusters/*`.",
                     "type": "string"
                 },
                 "projectId": {
@@ -5307,7 +5326,7 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "The name (project, location, cluster id) of the cluster to set networking policy. Specified in the format `projects/*/locations/*/clusters/*`.",
+                    "description": "The name (project, location, cluster name) of the cluster to set networking policy. Specified in the format `projects/*/locations/*/clusters/*`.",
                     "type": "string"
                 },
                 "networkPolicy": {
@@ -5454,7 +5473,7 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "The name (project, location, cluster id) of the cluster to start IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.",
+                    "description": "The name (project, location, cluster name) of the cluster to start IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.",
                     "type": "string"
                 },
                 "projectId": {
diff --git a/discovery/googleapis/containeranalysis__v1.json b/discovery/googleapis/containeranalysis__v1.json
index 518bfbc..8dff677 100644
--- a/discovery/googleapis/containeranalysis__v1.json
+++ b/discovery/googleapis/containeranalysis__v1.json
@@ -753,7 +753,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220211",
     "rootUrl": "https://containeranalysis.googleapis.com/",
     "schemas": {
         "AliasContext": {
@@ -2009,32 +2009,6 @@
                 "name": {
                     "description": "The `WorkerPool` resource to execute the build on. You must have `cloudbuild.workerpools.use` on the project hosting the WorkerPool. Format projects/{project}/locations/{location}/workerPools/{workerPoolId}",
                     "type": "string"
-                },
-                "workerConfig": {
-                    "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOptionWorkerConfig",
-                    "description": "Configuration per workload."
-                }
-            },
-            "type": "object"
-        },
-        "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOptionWorkerConfig": {
-            "description": "Configuration per workload for both Private Pools and Hybrid Pools.",
-            "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOptionWorkerConfig",
-            "properties": {
-                "diskSizeGb": {
-                    "description": "The disk size (in GB) which is requested for the build container. If unset, a value of 10 GB will be used.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "memoryGb": {
-                    "description": "The memory (in GB) which is requested for the build container. If unset, a value of 4 GB will be used.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "vcpuCount": {
-                    "description": "The number of vCPUs which are requested for the build container. If unset, a value of 1 will be used.",
-                    "format": "float",
-                    "type": "number"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/content__v2.1.json b/discovery/googleapis/content__v2.1.json
index 3e90e51..4f114e1 100644
--- a/discovery/googleapis/content__v2.1.json
+++ b/discovery/googleapis/content__v2.1.json
@@ -5813,7 +5813,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220209",
     "rootUrl": "https://shoppingcontent.googleapis.com/",
     "schemas": {
         "Account": {
@@ -7935,7 +7935,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -8131,13 +8131,13 @@
                     "description": "If program is successfully onboarded for at least one region.",
                     "enum": [
                         "PROGRAM_STATE_UNSPECIFIED",
-                        "ONBOARDED",
-                        "NOT_ONBOARDED"
+                        "ENABLED",
+                        "NOT_ENABLED"
                     ],
                     "enumDescriptions": [
                         "State is not known.",
-                        "Program is onboarded for at least one country.",
-                        "Program is not onboarded for any country."
+                        "Program is enabled for at least one country.",
+                        "Program is not enabled for any country."
                     ],
                     "type": "string"
                 }
@@ -15518,13 +15518,13 @@
                     "description": "If program is successfully onboarded for at least one region.",
                     "enum": [
                         "PROGRAM_STATE_UNSPECIFIED",
-                        "ONBOARDED",
-                        "NOT_ONBOARDED"
+                        "ENABLED",
+                        "NOT_ENABLED"
                     ],
                     "enumDescriptions": [
                         "State is not known.",
-                        "Program is onboarded for at least one country.",
-                        "Program is not onboarded for any country."
+                        "Program is enabled for at least one country.",
+                        "Program is not enabled for any country."
                     ],
                     "type": "string"
                 }
diff --git a/discovery/googleapis/customsearch__v1.json b/discovery/googleapis/customsearch__v1.json
index 1afcfa4..56ac88e 100644
--- a/discovery/googleapis/customsearch__v1.json
+++ b/discovery/googleapis/customsearch__v1.json
@@ -673,7 +673,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://customsearch.googleapis.com/",
     "schemas": {
         "Promotion": {
diff --git a/discovery/googleapis/datacatalog__v1.json b/discovery/googleapis/datacatalog__v1.json
index cd59f90..5798f72 100644
--- a/discovery/googleapis/datacatalog__v1.json
+++ b/discovery/googleapis/datacatalog__v1.json
@@ -1140,7 +1140,7 @@
                                             "type": "string"
                                         },
                                         "updateMask": {
-                                            "description": "Names of fields whose values to overwrite on a tag template. Currently, only `display_name` and `is_publicly_readable` can be overwritten. If this parameter is absent or empty, all modifiable fields are overwritten. If such fields are non-required and omitted in the request body, their values are emptied. Note: Updating the `is_publicly_readable` field may require up to 12 hours to take effect in search results. Additionally, it also requires the `tagTemplates.getIamPolicy` and `tagTemplates.setIamPolicy` permissions.",
+                                            "description": "Names of fields whose values to overwrite on a tag template. Currently, only `display_name` and `is_publicly_readable` can be overwritten. If this parameter is absent or empty, all modifiable fields are overwritten. If such fields are non-required and omitted in the request body, their values are emptied. Note: Updating the `is_publicly_readable` field may require up to 12 hours to take effect in search results.",
                                             "format": "google-fieldmask",
                                             "location": "query",
                                             "type": "string"
@@ -1951,7 +1951,7 @@
             }
         }
     },
-    "revision": "20220117",
+    "revision": "20220209",
     "rootUrl": "https://datacatalog.googleapis.com/",
     "schemas": {
         "Binding": {
@@ -2264,6 +2264,15 @@
                         "BigQuery service."
                     ],
                     "type": "string"
+                },
+                "sourceEntry": {
+                    "description": "Output only. Data Catalog entry name, if applicable.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "storageProperties": {
+                    "$ref": "GoogleCloudDatacatalogV1StorageProperties",
+                    "description": "Detailed properties of the underlying storage."
                 }
             },
             "type": "object"
@@ -2283,6 +2292,10 @@
             "description": "Specification that applies to a table resource. Valid only for entries with the `TABLE` type.",
             "id": "GoogleCloudDatacatalogV1DatabaseTableSpec",
             "properties": {
+                "dataplexTable": {
+                    "$ref": "GoogleCloudDatacatalogV1DataplexTableSpec",
+                    "description": "Fields specific to a Dataplex table and present only in the Dataplex table entries."
+                },
                 "type": {
                     "description": "Type of this table.",
                     "enum": [
@@ -2300,6 +2313,99 @@
             },
             "type": "object"
         },
+        "GoogleCloudDatacatalogV1DataplexExternalTable": {
+            "description": "External table registered by Dataplex. Dataplex publishes data discovered from an asset into multiple other systems (BigQuery, DPMS) in form of tables. We call them \"external tables\". External tables are also synced into the Data Catalog. This message contains pointers to those external tables (fully qualified name, resource name et cetera) within the Data Catalog.",
+            "id": "GoogleCloudDatacatalogV1DataplexExternalTable",
+            "properties": {
+                "dataCatalogEntry": {
+                    "description": "Name of the Data Catalog entry representing the external table.",
+                    "type": "string"
+                },
+                "fullyQualifiedName": {
+                    "description": "Fully qualified name (FQN) of the external table.",
+                    "type": "string"
+                },
+                "googleCloudResource": {
+                    "description": "Google Cloud resource name of the external table.",
+                    "type": "string"
+                },
+                "system": {
+                    "description": "Service in which the external table is registered.",
+                    "enum": [
+                        "INTEGRATED_SYSTEM_UNSPECIFIED",
+                        "BIGQUERY",
+                        "CLOUD_PUBSUB",
+                        "DATAPROC_METASTORE",
+                        "DATAPLEX"
+                    ],
+                    "enumDescriptions": [
+                        "Default unknown system.",
+                        "BigQuery.",
+                        "Cloud Pub/Sub.",
+                        "Dataproc Metastore.",
+                        "Dataplex."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDatacatalogV1DataplexFilesetSpec": {
+            "description": "Entry specyfication for a Dataplex fileset.",
+            "id": "GoogleCloudDatacatalogV1DataplexFilesetSpec",
+            "properties": {
+                "dataplexSpec": {
+                    "$ref": "GoogleCloudDatacatalogV1DataplexSpec",
+                    "description": "Common Dataplex fields."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDatacatalogV1DataplexSpec": {
+            "description": "Common Dataplex fields.",
+            "id": "GoogleCloudDatacatalogV1DataplexSpec",
+            "properties": {
+                "asset": {
+                    "description": "Fully qualified resource name of an asset in Dataplex, to which the underlying data source (Cloud Storage bucket or BigQuery dataset) of the entity is attached.",
+                    "type": "string"
+                },
+                "compressionFormat": {
+                    "description": "Compression format of the data, e.g., zip, gzip etc.",
+                    "type": "string"
+                },
+                "dataFormat": {
+                    "$ref": "GoogleCloudDatacatalogV1PhysicalSchema",
+                    "description": "Format of the data."
+                },
+                "projectId": {
+                    "description": "Project ID of the underlying Cloud Storage or BigQuery data. Note that this may not be the same project as the correspondingly Dataplex lake / zone / asset.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDatacatalogV1DataplexTableSpec": {
+            "description": "Entry specification for a Dataplex table.",
+            "id": "GoogleCloudDatacatalogV1DataplexTableSpec",
+            "properties": {
+                "dataplexSpec": {
+                    "$ref": "GoogleCloudDatacatalogV1DataplexSpec",
+                    "description": "Common Dataplex fields."
+                },
+                "externalTables": {
+                    "description": "List of external tables registered by Dataplex in other systems based on the same underlying data. External tables allow to query this data in those systems.",
+                    "items": {
+                        "$ref": "GoogleCloudDatacatalogV1DataplexExternalTable"
+                    },
+                    "type": "array"
+                },
+                "userManaged": {
+                    "description": "Indicates if the table schema is managed by the user or not.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudDatacatalogV1Entry": {
             "description": "Entry metadata. A Data Catalog entry represents another resource in Google Cloud Platform (such as a BigQuery dataset or a Pub/Sub topic) or outside of it. You can use the `linked_resource` field in the entry resource to refer to the original resource ID of the source system. An entry resource contains resource details, for example, its schema. Additionally, you can attach flexible metadata to an entry in the form of a Tag.",
             "id": "GoogleCloudDatacatalogV1Entry",
@@ -2314,7 +2420,7 @@
                 },
                 "businessContext": {
                     "$ref": "GoogleCloudDatacatalogV1BusinessContext",
-                    "description": "Business Context of the entry."
+                    "description": "Business Context of the entry. Not supported for BigQuery datasets"
                 },
                 "dataSource": {
                     "$ref": "GoogleCloudDatacatalogV1DataSource",
@@ -2337,6 +2443,10 @@
                     "description": "Display name of an entry. The name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), and can't start or end with spaces. The maximum size is 200 bytes when encoded in UTF-8. Default value is an empty string.",
                     "type": "string"
                 },
+                "filesetSpec": {
+                    "$ref": "GoogleCloudDatacatalogV1FilesetSpec",
+                    "description": "Specification that applies to a fileset resource. Valid only for entries with the `FILESET` type."
+                },
                 "fullyQualifiedName": {
                     "description": "Fully qualified name (FQN) of the resource. Set automatically for entries representing resources from synced systems. Settable only during creation and read-only afterwards. Can be used for search and lookup of the entries. FQNs take two forms: * For non-regionalized resources: `{SYSTEM}:{PROJECT}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}` * For regionalized resources: `{SYSTEM}:{PROJECT}.{LOCATION_ID}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}` Example for a DPMS table: `dataproc_metastore:{PROJECT_ID}.{LOCATION_ID}.{INSTANCE_ID}.{DATABASE_ID}.{TABLE_ID}`",
                     "type": "string"
@@ -2351,13 +2461,15 @@
                         "INTEGRATED_SYSTEM_UNSPECIFIED",
                         "BIGQUERY",
                         "CLOUD_PUBSUB",
-                        "DATAPROC_METASTORE"
+                        "DATAPROC_METASTORE",
+                        "DATAPLEX"
                     ],
                     "enumDescriptions": [
                         "Default unknown system.",
                         "BigQuery.",
                         "Cloud Pub/Sub.",
-                        "Dataproc Metastore."
+                        "Dataproc Metastore.",
+                        "Dataplex."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -2407,6 +2519,8 @@
                         "DATABASE",
                         "DATA_SOURCE_CONNECTION",
                         "ROUTINE",
+                        "LAKE",
+                        "ZONE",
                         "SERVICE"
                     ],
                     "enumDescriptions": [
@@ -2419,6 +2533,8 @@
                         "A database.",
                         "Output only. Connection to a data source. For example, a BigQuery connection.",
                         "Output only. Routine, for example, a BigQuery routine.",
+                        "A Dataproc Metastore lake.",
+                        "A Dataproc Metastore zone.",
                         "A service, for example, a Dataproc Metastore service."
                     ],
                     "type": "string"
@@ -2541,6 +2657,17 @@
             },
             "type": "object"
         },
+        "GoogleCloudDatacatalogV1FilesetSpec": {
+            "description": "Specification that applies to a fileset. Valid only for entries with the 'FILESET' type.",
+            "id": "GoogleCloudDatacatalogV1FilesetSpec",
+            "properties": {
+                "dataplexFileset": {
+                    "$ref": "GoogleCloudDatacatalogV1DataplexFilesetSpec",
+                    "description": "Fields specific to a Dataplex fileset and present only in the Dataplex fileset entries."
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudDatacatalogV1GcsFileSpec": {
             "description": "Specification of a single file in Cloud Storage.",
             "id": "GoogleCloudDatacatalogV1GcsFileSpec",
@@ -2756,6 +2883,88 @@
             },
             "type": "object"
         },
+        "GoogleCloudDatacatalogV1PhysicalSchema": {
+            "description": "Native schema used by a resource represented as an entry. Used by query engines for deserializing and parsing source data.",
+            "id": "GoogleCloudDatacatalogV1PhysicalSchema",
+            "properties": {
+                "avro": {
+                    "$ref": "GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema",
+                    "description": "Schema in Avro JSON format."
+                },
+                "csv": {
+                    "$ref": "GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema",
+                    "description": "Marks a CSV-encoded data source."
+                },
+                "orc": {
+                    "$ref": "GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema",
+                    "description": "Marks an ORC-encoded data source."
+                },
+                "parquet": {
+                    "$ref": "GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema",
+                    "description": "Marks a Parquet-encoded data source."
+                },
+                "protobuf": {
+                    "$ref": "GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema",
+                    "description": "Schema in protocol buffer format."
+                },
+                "thrift": {
+                    "$ref": "GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema",
+                    "description": "Schema in Thrift format."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema": {
+            "description": "Schema in Avro JSON format.",
+            "id": "GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema",
+            "properties": {
+                "text": {
+                    "description": "JSON source of the Avro schema.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema": {
+            "description": "Marks a CSV-encoded data source.",
+            "id": "GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema": {
+            "description": "Marks an ORC-encoded data source.",
+            "id": "GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema": {
+            "description": "Marks a Parquet-encoded data source.",
+            "id": "GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema": {
+            "description": "Schema in protocol buffer format.",
+            "id": "GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema",
+            "properties": {
+                "text": {
+                    "description": "Protocol buffer source of the schema.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema": {
+            "description": "Schema in Thrift format.",
+            "id": "GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema",
+            "properties": {
+                "text": {
+                    "description": "Thrift IDL source of the schema.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudDatacatalogV1PolicyTag": {
             "description": "Denotes one policy tag in a taxonomy, for example, SSN. Policy tags can be defined in a hierarchy. For example: ``` + Geolocation + LatLong + City + ZipCode ``` Where the \"Geolocation\" policy tag contains three children.",
             "id": "GoogleCloudDatacatalogV1PolicyTag",
@@ -2961,7 +3170,7 @@
                     "type": "array"
                 },
                 "includePublicTagTemplates": {
-                    "description": "Optional. If `true`, include public tag templates in the search results. By default, they are included only if you have explicit permissions on them to view them. For example, if you are the owner. Other scope fields, for example, `include_org_ids`, still restrict the returned public tag templates and at least one of them is required.",
+                    "description": "Optional. This field is deprecated. The search mechanism for public and private tag templates is the same.",
                     "type": "boolean"
                 },
                 "restrictedLocations": {
@@ -3025,13 +3234,15 @@
                         "INTEGRATED_SYSTEM_UNSPECIFIED",
                         "BIGQUERY",
                         "CLOUD_PUBSUB",
-                        "DATAPROC_METASTORE"
+                        "DATAPROC_METASTORE",
+                        "DATAPLEX"
                     ],
                     "enumDescriptions": [
                         "Default unknown system.",
                         "BigQuery.",
                         "Cloud Pub/Sub.",
-                        "Dataproc Metastore."
+                        "Dataproc Metastore.",
+                        "Dataplex."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -3151,6 +3362,24 @@
             "properties": {},
             "type": "object"
         },
+        "GoogleCloudDatacatalogV1StorageProperties": {
+            "description": "Details the properties of the underlying storage.",
+            "id": "GoogleCloudDatacatalogV1StorageProperties",
+            "properties": {
+                "filePattern": {
+                    "description": "Patterns to identify a set of files for this fileset. Examples of a valid `file_pattern`: * `gs://bucket_name/dir/*`: matches all files in the `bucket_name/dir` directory * `gs://bucket_name/dir/**`: matches all files in the `bucket_name/dir` and all subdirectories recursively * `gs://bucket_name/file*`: matches files prefixed by `file` in `bucket_name` * `gs://bucket_name/??.txt`: matches files with two characters followed by `.txt` in `bucket_name` * `gs://bucket_name/[aeiou].txt`: matches files that contain a single vowel character followed by `.txt` in `bucket_name` * `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... or `m` followed by `.txt` in `bucket_name` * `gs://bucket_name/a/*/b`: matches all files in `bucket_name` that match the `a/*/b` pattern, such as `a/c/b`, `a/d/b` * `gs://another_bucket/a.txt`: matches `gs://another_bucket/a.txt`",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "fileType": {
+                    "description": "File type in MIME format, for example, `text/plain`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudDatacatalogV1SystemTimestamps": {
             "description": "Timestamps associated with this resource in a particular system.",
             "id": "GoogleCloudDatacatalogV1SystemTimestamps",
@@ -3288,7 +3517,7 @@
                     "type": "object"
                 },
                 "isPubliclyReadable": {
-                    "description": "Indicates whether this is a public tag template. Every user has view access to a *public* tag template by default. This means that: * Every user can use this tag template to tag an entry. * If an entry is tagged using the tag template, the tag is always shown in the response to ``ListTags`` called on the entry. * To get the template using the GetTagTemplate method, you need view access either on the project or the organization the tag template resides in but no other permission is needed. * Operations on the tag template other than viewing (for example, editing IAM policies) follow standard IAM structures. Tags created with a public tag template are referred to as public tags. You can search for a public tag by value with a simple search query instead of using a ``tag:`` predicate. Public tag templates may not appear in search results depending on scope, see: include_public_tag_templates Note: If an [IAM domain restriction](https://cloud.google.com/resource-manager/docs/organization-policy/restricting-domains) is configured in the tag template's location, the public access will not be enabled but the simple search for tag values will still work.",
+                    "description": "Indicates whether tags created with this template are public. Public tags do not require tag template access to appear in ListTags API response. Additionally, you can search for a public tag by value with a simple search query instead of using a ``tag:`` predicate.",
                     "type": "boolean"
                 },
                 "name": {
diff --git a/discovery/googleapis/datamigration__v1.json b/discovery/googleapis/datamigration__v1.json
index e806800..f8af08e 100644
--- a/discovery/googleapis/datamigration__v1.json
+++ b/discovery/googleapis/datamigration__v1.json
@@ -1047,7 +1047,7 @@
             }
         }
     },
-    "revision": "20220103",
+    "revision": "20220119",
     "rootUrl": "https://datamigration.googleapis.com/",
     "schemas": {
         "AuditConfig": {
@@ -1321,12 +1321,14 @@
                     "enum": [
                         "DATABASE_PROVIDER_UNSPECIFIED",
                         "CLOUDSQL",
-                        "RDS"
+                        "RDS",
+                        "AURORA"
                     ],
                     "enumDescriptions": [
                         "The database provider is unknown.",
                         "CloudSQL runs the database.",
-                        "RDS runs the database."
+                        "RDS runs the database.",
+                        "Amazon Aurora."
                     ],
                     "type": "string"
                 },
@@ -1386,12 +1388,14 @@
                     "enum": [
                         "DATABASE_PROVIDER_UNSPECIFIED",
                         "CLOUDSQL",
-                        "RDS"
+                        "RDS",
+                        "AURORA"
                     ],
                     "enumDescriptions": [
                         "The database provider is unknown.",
                         "CloudSQL runs the database.",
-                        "RDS runs the database."
+                        "RDS runs the database.",
+                        "Amazon Aurora."
                     ],
                     "type": "string"
                 }
diff --git a/discovery/googleapis/datapipelines__v1.json b/discovery/googleapis/datapipelines__v1.json
index acdca5d..3da74af 100644
--- a/discovery/googleapis/datapipelines__v1.json
+++ b/discovery/googleapis/datapipelines__v1.json
@@ -369,7 +369,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220205",
     "rootUrl": "https://datapipelines.googleapis.com/",
     "schemas": {
         "GoogleCloudDatapipelinesV1DataflowJobDetails": {
diff --git a/discovery/googleapis/dataplex__v1.json b/discovery/googleapis/dataplex__v1.json
new file mode 100644
index 0000000..c7f8318
--- /dev/null
+++ b/discovery/googleapis/dataplex__v1.json
@@ -0,0 +1,5361 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://dataplex.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Cloud Dataplex",
+    "description": "Dataplex API is used to manage the lifecycle of data lakes.",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/dataplex/docs",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "dataplex:v1",
+    "kind": "discovery#restDescription",
+    "name": "dataplex",
+    "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": {
+        "projects": {
+            "resources": {
+                "locations": {
+                    "methods": {
+                        "get": {
+                            "description": "Gets information about a location.",
+                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+                            "httpMethod": "GET",
+                            "id": "dataplex.projects.locations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Resource name for the location.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}",
+                            "response": {
+                                "$ref": "GoogleCloudLocationLocation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "flatPath": "v1/projects/{projectsId}/locations",
+                            "httpMethod": "GET",
+                            "id": "dataplex.projects.locations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like \"displayName=tokyo\", and is documented in more detail in AIP-160 (https://google.aip.dev/160).",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The maximum number of results to return. If not set, the service selects a default.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "A page token received from the next_page_token field in the response. Send that page token to receive the subsequent page.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+name}/locations",
+                            "response": {
+                                "$ref": "GoogleCloudLocationListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "lakes": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates a lake resource.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes",
+                                    "httpMethod": "POST",
+                                    "id": "dataplex.projects.locations.lakes.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "lakeId": {
+                                            "description": "Required. Lake identifier. This ID will be used to generate names such as database and dataset names when publishing metadata to Hive Metastore and BigQuery. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must end with a number or a letter. * Must be between 1-63 characters. * Must be unique within the customer project / location.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The resource name of the lake location, of the form: projects/{project_number}/locations/{location_id} where location_id refers to a GCP region.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "validateOnly": {
+                                            "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/lakes",
+                                    "request": {
+                                        "$ref": "GoogleCloudDataplexV1Lake"
+                                    },
+                                    "response": {
+                                        "$ref": "GoogleLongrunningOperation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a lake resource. All zones within the lake must be deleted before the lake can be deleted.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "dataplex.projects.locations.lakes.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The resource name of the lake: projects/{project_number}/locations/{location_id}/lakes/{lake_id}",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "GoogleLongrunningOperation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Retrieves a lake resource.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}",
+                                    "httpMethod": "GET",
+                                    "id": "dataplex.projects.locations.lakes.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The resource name of the lake: projects/{project_number}/locations/{location_id}/lakes/{lake_id}",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "GoogleCloudDataplexV1Lake"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "getIamPolicy": {
+                                    "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}:getIamPolicy",
+                                    "httpMethod": "GET",
+                                    "id": "dataplex.projects.locations.lakes.getIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "options.requestedPolicyVersion": {
+                                            "description": "Optional. The maximum policy version that will be used to format the policy.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset.The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:getIamPolicy",
+                                    "response": {
+                                        "$ref": "GoogleIamV1Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists lake resources in a project and location.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes",
+                                    "httpMethod": "GET",
+                                    "id": "dataplex.projects.locations.lakes.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "Optional. Filter request.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "Optional. Order by fields for the result.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Optional. Maximum number of Lakes to return. The service may return fewer than this value. If unspecified, at most 10 lakes will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "Optional. Page token received from a previous ListLakes call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListLakes must match the call that provided the page token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The resource name of the lake location, of the form: projects/{project_number}/locations/{location_id} where location_id refers to a GCP region.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/lakes",
+                                    "response": {
+                                        "$ref": "GoogleCloudDataplexV1ListLakesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates a lake resource.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "dataplex.projects.locations.lakes.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Output only. The relative resource name of the lake, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "Required. Mask of fields to update.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "validateOnly": {
+                                            "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                            "location": "query",
+                                            "type": "boolean"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "request": {
+                                        "$ref": "GoogleCloudDataplexV1Lake"
+                                    },
+                                    "response": {
+                                        "$ref": "GoogleLongrunningOperation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "setIamPolicy": {
+                                    "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}:setIamPolicy",
+                                    "httpMethod": "POST",
+                                    "id": "dataplex.projects.locations.lakes.setIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:setIamPolicy",
+                                    "request": {
+                                        "$ref": "GoogleIamV1SetIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "GoogleIamV1Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "testIamPermissions": {
+                                    "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}:testIamPermissions",
+                                    "httpMethod": "POST",
+                                    "id": "dataplex.projects.locations.lakes.testIamPermissions",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:testIamPermissions",
+                                    "request": {
+                                        "$ref": "GoogleIamV1TestIamPermissionsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "GoogleIamV1TestIamPermissionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            },
+                            "resources": {
+                                "actions": {
+                                    "methods": {
+                                        "list": {
+                                            "description": "Lists action resources in a lake.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/actions",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.actions.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "pageSize": {
+                                                    "description": "Optional. Maximum number of actions to return. The service may return fewer than this value. If unspecified, at most 10 actions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Optional. Page token received from a previous ListLakeActions call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListLakeActions must match the call that provided the page token.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The resource name of the parent lake: projects/{project_number}/locations/{location_id}/lakes/{lake_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/actions",
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1ListActionsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "content": {
+                                    "methods": {
+                                        "getIamPolicy": {
+                                            "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/content/{contentId}:getIamPolicy",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.content.getIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "options.requestedPolicyVersion": {
+                                                    "description": "Optional. The maximum policy version that will be used to format the policy.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset.The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/content/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:getIamPolicy",
+                                            "response": {
+                                                "$ref": "GoogleIamV1Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "setIamPolicy": {
+                                            "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/content/{contentId}:setIamPolicy",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.content.setIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/content/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:setIamPolicy",
+                                            "request": {
+                                                "$ref": "GoogleIamV1SetIamPolicyRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleIamV1Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "testIamPermissions": {
+                                            "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/content/{contentId}:testIamPermissions",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.content.testIamPermissions",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/content/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:testIamPermissions",
+                                            "request": {
+                                                "$ref": "GoogleIamV1TestIamPermissionsRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleIamV1TestIamPermissionsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "contentitems": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Create a content.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/contentitems",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.contentitems.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "Required. The resource name of the parent lake: projects/{project_id}/locations/{location_id}/lakes/{lake_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "validateOnly": {
+                                                    "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                    "location": "query",
+                                                    "type": "boolean"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/contentitems",
+                                            "request": {
+                                                "$ref": "GoogleCloudDataplexV1Content"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1Content"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Delete a content.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/contentitems/{contentitemsId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "dataplex.projects.locations.lakes.contentitems.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The resource name of the content: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/contentitems/.*$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "Empty"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Get a content resource.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/contentitems/{contentitemsId}",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.contentitems.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The resource name of the content: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/contentitems/.*$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "view": {
+                                                    "description": "Optional. Specify content view to make a partial request.",
+                                                    "enum": [
+                                                        "CONTENT_VIEW_UNSPECIFIED",
+                                                        "BASIC",
+                                                        "FULL"
+                                                    ],
+                                                    "enumDescriptions": [
+                                                        "Content view not specified. Defaults to BASIC. The API will default to the BASIC view.",
+                                                        "Will not return the data_text field.",
+                                                        "Returns the complete proto."
+                                                    ],
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1Content"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "List content.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/contentitems",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.contentitems.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "filter": {
+                                                    "description": "Optional. Filter request. Filters are case-sensitive. The following formats are supported:labels.key1 = \"value1\" labels:key1 type = \"NOTEBOOK\" type = \"SQL_SCRIPT\"These restrictions can be coinjoined with AND, OR and NOT conjunctions.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Optional. Maximum number of content to return. The service may return fewer than this value. If unspecified, at most 10 content will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Optional. Page token received from a previous ListContent call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListContent must match the call that provided the page token.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The resource name of the parent lake: projects/{project_id}/locations/{location_id}/lakes/{lake_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/contentitems",
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1ListContentResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "patch": {
+                                            "description": "Update a content. Only supports full resource update.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/contentitems/{contentitemsId}",
+                                            "httpMethod": "PATCH",
+                                            "id": "dataplex.projects.locations.lakes.contentitems.patch",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Output only. The relative resource name of the content, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/contentitems/.*$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "updateMask": {
+                                                    "description": "Required. Mask of fields to update.",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "validateOnly": {
+                                                    "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                    "location": "query",
+                                                    "type": "boolean"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "request": {
+                                                "$ref": "GoogleCloudDataplexV1Content"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1Content"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                },
+                                "environments": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Create an environment resource.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/environments",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.environments.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "environmentId": {
+                                                    "description": "Required. Environment identifier. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the lake.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The resource name of the parent lake: projects/{project_id}/locations/{location_id}/lakes/{lake_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "validateOnly": {
+                                                    "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                    "location": "query",
+                                                    "type": "boolean"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/environments",
+                                            "request": {
+                                                "$ref": "GoogleCloudDataplexV1Environment"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleLongrunningOperation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Delete the environment resource. All the child resources must have been deleted before environment deletion can be initiated.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/environments/{environmentsId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "dataplex.projects.locations.lakes.environments.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The resource name of the environment: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environments/{environment_id}`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/environments/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "GoogleLongrunningOperation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Get environment resource.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/environments/{environmentsId}",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.environments.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The resource name of the environment: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environments/{environment_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/environments/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1Environment"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "getIamPolicy": {
+                                            "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/environments/{environmentsId}:getIamPolicy",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.environments.getIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "options.requestedPolicyVersion": {
+                                                    "description": "Optional. The maximum policy version that will be used to format the policy.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset.The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/environments/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:getIamPolicy",
+                                            "response": {
+                                                "$ref": "GoogleIamV1Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "Lists environments under the given lake.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/environments",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.environments.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "filter": {
+                                                    "description": "Optional. Filter request.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "orderBy": {
+                                                    "description": "Optional. Order by fields for the result.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Optional. Maximum number of environments to return. The service may return fewer than this value. If unspecified, at most 10 environments will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Optional. Page token received from a previous ListEnvironments call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListEnvironments must match the call that provided the page token.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The resource name of the parent lake: projects/{project_id}/locations/{location_id}/lakes/{lake_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/environments",
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1ListEnvironmentsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "patch": {
+                                            "description": "Update the environment resource.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/environments/{environmentsId}",
+                                            "httpMethod": "PATCH",
+                                            "id": "dataplex.projects.locations.lakes.environments.patch",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Output only. The relative resource name of the environment, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/environments/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "updateMask": {
+                                                    "description": "Required. Mask of fields to update.",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "validateOnly": {
+                                                    "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                    "location": "query",
+                                                    "type": "boolean"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "request": {
+                                                "$ref": "GoogleCloudDataplexV1Environment"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleLongrunningOperation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "setIamPolicy": {
+                                            "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/environments/{environmentsId}:setIamPolicy",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.environments.setIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/environments/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:setIamPolicy",
+                                            "request": {
+                                                "$ref": "GoogleIamV1SetIamPolicyRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleIamV1Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "testIamPermissions": {
+                                            "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/environments/{environmentsId}:testIamPermissions",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.environments.testIamPermissions",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/environments/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:testIamPermissions",
+                                            "request": {
+                                                "$ref": "GoogleIamV1TestIamPermissionsRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleIamV1TestIamPermissionsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    },
+                                    "resources": {
+                                        "sessions": {
+                                            "methods": {
+                                                "list": {
+                                                    "description": "Lists session resources in an environment.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/environments/{environmentsId}/sessions",
+                                                    "httpMethod": "GET",
+                                                    "id": "dataplex.projects.locations.lakes.environments.sessions.list",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "pageSize": {
+                                                            "description": "Optional. Maximum number of sessions to return. The service may return fewer than this value. If unspecified, at most 10 sessions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "pageToken": {
+                                                            "description": "Optional. Page token received from a previous ListSessions call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListSessions must match the call that provided the page token.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "parent": {
+                                                            "description": "Required. The resource name of the parent environment: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/environments/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/sessions",
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1ListSessionsResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                }
+                                            }
+                                        }
+                                    }
+                                },
+                                "tasks": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Creates a task resource within a lake.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.tasks.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "Required. The resource name of the parent lake: projects/{project_number}/locations/{location_id}/lakes/{lake_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "taskId": {
+                                                    "description": "Required. Task identifier.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "validateOnly": {
+                                                    "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                    "location": "query",
+                                                    "type": "boolean"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/tasks",
+                                            "request": {
+                                                "$ref": "GoogleCloudDataplexV1Task"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleLongrunningOperation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Delete the task resource.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks/{tasksId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "dataplex.projects.locations.lakes.tasks.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The resource name of the task: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /task/{task_id}`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "GoogleLongrunningOperation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Get task resource.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks/{tasksId}",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.tasks.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The resource name of the task: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /tasks/{tasks_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1Task"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "getIamPolicy": {
+                                            "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks/{tasksId}:getIamPolicy",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.tasks.getIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "options.requestedPolicyVersion": {
+                                                    "description": "Optional. The maximum policy version that will be used to format the policy.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset.The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:getIamPolicy",
+                                            "response": {
+                                                "$ref": "GoogleIamV1Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "Lists tasks under the given lake.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.tasks.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "filter": {
+                                                    "description": "Optional. Filter request.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "orderBy": {
+                                                    "description": "Optional. Order by fields for the result.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Optional. Maximum number of tasks to return. The service may return fewer than this value. If unspecified, at most 10 tasks will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Optional. Page token received from a previous ListZones call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListZones must match the call that provided the page token.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The resource name of the parent lake: projects/{project_number}/locations/{location_id}/lakes/{lake_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/tasks",
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1ListTasksResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "patch": {
+                                            "description": "Update the task resource.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks/{tasksId}",
+                                            "httpMethod": "PATCH",
+                                            "id": "dataplex.projects.locations.lakes.tasks.patch",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Output only. The relative resource name of the task, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/ tasks/{task_id}.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "updateMask": {
+                                                    "description": "Required. Mask of fields to update.",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "validateOnly": {
+                                                    "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                    "location": "query",
+                                                    "type": "boolean"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "request": {
+                                                "$ref": "GoogleCloudDataplexV1Task"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleLongrunningOperation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "setIamPolicy": {
+                                            "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks/{tasksId}:setIamPolicy",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.tasks.setIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:setIamPolicy",
+                                            "request": {
+                                                "$ref": "GoogleIamV1SetIamPolicyRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleIamV1Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "testIamPermissions": {
+                                            "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks/{tasksId}:testIamPermissions",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.tasks.testIamPermissions",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/tasks/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:testIamPermissions",
+                                            "request": {
+                                                "$ref": "GoogleIamV1TestIamPermissionsRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleIamV1TestIamPermissionsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    },
+                                    "resources": {
+                                        "jobs": {
+                                            "methods": {
+                                                "cancel": {
+                                                    "description": "Cancel jobs running for the task resource.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks/{tasksId}/jobs/{jobsId}:cancel",
+                                                    "httpMethod": "POST",
+                                                    "id": "dataplex.projects.locations.lakes.tasks.jobs.cancel",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Required. The resource name of the job: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /task/{task_id}/job/{job_id}`",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/tasks/[^/]+/jobs/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}:cancel",
+                                                    "request": {
+                                                        "$ref": "GoogleCloudDataplexV1CancelJobRequest"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "Empty"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "get": {
+                                                    "description": "Get job resource.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks/{tasksId}/jobs/{jobsId}",
+                                                    "httpMethod": "GET",
+                                                    "id": "dataplex.projects.locations.lakes.tasks.jobs.get",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Required. The resource name of the job: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /tasks/{task_id}/jobs/{job_id}",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/tasks/[^/]+/jobs/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}",
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1Job"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "list": {
+                                                    "description": "Lists Jobs under the given task.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/tasks/{tasksId}/jobs",
+                                                    "httpMethod": "GET",
+                                                    "id": "dataplex.projects.locations.lakes.tasks.jobs.list",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "pageSize": {
+                                                            "description": "Optional. Maximum number of jobs to return. The service may return fewer than this value. If unspecified, at most 10 jobs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "pageToken": {
+                                                            "description": "Optional. Page token received from a previous ListJobs call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListJobs must match the call that provided the page token.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "parent": {
+                                                            "description": "Required. The resource name of the parent environment: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/tasks/{task_id}",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/tasks/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/jobs",
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1ListJobsResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                }
+                                            }
+                                        }
+                                    }
+                                },
+                                "zones": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Creates a zone resource within a lake.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.zones.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "Required. The resource name of the parent lake: projects/{project_number}/locations/{location_id}/lakes/{lake_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "validateOnly": {
+                                                    "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                    "location": "query",
+                                                    "type": "boolean"
+                                                },
+                                                "zoneId": {
+                                                    "description": "Required. Zone identifier. This ID will be used to generate names such as database and dataset names when publishing metadata to Hive Metastore and BigQuery. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must end with a number or a letter. * Must be between 1-63 characters. * Must be unique across all lakes from all locations in a project. * Must not be one of the reserved IDs (i.e. \"default\", \"global-temp\")",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/zones",
+                                            "request": {
+                                                "$ref": "GoogleCloudDataplexV1Zone"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleLongrunningOperation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Deletes a zone resource. All assets within a zone must be deleted before the zone can be deleted.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "dataplex.projects.locations.lakes.zones.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The resource name of the zone: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /zones/{zone_id}`",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "GoogleLongrunningOperation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "Retrieves a zone resource.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.zones.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The resource name of the zone: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /zones/{zone_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1Zone"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "getIamPolicy": {
+                                            "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}:getIamPolicy",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.zones.getIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "options.requestedPolicyVersion": {
+                                                    "description": "Optional. The maximum policy version that will be used to format the policy.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset.The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:getIamPolicy",
+                                            "response": {
+                                                "$ref": "GoogleIamV1Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "Lists zone resources in a lake.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones",
+                                            "httpMethod": "GET",
+                                            "id": "dataplex.projects.locations.lakes.zones.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "filter": {
+                                                    "description": "Optional. Filter request.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "orderBy": {
+                                                    "description": "Optional. Order by fields for the result.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "Optional. Maximum number of zones to return. The service may return fewer than this value. If unspecified, at most 10 zones will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Optional. Page token received from a previous ListZones call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListZones must match the call that provided the page token.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The resource name of the parent lake: projects/{project_number}/locations/{location_id}/lakes/{lake_id}",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+parent}/zones",
+                                            "response": {
+                                                "$ref": "GoogleCloudDataplexV1ListZonesResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "patch": {
+                                            "description": "Updates a zone resource.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}",
+                                            "httpMethod": "PATCH",
+                                            "id": "dataplex.projects.locations.lakes.zones.patch",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Output only. The relative resource name of the zone, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "updateMask": {
+                                                    "description": "Required. Mask of fields to update.",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "validateOnly": {
+                                                    "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                    "location": "query",
+                                                    "type": "boolean"
+                                                }
+                                            },
+                                            "path": "v1/{+name}",
+                                            "request": {
+                                                "$ref": "GoogleCloudDataplexV1Zone"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleLongrunningOperation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "setIamPolicy": {
+                                            "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}:setIamPolicy",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.zones.setIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:setIamPolicy",
+                                            "request": {
+                                                "$ref": "GoogleIamV1SetIamPolicyRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleIamV1Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "testIamPermissions": {
+                                            "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}:testIamPermissions",
+                                            "httpMethod": "POST",
+                                            "id": "dataplex.projects.locations.lakes.zones.testIamPermissions",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+resource}:testIamPermissions",
+                                            "request": {
+                                                "$ref": "GoogleIamV1TestIamPermissionsRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "GoogleIamV1TestIamPermissionsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    },
+                                    "resources": {
+                                        "actions": {
+                                            "methods": {
+                                                "list": {
+                                                    "description": "Lists action resources in a zone.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/actions",
+                                                    "httpMethod": "GET",
+                                                    "id": "dataplex.projects.locations.lakes.zones.actions.list",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "pageSize": {
+                                                            "description": "Optional. Maximum number of actions to return. The service may return fewer than this value. If unspecified, at most 10 actions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "pageToken": {
+                                                            "description": "Optional. Page token received from a previous ListZoneActions call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListZoneActions must match the call that provided the page token.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "parent": {
+                                                            "description": "Required. The resource name of the parent zone: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/actions",
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1ListActionsResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                }
+                                            }
+                                        },
+                                        "assets": {
+                                            "methods": {
+                                                "create": {
+                                                    "description": "Creates an asset resource.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/assets",
+                                                    "httpMethod": "POST",
+                                                    "id": "dataplex.projects.locations.lakes.zones.assets.create",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "assetId": {
+                                                            "description": "Required. Asset identifier. This ID will be used to generate names such as table names when publishing metadata to Hive Metastore and BigQuery. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must end with a number or a letter. * Must be between 1-63 characters. * Must be unique within the zone.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "parent": {
+                                                            "description": "Required. The resource name of the parent zone: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /zones/{zone_id}`",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        },
+                                                        "validateOnly": {
+                                                            "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                            "location": "query",
+                                                            "type": "boolean"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/assets",
+                                                    "request": {
+                                                        "$ref": "GoogleCloudDataplexV1Asset"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "GoogleLongrunningOperation"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "delete": {
+                                                    "description": "Deletes an asset resource. The referenced storage resource is detached (default) or deleted based on the associated Lifecycle policy.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/assets/{assetsId}",
+                                                    "httpMethod": "DELETE",
+                                                    "id": "dataplex.projects.locations.lakes.zones.assets.delete",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Required. The resource name of the asset: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /zones/{zone_id}/assets/{asset_id}",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/assets/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}",
+                                                    "response": {
+                                                        "$ref": "GoogleLongrunningOperation"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "get": {
+                                                    "description": "Retrieves an asset resource.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/assets/{assetsId}",
+                                                    "httpMethod": "GET",
+                                                    "id": "dataplex.projects.locations.lakes.zones.assets.get",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Required. The resource name of the asset: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /zones/{zone_id}/assets/{asset_id}",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/assets/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}",
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1Asset"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "getIamPolicy": {
+                                                    "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/assets/{assetsId}:getIamPolicy",
+                                                    "httpMethod": "GET",
+                                                    "id": "dataplex.projects.locations.lakes.zones.assets.getIamPolicy",
+                                                    "parameterOrder": [
+                                                        "resource"
+                                                    ],
+                                                    "parameters": {
+                                                        "options.requestedPolicyVersion": {
+                                                            "description": "Optional. The maximum policy version that will be used to format the policy.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset.The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "resource": {
+                                                            "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/assets/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+resource}:getIamPolicy",
+                                                    "response": {
+                                                        "$ref": "GoogleIamV1Policy"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "list": {
+                                                    "description": "Lists asset resources in a zone.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/assets",
+                                                    "httpMethod": "GET",
+                                                    "id": "dataplex.projects.locations.lakes.zones.assets.list",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "filter": {
+                                                            "description": "Optional. Filter request.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "orderBy": {
+                                                            "description": "Optional. Order by fields for the result.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "pageSize": {
+                                                            "description": "Optional. Maximum number of asset to return. The service may return fewer than this value. If unspecified, at most 10 assets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "pageToken": {
+                                                            "description": "Optional. Page token received from a previous ListAssets call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListAssets must match the call that provided the page token.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "parent": {
+                                                            "description": "Required. The resource name of the parent zone: projects/{project_number}/locations/{location_id}/lakes/{lake_id} /zones/{zone_id}`",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/assets",
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1ListAssetsResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "patch": {
+                                                    "description": "Updates an asset resource.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/assets/{assetsId}",
+                                                    "httpMethod": "PATCH",
+                                                    "id": "dataplex.projects.locations.lakes.zones.assets.patch",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Output only. The relative resource name of the asset, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/assets/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        },
+                                                        "updateMask": {
+                                                            "description": "Required. Mask of fields to update.",
+                                                            "format": "google-fieldmask",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "validateOnly": {
+                                                            "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                            "location": "query",
+                                                            "type": "boolean"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}",
+                                                    "request": {
+                                                        "$ref": "GoogleCloudDataplexV1Asset"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "GoogleLongrunningOperation"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "setIamPolicy": {
+                                                    "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/assets/{assetsId}:setIamPolicy",
+                                                    "httpMethod": "POST",
+                                                    "id": "dataplex.projects.locations.lakes.zones.assets.setIamPolicy",
+                                                    "parameterOrder": [
+                                                        "resource"
+                                                    ],
+                                                    "parameters": {
+                                                        "resource": {
+                                                            "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/assets/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+resource}:setIamPolicy",
+                                                    "request": {
+                                                        "$ref": "GoogleIamV1SetIamPolicyRequest"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "GoogleIamV1Policy"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "testIamPermissions": {
+                                                    "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/assets/{assetsId}:testIamPermissions",
+                                                    "httpMethod": "POST",
+                                                    "id": "dataplex.projects.locations.lakes.zones.assets.testIamPermissions",
+                                                    "parameterOrder": [
+                                                        "resource"
+                                                    ],
+                                                    "parameters": {
+                                                        "resource": {
+                                                            "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/assets/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+resource}:testIamPermissions",
+                                                    "request": {
+                                                        "$ref": "GoogleIamV1TestIamPermissionsRequest"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "GoogleIamV1TestIamPermissionsResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                }
+                                            },
+                                            "resources": {
+                                                "actions": {
+                                                    "methods": {
+                                                        "list": {
+                                                            "description": "Lists action resources in an asset.",
+                                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/assets/{assetsId}/actions",
+                                                            "httpMethod": "GET",
+                                                            "id": "dataplex.projects.locations.lakes.zones.assets.actions.list",
+                                                            "parameterOrder": [
+                                                                "parent"
+                                                            ],
+                                                            "parameters": {
+                                                                "pageSize": {
+                                                                    "description": "Optional. Maximum number of actions to return. The service may return fewer than this value. If unspecified, at most 10 actions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+                                                                    "format": "int32",
+                                                                    "location": "query",
+                                                                    "type": "integer"
+                                                                },
+                                                                "pageToken": {
+                                                                    "description": "Optional. Page token received from a previous ListAssetActions call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListAssetActions must match the call that provided the page token.",
+                                                                    "location": "query",
+                                                                    "type": "string"
+                                                                },
+                                                                "parent": {
+                                                                    "description": "Required. The resource name of the parent asset: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}",
+                                                                    "location": "path",
+                                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/assets/[^/]+$",
+                                                                    "required": true,
+                                                                    "type": "string"
+                                                                }
+                                                            },
+                                                            "path": "v1/{+parent}/actions",
+                                                            "response": {
+                                                                "$ref": "GoogleCloudDataplexV1ListActionsResponse"
+                                                            },
+                                                            "scopes": [
+                                                                "https://www.googleapis.com/auth/cloud-platform"
+                                                            ]
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        },
+                                        "entities": {
+                                            "methods": {
+                                                "create": {
+                                                    "description": "Create a metadata entity.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/entities",
+                                                    "httpMethod": "POST",
+                                                    "id": "dataplex.projects.locations.lakes.zones.entities.create",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "parent": {
+                                                            "description": "Required. The resource name of the parent zone: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        },
+                                                        "validateOnly": {
+                                                            "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                            "location": "query",
+                                                            "type": "boolean"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/entities",
+                                                    "request": {
+                                                        "$ref": "GoogleCloudDataplexV1Entity"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1Entity"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "delete": {
+                                                    "description": "Delete a metadata entity.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/entities/{entitiesId}",
+                                                    "httpMethod": "DELETE",
+                                                    "id": "dataplex.projects.locations.lakes.zones.entities.delete",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "etag": {
+                                                            "description": "Required. The etag associated with the partition if it was previously retrieved.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "name": {
+                                                            "description": "Required. The resource name of the entity: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/entities/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}",
+                                                    "response": {
+                                                        "$ref": "Empty"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "get": {
+                                                    "description": "Get a metadata entity.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/entities/{entitiesId}",
+                                                    "httpMethod": "GET",
+                                                    "id": "dataplex.projects.locations.lakes.zones.entities.get",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Required. The resource name of the entity: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/entities/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        },
+                                                        "view": {
+                                                            "description": "Optional. Used to select the subset of entity information to return. Defaults to BASIC.",
+                                                            "enum": [
+                                                                "ENTITY_VIEW_UNSPECIFIED",
+                                                                "BASIC",
+                                                                "SCHEMA",
+                                                                "FULL"
+                                                            ],
+                                                            "enumDescriptions": [
+                                                                "The API will default to the BASIC view.",
+                                                                "Minimal view that does not include the schema.",
+                                                                "Include basic information and schema.",
+                                                                "Include everything. Currently, this is the same as the SCHEMA view."
+                                                            ],
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}",
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1Entity"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "list": {
+                                                    "description": "List metadata entities in a zone.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/entities",
+                                                    "httpMethod": "GET",
+                                                    "id": "dataplex.projects.locations.lakes.zones.entities.list",
+                                                    "parameterOrder": [
+                                                        "parent"
+                                                    ],
+                                                    "parameters": {
+                                                        "filter": {
+                                                            "description": "Optional. The following filter parameters can be added to the URL to limit the entities returned by the API: Entity ID: ?filter=\"id=entityID\" Asset ID: ?filter=\"asset=assetID\" Data path ?filter=\"data_path=gs://my-bucket\" Is HIVE compatible: ?filter=”hive_compatible=true” Is BigQuery compatible: ?filter=”bigquery_compatible=true”",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "pageSize": {
+                                                            "description": "Optional. Maximum number of entities to return. The service may return fewer than this value. If unspecified, 100 entities will be returned by default. The maximum value is 500; larger values will will be truncated to 500.",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "pageToken": {
+                                                            "description": "Optional. Page token received from a previous ListEntities call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListEntities must match the call that provided the page token.",
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        },
+                                                        "parent": {
+                                                            "description": "Required. The resource name of the parent zone: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        },
+                                                        "view": {
+                                                            "description": "Required. Specify the entity view to make a partial list request.",
+                                                            "enum": [
+                                                                "ENTITY_VIEW_UNSPECIFIED",
+                                                                "TABLES",
+                                                                "FILESETS"
+                                                            ],
+                                                            "enumDescriptions": [
+                                                                "The default unset value. The API will default to the FULL view.",
+                                                                "Only list table entities.",
+                                                                "Only list fileset entities."
+                                                            ],
+                                                            "location": "query",
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+parent}/entities",
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1ListEntitiesResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "update": {
+                                                    "description": "Update a metadata entity. Only supports full resource update.",
+                                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/entities/{entitiesId}",
+                                                    "httpMethod": "PUT",
+                                                    "id": "dataplex.projects.locations.lakes.zones.entities.update",
+                                                    "parameterOrder": [
+                                                        "name"
+                                                    ],
+                                                    "parameters": {
+                                                        "name": {
+                                                            "description": "Output only. The resource name of the entity, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{id}.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/entities/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        },
+                                                        "validateOnly": {
+                                                            "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                            "location": "query",
+                                                            "type": "boolean"
+                                                        }
+                                                    },
+                                                    "path": "v1/{+name}",
+                                                    "request": {
+                                                        "$ref": "GoogleCloudDataplexV1Entity"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "GoogleCloudDataplexV1Entity"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                }
+                                            },
+                                            "resources": {
+                                                "partitions": {
+                                                    "methods": {
+                                                        "create": {
+                                                            "description": "Create a metadata partition.",
+                                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/entities/{entitiesId}/partitions",
+                                                            "httpMethod": "POST",
+                                                            "id": "dataplex.projects.locations.lakes.zones.entities.partitions.create",
+                                                            "parameterOrder": [
+                                                                "parent"
+                                                            ],
+                                                            "parameters": {
+                                                                "parent": {
+                                                                    "description": "Required. The resource name of the parent zone: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}.",
+                                                                    "location": "path",
+                                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/entities/[^/]+$",
+                                                                    "required": true,
+                                                                    "type": "string"
+                                                                },
+                                                                "validateOnly": {
+                                                                    "description": "Optional. Only validate the request, but do not perform mutations. The default is false.",
+                                                                    "location": "query",
+                                                                    "type": "boolean"
+                                                                }
+                                                            },
+                                                            "path": "v1/{+parent}/partitions",
+                                                            "request": {
+                                                                "$ref": "GoogleCloudDataplexV1Partition"
+                                                            },
+                                                            "response": {
+                                                                "$ref": "GoogleCloudDataplexV1Partition"
+                                                            },
+                                                            "scopes": [
+                                                                "https://www.googleapis.com/auth/cloud-platform"
+                                                            ]
+                                                        },
+                                                        "delete": {
+                                                            "description": "Delete a metadata partition.",
+                                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/entities/{entitiesId}/partitions/{partitionsId}",
+                                                            "httpMethod": "DELETE",
+                                                            "id": "dataplex.projects.locations.lakes.zones.entities.partitions.delete",
+                                                            "parameterOrder": [
+                                                                "name"
+                                                            ],
+                                                            "parameters": {
+                                                                "etag": {
+                                                                    "description": "Optional. The etag associated with the partition if it was previously retrieved.",
+                                                                    "location": "query",
+                                                                    "type": "string"
+                                                                },
+                                                                "name": {
+                                                                    "description": "Required. The resource name of the partition. format: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}/partitions/{partition_value_path}. The {partition_value_path} segment consists of an ordered sequence of partition values separated by \"/\". All values must be provided.",
+                                                                    "location": "path",
+                                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/entities/[^/]+/partitions/.*$",
+                                                                    "required": true,
+                                                                    "type": "string"
+                                                                }
+                                                            },
+                                                            "path": "v1/{+name}",
+                                                            "response": {
+                                                                "$ref": "Empty"
+                                                            },
+                                                            "scopes": [
+                                                                "https://www.googleapis.com/auth/cloud-platform"
+                                                            ]
+                                                        },
+                                                        "get": {
+                                                            "description": "Get a metadata partition of an entity.",
+                                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/entities/{entitiesId}/partitions/{partitionsId}",
+                                                            "httpMethod": "GET",
+                                                            "id": "dataplex.projects.locations.lakes.zones.entities.partitions.get",
+                                                            "parameterOrder": [
+                                                                "name"
+                                                            ],
+                                                            "parameters": {
+                                                                "name": {
+                                                                    "description": "Required. The resource name of the partition: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}/partitions/{partition_value_path}. The {partition_value_path} segment consists of an ordered sequence of partition values separated by \"/\". All values must be provided.",
+                                                                    "location": "path",
+                                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/entities/[^/]+/partitions/.*$",
+                                                                    "required": true,
+                                                                    "type": "string"
+                                                                }
+                                                            },
+                                                            "path": "v1/{+name}",
+                                                            "response": {
+                                                                "$ref": "GoogleCloudDataplexV1Partition"
+                                                            },
+                                                            "scopes": [
+                                                                "https://www.googleapis.com/auth/cloud-platform"
+                                                            ]
+                                                        },
+                                                        "list": {
+                                                            "description": "List metadata partitions of an entity.",
+                                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lakes/{lakesId}/zones/{zonesId}/entities/{entitiesId}/partitions",
+                                                            "httpMethod": "GET",
+                                                            "id": "dataplex.projects.locations.lakes.zones.entities.partitions.list",
+                                                            "parameterOrder": [
+                                                                "parent"
+                                                            ],
+                                                            "parameters": {
+                                                                "filter": {
+                                                                    "description": "Optional. Filter the partitions returned to the caller using a key vslue pair expression. The filter expression supports: logical operators: AND, OR comparison operators: <, >, >=, <= ,=, != LIKE operators: The right hand of a LIKE operator supports “.” and “*” for wildcard searches, for example \"value1 LIKE \".*oo.*\" parenthetical grouping: ( )Sample filter expression: `?filter=\"key1 < value1 OR key2 > value2\"Notes: Keys to the left of operators are case insensitive. Partition results are sorted first by creation time, then by lexicographic order. Up to 20 key value filter pairs are allowed, but due to performance considerations, only the first 10 will be used as a filter.",
+                                                                    "location": "query",
+                                                                    "type": "string"
+                                                                },
+                                                                "pageSize": {
+                                                                    "description": "Optional. Maximum number of partitions to return. The service may return fewer than this value. If unspecified, 100 partitions will be returned by default. The maximum page size is 500; larger values will will be truncated to 500.",
+                                                                    "format": "int32",
+                                                                    "location": "query",
+                                                                    "type": "integer"
+                                                                },
+                                                                "pageToken": {
+                                                                    "description": "Optional. Page token received from a previous ListPartitions call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListPartitions must match the call that provided the page token.",
+                                                                    "location": "query",
+                                                                    "type": "string"
+                                                                },
+                                                                "parent": {
+                                                                    "description": "Required. The resource name of the parent entity: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}.",
+                                                                    "location": "path",
+                                                                    "pattern": "^projects/[^/]+/locations/[^/]+/lakes/[^/]+/zones/[^/]+/entities/[^/]+$",
+                                                                    "required": true,
+                                                                    "type": "string"
+                                                                }
+                                                            },
+                                                            "path": "v1/{+parent}/partitions",
+                                                            "response": {
+                                                                "$ref": "GoogleCloudDataplexV1ListPartitionsResponse"
+                                                            },
+                                                            "scopes": [
+                                                                "https://www.googleapis.com/auth/cloud-platform"
+                                                            ]
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        },
+                        "operations": {
+                            "methods": {
+                                "cancel": {
+                                    "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+                                    "httpMethod": "POST",
+                                    "id": "dataplex.projects.locations.operations.cancel",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource to be cancelled.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}:cancel",
+                                    "request": {
+                                        "$ref": "GoogleLongrunningCancelOperationRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "dataplex.projects.locations.operations.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource to be deleted.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "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.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                                    "httpMethod": "GET",
+                                    "id": "dataplex.projects.locations.operations.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "GoogleLongrunningOperation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+                                    "httpMethod": "GET",
+                                    "id": "dataplex.projects.locations.operations.list",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "The standard list filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "The name of the operation's parent resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "The standard list page size.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "The standard list page token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}/operations",
+                                    "response": {
+                                        "$ref": "GoogleLongrunningListOperationsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "20220208",
+    "rootUrl": "https://dataplex.googleapis.com/",
+    "schemas": {
+        "Empty": {
+            "description": "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 {}.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Action": {
+            "description": "Action represents an issue requiring administrator action for resolution.",
+            "id": "GoogleCloudDataplexV1Action",
+            "properties": {
+                "asset": {
+                    "description": "Output only. The relative resource name of the asset, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "category": {
+                    "description": "The category of issue associated with the action.",
+                    "enum": [
+                        "CATEGORY_UNSPECIFIED",
+                        "RESOURCE_MANAGEMENT",
+                        "SECURITY_POLICY",
+                        "DATA_DISCOVERY"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified category.",
+                        "Resource management related issues.",
+                        "Security policy related issues.",
+                        "Data and discovery related issues."
+                    ],
+                    "type": "string"
+                },
+                "dataLocations": {
+                    "description": "The list of data locations associated with this action. Cloud Storage locations are represented as URI paths(E.g. gs://bucket/table1/year=2020/month=Jan/). BigQuery locations refer to resource names(E.g. bigquery.googleapis.com/projects/project-id/datasets/dataset-id).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "detectTime": {
+                    "description": "The time that the issue was detected.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "failedSecurityPolicyApply": {
+                    "$ref": "GoogleCloudDataplexV1ActionFailedSecurityPolicyApply",
+                    "description": "Details for issues related to applying security policy."
+                },
+                "incompatibleDataSchema": {
+                    "$ref": "GoogleCloudDataplexV1ActionIncompatibleDataSchema",
+                    "description": "Details for issues related to incompatible schemas detected within data."
+                },
+                "invalidDataFormat": {
+                    "$ref": "GoogleCloudDataplexV1ActionInvalidDataFormat",
+                    "description": "Details for issues related to invalid or unsupported data formats."
+                },
+                "invalidDataOrganization": {
+                    "$ref": "GoogleCloudDataplexV1ActionInvalidDataOrganization",
+                    "description": "Details for issues related to invalid data arrangement."
+                },
+                "invalidDataPartition": {
+                    "$ref": "GoogleCloudDataplexV1ActionInvalidDataPartition",
+                    "description": "Details for issues related to invalid or unsupported data partition structure."
+                },
+                "issue": {
+                    "description": "Detailed description of the issue requiring action.",
+                    "type": "string"
+                },
+                "lake": {
+                    "description": "Output only. The relative resource name of the lake, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "missingData": {
+                    "$ref": "GoogleCloudDataplexV1ActionMissingData",
+                    "description": "Details for issues related to absence of data within managed resources."
+                },
+                "missingResource": {
+                    "$ref": "GoogleCloudDataplexV1ActionMissingResource",
+                    "description": "Details for issues related to absence of a managed resource."
+                },
+                "name": {
+                    "description": "Output only. The relative resource name of the action, of the form: projects/{project}/locations/{location}/lakes/{lake}/actions/{action} projects/{project}/locations/{location}/lakes/{lake}/zones/{zone}/actions/{action} projects/{project}/locations/{location}/lakes/{lake}/zones/{zone}/assets/{asset}/actions/{action}.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "unauthorizedResource": {
+                    "$ref": "GoogleCloudDataplexV1ActionUnauthorizedResource",
+                    "description": "Details for issues related to lack of permissions to access data resources."
+                },
+                "zone": {
+                    "description": "Output only. The relative resource name of the zone, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ActionFailedSecurityPolicyApply": {
+            "description": "Failed to apply security policy to the managed resource(s) under a lake, zone or an asset. For a lake or zone resource, one or more underlying assets has a failure applying security policy to the associated managed resource.",
+            "id": "GoogleCloudDataplexV1ActionFailedSecurityPolicyApply",
+            "properties": {
+                "asset": {
+                    "description": "Resource name of one of the assets with failing security policy application. Populated for a lake or zone resource only.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ActionIncompatibleDataSchema": {
+            "description": "Action details for incompatible schemas detected by discovery.",
+            "id": "GoogleCloudDataplexV1ActionIncompatibleDataSchema",
+            "properties": {
+                "existingSchema": {
+                    "description": "The existing and expected schema of the table. The schema is provided as a JSON formatted structure listing columns and data types.",
+                    "type": "string"
+                },
+                "newSchema": {
+                    "description": "The new and incompatible schema within the table. The schema is provided as a JSON formatted structured listing columns and data types.",
+                    "type": "string"
+                },
+                "sampledDataLocations": {
+                    "description": "The list of data locations sampled and used for format/schema inference.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "schemaChange": {
+                    "description": "Whether the action relates to a schema that is incompatible or modified.",
+                    "enum": [
+                        "SCHEMA_CHANGE_UNSPECIFIED",
+                        "INCOMPATIBLE",
+                        "MODIFIED"
+                    ],
+                    "enumDescriptions": [
+                        "Schema change unspecified.",
+                        "Newly discovered schema is incompatible with existing schema.",
+                        "Newly discovered schema has changed from existing schema for data in a curated zone."
+                    ],
+                    "type": "string"
+                },
+                "table": {
+                    "description": "The name of the table containing invalid data.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ActionInvalidDataFormat": {
+            "description": "Action details for invalid or unsupported data files detected by discovery.",
+            "id": "GoogleCloudDataplexV1ActionInvalidDataFormat",
+            "properties": {
+                "expectedFormat": {
+                    "description": "The expected data format of the entity.",
+                    "type": "string"
+                },
+                "newFormat": {
+                    "description": "The new unexpected data format within the entity.",
+                    "type": "string"
+                },
+                "sampledDataLocations": {
+                    "description": "The list of data locations sampled and used for format/schema inference.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ActionInvalidDataOrganization": {
+            "description": "Action details for invalid data arrangement.",
+            "id": "GoogleCloudDataplexV1ActionInvalidDataOrganization",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ActionInvalidDataPartition": {
+            "description": "Action details for invalid or unsupported partitions detected by discovery.",
+            "id": "GoogleCloudDataplexV1ActionInvalidDataPartition",
+            "properties": {
+                "expectedStructure": {
+                    "description": "The issue type of InvalidDataPartition.",
+                    "enum": [
+                        "PARTITION_STRUCTURE_UNSPECIFIED",
+                        "CONSISTENT_KEYS",
+                        "HIVE_STYLE_KEYS"
+                    ],
+                    "enumDescriptions": [
+                        "PartitionStructure unspecified.",
+                        "Consistent hive-style partition definition (both raw and curated zone).",
+                        "Hive style partition definition (curated zone only)."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ActionMissingData": {
+            "description": "Action details for absence of data detected by discovery.",
+            "id": "GoogleCloudDataplexV1ActionMissingData",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ActionMissingResource": {
+            "description": "Action details for resource references in assets that cannot be located.",
+            "id": "GoogleCloudDataplexV1ActionMissingResource",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ActionUnauthorizedResource": {
+            "description": "Action details for unauthorized resource issues raised to indicate that the service account associated with the lake instance is not authorized to access or manage the resource associated with an asset.",
+            "id": "GoogleCloudDataplexV1ActionUnauthorizedResource",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Asset": {
+            "description": "An asset represents a cloud resource that is being managed within a lake as a member of a zone.",
+            "id": "GoogleCloudDataplexV1Asset",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The time when the asset was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. Description of the asset.",
+                    "type": "string"
+                },
+                "discoverySpec": {
+                    "$ref": "GoogleCloudDataplexV1AssetDiscoverySpec",
+                    "description": "Optional. Specification of the discovery feature applied to data referenced by this asset. When this spec is left unset, the asset will use the spec set on the parent zone."
+                },
+                "discoveryStatus": {
+                    "$ref": "GoogleCloudDataplexV1AssetDiscoveryStatus",
+                    "description": "Output only. Status of the discovery feature applied to data referenced by this asset.",
+                    "readOnly": true
+                },
+                "displayName": {
+                    "description": "Optional. User friendly display name.",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. User defined labels for the asset.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The relative resource name of the asset, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "resourceSpec": {
+                    "$ref": "GoogleCloudDataplexV1AssetResourceSpec",
+                    "description": "Required. Specification of the resource that is referenced by this asset."
+                },
+                "resourceStatus": {
+                    "$ref": "GoogleCloudDataplexV1AssetResourceStatus",
+                    "description": "Output only. Status of the resource referenced by this asset.",
+                    "readOnly": true
+                },
+                "securityStatus": {
+                    "$ref": "GoogleCloudDataplexV1AssetSecurityStatus",
+                    "description": "Output only. Status of the security policy applied to resource referenced by this asset.",
+                    "readOnly": true
+                },
+                "state": {
+                    "description": "Output only. Current state of the asset.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "CREATING",
+                        "DELETING",
+                        "ACTION_REQUIRED"
+                    ],
+                    "enumDescriptions": [
+                        "State is not specified.",
+                        "Resource is active, i.e., ready to use.",
+                        "Resource is under creation.",
+                        "Resource is under deletion.",
+                        "Resource is active but has unresolved actions."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "uid": {
+                    "description": "Output only. System generated globally unique ID for the asset. This ID will be different if the asset is deleted and re-created with the same name.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time when the asset was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1AssetDiscoverySpec": {
+            "description": "Settings to manage the metadata discovery and publishing for an asset.",
+            "id": "GoogleCloudDataplexV1AssetDiscoverySpec",
+            "properties": {
+                "csvOptions": {
+                    "$ref": "GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions",
+                    "description": "Optional. Configuration for CSV data."
+                },
+                "enabled": {
+                    "description": "Optional. Whether discovery is enabled.",
+                    "type": "boolean"
+                },
+                "excludePatterns": {
+                    "description": "Optional. The list of patterns to apply for selecting data to exclude during discovery. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "includePatterns": {
+                    "description": "Optional. The list of patterns to apply for selecting data to include during discovery if only a subset of the data should considered. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "jsonOptions": {
+                    "$ref": "GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions",
+                    "description": "Optional. Configuration for Json data."
+                },
+                "schedule": {
+                    "description": "Optional. Cron schedule (https://en.wikipedia.org/wiki/Cron) for running discovery periodically. Successive discovery runs must be scheduled at least 60 minutes apart. The default value is to run discovery every 60 minutes. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\".",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions": {
+            "description": "Describe CSV and similar semi-structured data formats.",
+            "id": "GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions",
+            "properties": {
+                "delimiter": {
+                    "description": "Optional. The delimiter being used to separate values. This defaults to ','.",
+                    "type": "string"
+                },
+                "disableTypeInference": {
+                    "description": "Optional. Whether to disable the inference of data type for CSV data. If true, all columns will be registered as strings.",
+                    "type": "boolean"
+                },
+                "encoding": {
+                    "description": "Optional. The character encoding of the data. The default is UTF-8.",
+                    "type": "string"
+                },
+                "headerRows": {
+                    "description": "Optional. The number of rows to interpret as header rows that should be skipped when reading data rows.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions": {
+            "description": "Describe JSON data format.",
+            "id": "GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions",
+            "properties": {
+                "disableTypeInference": {
+                    "description": "Optional. Whether to disable the inference of data type for Json data. If true, all columns will be registered as their primitive types (strings, number or boolean).",
+                    "type": "boolean"
+                },
+                "encoding": {
+                    "description": "Optional. The character encoding of the data. The default is UTF-8.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1AssetDiscoveryStatus": {
+            "description": "Status of discovery for an asset.",
+            "id": "GoogleCloudDataplexV1AssetDiscoveryStatus",
+            "properties": {
+                "lastRunDuration": {
+                    "description": "The duration of the last discovery run.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "lastRunTime": {
+                    "description": "The start time of the last discovery run.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "message": {
+                    "description": "Additional information about the current state.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The current status of the discovery feature.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "SCHEDULED",
+                        "IN_PROGRESS",
+                        "PAUSED",
+                        "DISABLED"
+                    ],
+                    "enumDescriptions": [
+                        "State is unspecified.",
+                        "Discovery for the asset is scheduled.",
+                        "Discovery for the asset is running.",
+                        "Discovery for the asset is currently paused (e.g. due to a lack of available resources). It will be automatically resumed.",
+                        "Discovery for the asset is disabled."
+                    ],
+                    "type": "string"
+                },
+                "stats": {
+                    "$ref": "GoogleCloudDataplexV1AssetDiscoveryStatusStats",
+                    "description": "Data Stats of the asset reported by discovery."
+                },
+                "updateTime": {
+                    "description": "Last update time of the status.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1AssetDiscoveryStatusStats": {
+            "description": "The aggregated data statistics for the asset reported by discovery.",
+            "id": "GoogleCloudDataplexV1AssetDiscoveryStatusStats",
+            "properties": {
+                "dataItems": {
+                    "description": "The count of data items within the referenced resource.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "dataSize": {
+                    "description": "The number of stored data bytes within the referenced resource.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "filesets": {
+                    "description": "The count of fileset entities within the referenced resource.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "tables": {
+                    "description": "The count of table entities within the referenced resource.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1AssetResourceSpec": {
+            "description": "Identifies the cloud resource that is referenced by this asset.",
+            "id": "GoogleCloudDataplexV1AssetResourceSpec",
+            "properties": {
+                "name": {
+                    "description": "Immutable. Relative name of the cloud resource that contains the data that is being managed within a lake. For example: projects/{project_number}/buckets/{bucket_id} projects/{project_number}/datasets/{dataset_id}",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. Immutable. Type of resource.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "STORAGE_BUCKET",
+                        "BIGQUERY_DATASET"
+                    ],
+                    "enumDescriptions": [
+                        "Type not specified.",
+                        "Cloud Storage bucket.",
+                        "BigQuery dataset."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1AssetResourceStatus": {
+            "description": "Status of the resource referenced by an asset.",
+            "id": "GoogleCloudDataplexV1AssetResourceStatus",
+            "properties": {
+                "message": {
+                    "description": "Additional information about the current state.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The current state of the managed resource.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "READY",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "State unspecified.",
+                        "Resource does not have any errors.",
+                        "Resource has errors."
+                    ],
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Last update time of the status.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1AssetSecurityStatus": {
+            "description": "Security policy status of the asset. Data security policy, i.e., readers, writers & owners, should be specified in the lake/zone/asset IAM policy.",
+            "id": "GoogleCloudDataplexV1AssetSecurityStatus",
+            "properties": {
+                "message": {
+                    "description": "Additional information about the current state.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The current state of the security policy applied to the attached resource.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "READY",
+                        "APPLYING",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "State unspecified.",
+                        "Security policy has been successfully applied to the attached resource.",
+                        "Security policy is in the process of being applied to the attached resource.",
+                        "Security policy could not be applied to the attached resource due to errors."
+                    ],
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Last update time of the status.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1AssetStatus": {
+            "description": "Aggregated status of the underlying assets of a lake or zone.",
+            "id": "GoogleCloudDataplexV1AssetStatus",
+            "properties": {
+                "activeAssets": {
+                    "description": "Number of active assets.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "securityPolicyApplyingAssets": {
+                    "description": "Number of assets that are in process of updating the security policy on attached resources.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "updateTime": {
+                    "description": "Last update time of the status.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1CancelJobRequest": {
+            "description": "Cancel task jobs.",
+            "id": "GoogleCloudDataplexV1CancelJobRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Content": {
+            "description": "Content represents a user-visible notebook or a sql script",
+            "id": "GoogleCloudDataplexV1Content",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. Content creation time.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "dataText": {
+                    "description": "Required. Content data in string format.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. Description of the content.",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. User defined labels for the content.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The relative resource name of the content, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "notebook": {
+                    "$ref": "GoogleCloudDataplexV1ContentNotebook",
+                    "description": "Notebook related configurations."
+                },
+                "path": {
+                    "description": "Required. The path for the Content file, represented as directory structure. Unique within a lake. Limited to alphanumerics, hyphens, underscores, dots and slashes.",
+                    "type": "string"
+                },
+                "sqlScript": {
+                    "$ref": "GoogleCloudDataplexV1ContentSqlScript",
+                    "description": "Sql Script related configurations."
+                },
+                "uid": {
+                    "description": "Output only. System generated globally unique ID for the content. This ID will be different if the content is deleted and re-created with the same name.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time when the content was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ContentNotebook": {
+            "description": "Configuration for Notebook content.",
+            "id": "GoogleCloudDataplexV1ContentNotebook",
+            "properties": {
+                "kernelType": {
+                    "description": "Required. Kernel Type of the notebook.",
+                    "enum": [
+                        "KERNEL_TYPE_UNSPECIFIED",
+                        "PYTHON3"
+                    ],
+                    "enumDescriptions": [
+                        "Kernel Type unspecified.",
+                        "Python 3 Kernel."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ContentSqlScript": {
+            "description": "Configuration for the Sql Script content.",
+            "id": "GoogleCloudDataplexV1ContentSqlScript",
+            "properties": {
+                "engine": {
+                    "description": "Required. Query Engine to be used for the Sql Query.",
+                    "enum": [
+                        "QUERY_ENGINE_UNSPECIFIED",
+                        "SPARK"
+                    ],
+                    "enumDescriptions": [
+                        "Value was unspecified.",
+                        "Spark SQL Query."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1DiscoveryEvent": {
+            "description": "The payload associated with Discovery data processing.",
+            "id": "GoogleCloudDataplexV1DiscoveryEvent",
+            "properties": {
+                "action": {
+                    "$ref": "GoogleCloudDataplexV1DiscoveryEventActionDetails",
+                    "description": "Details about the action associated with the event."
+                },
+                "assetId": {
+                    "description": "The id of the associated asset.",
+                    "type": "string"
+                },
+                "config": {
+                    "$ref": "GoogleCloudDataplexV1DiscoveryEventConfigDetails",
+                    "description": "Details about discovery configuration in effect."
+                },
+                "dataLocation": {
+                    "description": "The data location associated with the event.",
+                    "type": "string"
+                },
+                "entity": {
+                    "$ref": "GoogleCloudDataplexV1DiscoveryEventEntityDetails",
+                    "description": "Details about the entity associated with the event."
+                },
+                "lakeId": {
+                    "description": "The id of the associated lake.",
+                    "type": "string"
+                },
+                "message": {
+                    "description": "The log message.",
+                    "type": "string"
+                },
+                "partition": {
+                    "$ref": "GoogleCloudDataplexV1DiscoveryEventPartitionDetails",
+                    "description": "Details about the partition associated with the event."
+                },
+                "type": {
+                    "description": "The type of the event being logged.",
+                    "enum": [
+                        "EVENT_TYPE_UNSPECIFIED",
+                        "CONFIG",
+                        "ENTITY_CREATED",
+                        "ENTITY_UPDATED",
+                        "ENTITY_DELETED",
+                        "PARTITION_CREATED",
+                        "PARTITION_UPDATED",
+                        "PARTITION_DELETED"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified event type.",
+                        "An event representing discovery configuration in effect.",
+                        "An event representing a metadata entity being created.",
+                        "An event representing a metadata entity being updated.",
+                        "An event representing a metadata entity being deleted.",
+                        "An event representing a partition being created.",
+                        "An event representing a partition being updated.",
+                        "An event representing a partition being deleted."
+                    ],
+                    "type": "string"
+                },
+                "zoneId": {
+                    "description": "The id of the associated zone.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1DiscoveryEventActionDetails": {
+            "description": "Details about the action.",
+            "id": "GoogleCloudDataplexV1DiscoveryEventActionDetails",
+            "properties": {
+                "type": {
+                    "description": "The type of action. Eg. IncompatibleDataSchema, InvalidDataFormat",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1DiscoveryEventConfigDetails": {
+            "description": "Details about configuration events.",
+            "id": "GoogleCloudDataplexV1DiscoveryEventConfigDetails",
+            "properties": {
+                "parameters": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "A list of discovery configuration parameters in effect. The keys are the field paths within DiscoverySpec. Eg. includePatterns, excludePatterns, csvOptions.disableTypeInference, etc.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1DiscoveryEventEntityDetails": {
+            "description": "Details about the entity.",
+            "id": "GoogleCloudDataplexV1DiscoveryEventEntityDetails",
+            "properties": {
+                "entity": {
+                    "description": "The name of the entity resource. The name is the fully-qualified resource name.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of the entity resource.",
+                    "enum": [
+                        "ENTITY_TYPE_UNSPECIFIED",
+                        "TABLE",
+                        "FILESET"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified event type.",
+                        "Entities representing structured data.",
+                        "Entities representing unstructured data."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1DiscoveryEventPartitionDetails": {
+            "description": "Details about the partition.",
+            "id": "GoogleCloudDataplexV1DiscoveryEventPartitionDetails",
+            "properties": {
+                "entity": {
+                    "description": "The name to the containing entity resource. The name is the fully-qualified resource name.",
+                    "type": "string"
+                },
+                "partition": {
+                    "description": "The name to the partition resource. The name is the fully-qualified resource name.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of the containing entity resource.",
+                    "enum": [
+                        "ENTITY_TYPE_UNSPECIFIED",
+                        "TABLE",
+                        "FILESET"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified event type.",
+                        "Entities representing structured data.",
+                        "Entities representing unstructured data."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Entity": {
+            "description": "Represents tables and fileset metadata contained within a zone.",
+            "id": "GoogleCloudDataplexV1Entity",
+            "properties": {
+                "asset": {
+                    "description": "Required. Immutable. The ID of the asset associated with the storage location containing the entity data. The entity must be with in the same zone with the asset.",
+                    "type": "string"
+                },
+                "catalogEntry": {
+                    "description": "Output only. The name of the associated Data Catalog entry.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "compatibility": {
+                    "$ref": "GoogleCloudDataplexV1EntityCompatibilityStatus",
+                    "description": "Output only. Metadata stores that the entity is compatible with.",
+                    "readOnly": true
+                },
+                "createTime": {
+                    "description": "Output only. The time when the entity was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "dataPath": {
+                    "description": "Required. Immutable. The storage path of the entity data. For Cloud Storage data, this is the fully-qualified path to the entity, such as gs://bucket/path/to/data. For BigQuery data, this is the name of the table resource, such as projects/project_id/datasets/dataset_id/tables/table_id.",
+                    "type": "string"
+                },
+                "dataPathPattern": {
+                    "description": "Optional. The set of items within the data path constituting the data in the entity, represented as a glob path. Example: gs://bucket/path/to/data/**/*.csv.",
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. User friendly longer description text. Must be shorter than or equal to 1024 characters.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Optional. Display name must be shorter than or equal to 63 characters.",
+                    "type": "string"
+                },
+                "etag": {
+                    "description": "Optional. The etag for this entity. Required for update and delete requests. Must match the server's etag.",
+                    "type": "string"
+                },
+                "format": {
+                    "$ref": "GoogleCloudDataplexV1StorageFormat",
+                    "description": "Required. Identifies the storage format of the entity data. It does not apply to entities with data stored in BigQuery."
+                },
+                "id": {
+                    "description": "Required. A user-provided entity ID. It is mutable, and will be used as the published table name. Specifying a new ID in an update entity request will override the existing value. The ID must contain only letters (a-z, A-Z), numbers (0-9), and underscores. Must begin with a letter.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The resource name of the entity, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{id}.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "schema": {
+                    "$ref": "GoogleCloudDataplexV1Schema",
+                    "description": "Required. The description of the data structure and layout. The schema is not included in list responses. It is only included in SCHEMA and FULL entity views of a GetEntity response."
+                },
+                "system": {
+                    "description": "Required. Immutable. Identifies the storage system of the entity data.",
+                    "enum": [
+                        "STORAGE_SYSTEM_UNSPECIFIED",
+                        "CLOUD_STORAGE",
+                        "BIGQUERY"
+                    ],
+                    "enumDescriptions": [
+                        "Storage system unspecified.",
+                        "The entity data is contained within a Cloud Storage bucket.",
+                        "The entity data is contained within a BigQuery dataset."
+                    ],
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. Immutable. The type of entity.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "TABLE",
+                        "FILESET"
+                    ],
+                    "enumDescriptions": [
+                        "Type unspecified.",
+                        "Structured and semi-structured data.",
+                        "Unstructured data."
+                    ],
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time when the entity was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1EntityCompatibilityStatus": {
+            "description": "Provides compatibility information for various metadata stores.",
+            "id": "GoogleCloudDataplexV1EntityCompatibilityStatus",
+            "properties": {
+                "bigquery": {
+                    "$ref": "GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility",
+                    "description": "Output only. Whether this entity is compatible with BigQuery.",
+                    "readOnly": true
+                },
+                "hiveMetastore": {
+                    "$ref": "GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility",
+                    "description": "Output only. Whether this entity is compatible with Hive Metastore.",
+                    "readOnly": true
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility": {
+            "description": "Provides compatibility information for a specific metadata store.",
+            "id": "GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility",
+            "properties": {
+                "compatible": {
+                    "description": "Output only. Whether the entity is compatible and can be represented in the metadata store.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
+                "reason": {
+                    "description": "Output only. Provides additional detail if the entity is incompatible with the metadata store.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Environment": {
+            "description": "Environment represents a user-visible compute infrastructure for analytics within a lake.",
+            "id": "GoogleCloudDataplexV1Environment",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. Environment creation time.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. Description of the environment.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Optional. User friendly display name.",
+                    "type": "string"
+                },
+                "endpoints": {
+                    "$ref": "GoogleCloudDataplexV1EnvironmentEndpoints",
+                    "description": "Output only. URI Endpoints to access sessions associated with the Environment.",
+                    "readOnly": true
+                },
+                "infrastructureSpec": {
+                    "$ref": "GoogleCloudDataplexV1EnvironmentInfrastructureSpec",
+                    "description": "Required. Infrastructure specification for the Environment."
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. User defined labels for the environment.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The relative resource name of the environment, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "sessionSpec": {
+                    "$ref": "GoogleCloudDataplexV1EnvironmentSessionSpec",
+                    "description": "Optional. Configuration for sessions created for this environment."
+                },
+                "sessionStatus": {
+                    "$ref": "GoogleCloudDataplexV1EnvironmentSessionStatus",
+                    "description": "Output only. Status of sessions created for this environment.",
+                    "readOnly": true
+                },
+                "state": {
+                    "description": "Output only. Current state of the environment.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "CREATING",
+                        "DELETING",
+                        "ACTION_REQUIRED"
+                    ],
+                    "enumDescriptions": [
+                        "State is not specified.",
+                        "Resource is active, i.e., ready to use.",
+                        "Resource is under creation.",
+                        "Resource is under deletion.",
+                        "Resource is active but has unresolved actions."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "uid": {
+                    "description": "Output only. System generated globally unique ID for the environment. This ID will be different if the environment is deleted and re-created with the same name.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time when the environment was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1EnvironmentEndpoints": {
+            "id": "GoogleCloudDataplexV1EnvironmentEndpoints",
+            "properties": {
+                "notebooks": {
+                    "description": "Output only. URI to serve notebook APIs",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "sql": {
+                    "description": "Output only. URI to serve SQL APIs",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1EnvironmentInfrastructureSpec": {
+            "description": "Configuration for the underlying infrastructure used to run workloads.",
+            "id": "GoogleCloudDataplexV1EnvironmentInfrastructureSpec",
+            "properties": {
+                "compute": {
+                    "$ref": "GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources",
+                    "description": "Optional. Compute resources needed for analyze interactive workloads."
+                },
+                "osImage": {
+                    "$ref": "GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime",
+                    "description": "Required. Software Runtime Configuration for analyze interactive workloads."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources": {
+            "description": "Compute resources associated with the analyze interactive workloads.",
+            "id": "GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources",
+            "properties": {
+                "diskSizeGb": {
+                    "description": "Optional. Size in GB of the disk. Default is 100 GB.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "maxNodeCount": {
+                    "description": "Optional. Max configurable nodes. If max_node_count > node_count, then auto-scaling is enabled.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "nodeCount": {
+                    "description": "Optional. Total number of nodes in the sessions created for this environment.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime": {
+            "description": "Software Runtime Configuration to run Analyze.",
+            "id": "GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime",
+            "properties": {
+                "imageVersion": {
+                    "description": "Required. Dataplex Image version.",
+                    "type": "string"
+                },
+                "javaLibraries": {
+                    "description": "Optional. List of Java jars to be included in the runtime environment. Valid input includes Cloud Storage URIs to Jar binaries. For example, gs://bucket-name/my/path/to/file.jar",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "properties": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. Spark properties to provide configuration for use in sessions created for this environment. The properties to set on daemon config files. Property keys are specified in prefix:property format. The prefix must be \"spark\".",
+                    "type": "object"
+                },
+                "pythonPackages": {
+                    "description": "Optional. A list of python packages to be installed. Valid formats include Cloud Storage URI to a PIP installable library. For example, gs://bucket-name/my/path/to/lib.tar.gz",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1EnvironmentSessionSpec": {
+            "id": "GoogleCloudDataplexV1EnvironmentSessionSpec",
+            "properties": {
+                "enableFastStartup": {
+                    "description": "Optional. If True, this causes sessions to be pre-created and available for faster startup to enable interactive exploration use-cases. This defaults to False to avoid additional billed charges. These can only be set to True for the environment with name set to \"default\", and with default configuration.",
+                    "type": "boolean"
+                },
+                "maxIdleDuration": {
+                    "description": "Optional. The idle time configuration of the session. The session will be auto-terminated at the end of this period.",
+                    "format": "google-duration",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1EnvironmentSessionStatus": {
+            "id": "GoogleCloudDataplexV1EnvironmentSessionStatus",
+            "properties": {
+                "active": {
+                    "description": "Output only. Queries over sessions to mark whether the environment is currently active or not",
+                    "readOnly": true,
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Job": {
+            "description": "A job represents an instance of a task.",
+            "id": "GoogleCloudDataplexV1Job",
+            "properties": {
+                "endTime": {
+                    "description": "Output only. The time when the job ended.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "message": {
+                    "description": "Output only. Additional information about the current state.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The relative resource name of the job, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/ tasks/{task_id}/jobs/{job_id}.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "retryCount": {
+                    "description": "Output only. . The number of times the job has been retried (excluding the initial attempt).",
+                    "format": "uint32",
+                    "readOnly": true,
+                    "type": "integer"
+                },
+                "service": {
+                    "description": "Output only. The underlying service running a job.",
+                    "enum": [
+                        "SERVICE_UNSPECIFIED",
+                        "DATAPROC"
+                    ],
+                    "enumDescriptions": [
+                        "Service used to run the job is unspecified.",
+                        "Dataproc service is used to run this job."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "serviceJob": {
+                    "description": "Output only. The full resource name for the job run under a particular service.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Output only. The time when the job was started.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Output only. Execution state for the job.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "RUNNING",
+                        "CANCELLING",
+                        "CANCELLED",
+                        "SUCCEEDED",
+                        "FAILED",
+                        "ABORTED"
+                    ],
+                    "enumDescriptions": [
+                        "The job state is unknown.",
+                        "The job is running.",
+                        "The job is cancelling.",
+                        "The job cancellation was successful.",
+                        "The job completed successfully.",
+                        "The job is no longer running due to an error.",
+                        "The job was cancelled outside of Dataplex."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "uid": {
+                    "description": "Output only. System generated globally unique ID for the job.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1JobEvent": {
+            "description": "The payload associated with Job logs that contains events describing jobs that have run within a Lake.",
+            "id": "GoogleCloudDataplexV1JobEvent",
+            "properties": {
+                "endTime": {
+                    "description": "The time when the job ended running.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "jobId": {
+                    "description": "The unique id identifying the job.",
+                    "type": "string"
+                },
+                "message": {
+                    "description": "The log message.",
+                    "type": "string"
+                },
+                "retries": {
+                    "description": "The number of retries.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "service": {
+                    "description": "The service used to execute the job.",
+                    "enum": [
+                        "SERVICE_UNSPECIFIED",
+                        "DATAPROC"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified service.",
+                        "Cloud Dataproc."
+                    ],
+                    "type": "string"
+                },
+                "serviceJob": {
+                    "description": "The reference to the job within the service.",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "The time when the job started running.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The job state on completion.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "SUCCEEDED",
+                        "FAILED",
+                        "CANCELLED",
+                        "ABORTED"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified job state.",
+                        "Job successfully completed.",
+                        "Job was unsuccessful.",
+                        "Job was cancelled by the user.",
+                        "Job was cancelled or aborted via the service executing the job."
+                    ],
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of the job.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "SPARK",
+                        "NOTEBOOK"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified job type.",
+                        "Spark jobs.",
+                        "Notebook jobs."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Lake": {
+            "description": "A lake is a centralized repository for managing enterprise data across the organization distributed across many cloud projects, and stored in a variety of storage services such as Google Cloud Storage and BigQuery. The resources attached to a lake are referred to as managed resources. Data within these managed resources can be structured or unstructured. A lake provides data admins with tools to organize, secure and manage their data at scale, and provides data scientists and data engineers an integrated experience to easily search, discover, analyze and transform data and associated metadata.",
+            "id": "GoogleCloudDataplexV1Lake",
+            "properties": {
+                "assetStatus": {
+                    "$ref": "GoogleCloudDataplexV1AssetStatus",
+                    "description": "Output only. Aggregated status of the underlying assets of the lake.",
+                    "readOnly": true
+                },
+                "createTime": {
+                    "description": "Output only. The time when the lake was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. Description of the lake.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Optional. User friendly display name.",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. User-defined labels for the lake.",
+                    "type": "object"
+                },
+                "metastore": {
+                    "$ref": "GoogleCloudDataplexV1LakeMetastore",
+                    "description": "Optional. Settings to manage lake and Dataproc Metastore service instance association."
+                },
+                "metastoreStatus": {
+                    "$ref": "GoogleCloudDataplexV1LakeMetastoreStatus",
+                    "description": "Output only. Metastore status of the lake.",
+                    "readOnly": true
+                },
+                "name": {
+                    "description": "Output only. The relative resource name of the lake, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "serviceAccount": {
+                    "description": "Output only. Service account associated with this lake. This service account must be authorized to access or operate on resources managed by the lake.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Output only. Current state of the lake.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "CREATING",
+                        "DELETING",
+                        "ACTION_REQUIRED"
+                    ],
+                    "enumDescriptions": [
+                        "State is not specified.",
+                        "Resource is active, i.e., ready to use.",
+                        "Resource is under creation.",
+                        "Resource is under deletion.",
+                        "Resource is active but has unresolved actions."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "uid": {
+                    "description": "Output only. System generated globally unique ID for the lake. This ID will be different if the lake is deleted and re-created with the same name.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time when the lake was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1LakeMetastore": {
+            "description": "Settings to manage association of Dataproc Metastore with a lake.",
+            "id": "GoogleCloudDataplexV1LakeMetastore",
+            "properties": {
+                "service": {
+                    "description": "Optional. A relative reference to the Dataproc Metastore (https://cloud.google.com/dataproc-metastore/docs) service associated with the lake: projects/{project_id}/locations/{location_id}/services/{service_id}",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1LakeMetastoreStatus": {
+            "description": "Status of Lake and Dataproc Metastore service instance association.",
+            "id": "GoogleCloudDataplexV1LakeMetastoreStatus",
+            "properties": {
+                "endpoint": {
+                    "description": "The URI of the endpoint used to access the Metastore service.",
+                    "type": "string"
+                },
+                "message": {
+                    "description": "Additional information about the current status.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Current state of association.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "NONE",
+                        "READY",
+                        "UPDATING",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "A Metastore service instance is not associated with the lake.",
+                        "A Metastore service instance is attached to the lake.",
+                        "Attach/detach is in progress.",
+                        "Attach/detach could not be done due to errors."
+                    ],
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Last update time of the metastore status of the lake.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListActionsResponse": {
+            "description": "List actions response.",
+            "id": "GoogleCloudDataplexV1ListActionsResponse",
+            "properties": {
+                "actions": {
+                    "description": "Actions under the given parent lake/zone/asset.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Action"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListAssetsResponse": {
+            "description": "List assets response.",
+            "id": "GoogleCloudDataplexV1ListAssetsResponse",
+            "properties": {
+                "assets": {
+                    "description": "Asset under the given parent zone.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Asset"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListContentResponse": {
+            "description": "List content response.",
+            "id": "GoogleCloudDataplexV1ListContentResponse",
+            "properties": {
+                "content": {
+                    "description": "Content under the given parent lake.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Content"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListEntitiesResponse": {
+            "description": "List metadata entities response.",
+            "id": "GoogleCloudDataplexV1ListEntitiesResponse",
+            "properties": {
+                "entities": {
+                    "description": "Entities in the specified parent zone.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Entity"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no remaining results in the list.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListEnvironmentsResponse": {
+            "description": "List environments response.",
+            "id": "GoogleCloudDataplexV1ListEnvironmentsResponse",
+            "properties": {
+                "environments": {
+                    "description": "Environments under the given parent lake.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Environment"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListJobsResponse": {
+            "description": "List jobs response.",
+            "id": "GoogleCloudDataplexV1ListJobsResponse",
+            "properties": {
+                "jobs": {
+                    "description": "Jobs under a given task.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Job"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListLakesResponse": {
+            "description": "List lakes response.",
+            "id": "GoogleCloudDataplexV1ListLakesResponse",
+            "properties": {
+                "lakes": {
+                    "description": "Lakes under the given parent location.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Lake"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                },
+                "unreachableLocations": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListPartitionsResponse": {
+            "description": "List metadata partitions response.",
+            "id": "GoogleCloudDataplexV1ListPartitionsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no remaining results in the list.",
+                    "type": "string"
+                },
+                "partitions": {
+                    "description": "Partitions under the specified parent entity.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Partition"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListSessionsResponse": {
+            "description": "List sessions response.",
+            "id": "GoogleCloudDataplexV1ListSessionsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                },
+                "sessions": {
+                    "description": "Sessions under a given environment.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Session"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListTasksResponse": {
+            "description": "List tasks response.",
+            "id": "GoogleCloudDataplexV1ListTasksResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                },
+                "tasks": {
+                    "description": "Tasks under the given parent lake.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Task"
+                    },
+                    "type": "array"
+                },
+                "unreachableLocations": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ListZonesResponse": {
+            "description": "List zones response.",
+            "id": "GoogleCloudDataplexV1ListZonesResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+                    "type": "string"
+                },
+                "zones": {
+                    "description": "Zones under the given parent lake.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1Zone"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1OperationMetadata": {
+            "description": "Represents the metadata of a long-running operation.",
+            "id": "GoogleCloudDataplexV1OperationMetadata",
+            "properties": {
+                "apiVersion": {
+                    "description": "Output only. API version used to start the operation.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "createTime": {
+                    "description": "Output only. The time the operation was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Output only. The time the operation finished running.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "requestedCancellation": {
+                    "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
+                "statusMessage": {
+                    "description": "Output only. Human-readable status of the operation, if any.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Output only. Server-defined resource path for the target of the operation.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "verb": {
+                    "description": "Output only. Name of the verb executed by the operation.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Partition": {
+            "description": "Represents partition metadata contained within entity instances.",
+            "id": "GoogleCloudDataplexV1Partition",
+            "properties": {
+                "etag": {
+                    "description": "Optional. The etag for this partition.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "Required. Immutable. The location of the entity data within the partition, for example, gs://bucket/path/to/entity/key1=value1/key2=value2. Or projects//datasets//tables/",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The values must be HTML URL encoded two times before constructing the path. For example, if you have a value of \"US:CA\", encoded it two times and you get \"US%253ACA\". Then if you have the 2nd value is \"CA#Sunnyvale\", encoded two times and you get \"CA%2523Sunnyvale\". The partition values path is \"US%253ACA/CA%2523Sunnyvale\". The final URL will be \"https://.../partitions/US%253ACA/CA%2523Sunnyvale\". The name field in the responses will always have the encoded format.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "values": {
+                    "description": "Required. Immutable. The set of values representing the partition, which correspond to the partition schema defined in the parent entity.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Schema": {
+            "description": "Schema information describing the structure and layout of the data.",
+            "id": "GoogleCloudDataplexV1Schema",
+            "properties": {
+                "fields": {
+                    "description": "Optional. The sequence of fields describing data in table entities.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1SchemaSchemaField"
+                    },
+                    "type": "array"
+                },
+                "partitionFields": {
+                    "description": "Optional. The sequence of fields describing the partition structure in entities. If this field is empty, there are no partitions within the data.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1SchemaPartitionField"
+                    },
+                    "type": "array"
+                },
+                "partitionStyle": {
+                    "description": "Optional. The structure of paths containing partition data within the entity.",
+                    "enum": [
+                        "PARTITION_STYLE_UNSPECIFIED",
+                        "HIVE_COMPATIBLE"
+                    ],
+                    "enumDescriptions": [
+                        "PartitionStyle unspecified",
+                        "Partitions are hive-compatible. Examples: gs://bucket/path/to/table/dt=2019-10-31/lang=en, gs://bucket/path/to/table/dt=2019-10-31/lang=en/late."
+                    ],
+                    "type": "string"
+                },
+                "userManaged": {
+                    "description": "Required. Whether the schema is user-managed or managed by the service. - Set user_manage to false if you would like Dataplex to help you manage the schema. You will get the full service provided by Dataplex discovery, including new data discovery, schema inference and schema evolution. You can still provide input the schema of the entities, for example renaming a schema field, changing CSV or Json options if you think the discovered values are not as accurate. Dataplex will consider your input as the initial schema (as if they were produced by the previous discovery run), and will evolve schema or flag actions based on that. - Set user_manage to true if you would like to fully manage the entity schema by yourself. This is useful when you would like to manually specify the schema for a table. In this case, the schema defined by the user is guaranteed to be kept unchanged and would not be overwritten. But this also means Dataplex will not provide schema evolution management for you. Dataplex will still be able to manage partition registration (i.e., keeping the list of partitions up to date) when Dataplex discovery is turned on and user_managed is set to true.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1SchemaPartitionField": {
+            "description": "Represents a key field within the entity's partition structure. You could have up to 20 partition fields, but only the first 10 partitions have the filtering ability due to performance consideration.",
+            "id": "GoogleCloudDataplexV1SchemaPartitionField",
+            "properties": {
+                "name": {
+                    "description": "Required. Partition name is editable if only the partition style is not HIVE compatible. The maximum length allowed is 767 characters.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. Immutable. The type of field.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "BOOLEAN",
+                        "BYTE",
+                        "INT16",
+                        "INT32",
+                        "INT64",
+                        "FLOAT",
+                        "DOUBLE",
+                        "DECIMAL",
+                        "STRING",
+                        "BINARY",
+                        "TIMESTAMP",
+                        "DATE",
+                        "TIME",
+                        "RECORD",
+                        "NULL"
+                    ],
+                    "enumDescriptions": [
+                        "SchemaType unspecified.",
+                        "Boolean field.",
+                        "Single byte numeric field.",
+                        "16-bit numeric field.",
+                        "32-bit numeric field.",
+                        "64-bit numeric field.",
+                        "Floating point numeric field.",
+                        "Double precision numeric field.",
+                        "Real value numeric field.",
+                        "Sequence of characters field.",
+                        "Sequence of bytes field.",
+                        "Date and time field.",
+                        "Date field.",
+                        "Time field.",
+                        "Structured field. Nested fields that define the structure of the map. If all nested fields are nullable, this field represents a union.",
+                        "Null field that does not have values."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1SchemaSchemaField": {
+            "description": "Represents a column field within a table schema.",
+            "id": "GoogleCloudDataplexV1SchemaSchemaField",
+            "properties": {
+                "description": {
+                    "description": "Optional. User friendly field description. Must be less than or equal to 1024 characters.",
+                    "type": "string"
+                },
+                "fields": {
+                    "description": "Optional. Any nested field for complex types.",
+                    "items": {
+                        "$ref": "GoogleCloudDataplexV1SchemaSchemaField"
+                    },
+                    "type": "array"
+                },
+                "mode": {
+                    "description": "Required. Additional field semantics.",
+                    "enum": [
+                        "MODE_UNSPECIFIED",
+                        "REQUIRED",
+                        "NULLABLE",
+                        "REPEATED"
+                    ],
+                    "enumDescriptions": [
+                        "Mode unspecified.",
+                        "The field has required semantics.",
+                        "The field has optional semantics, and may be null.",
+                        "The field has repeated (0 or more) semantics, and is a list of values."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Required. The name of the field. The maximum length is 767 characters. The name must begins with a letter and not contains : and ..",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. The type of field.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "BOOLEAN",
+                        "BYTE",
+                        "INT16",
+                        "INT32",
+                        "INT64",
+                        "FLOAT",
+                        "DOUBLE",
+                        "DECIMAL",
+                        "STRING",
+                        "BINARY",
+                        "TIMESTAMP",
+                        "DATE",
+                        "TIME",
+                        "RECORD",
+                        "NULL"
+                    ],
+                    "enumDescriptions": [
+                        "SchemaType unspecified.",
+                        "Boolean field.",
+                        "Single byte numeric field.",
+                        "16-bit numeric field.",
+                        "32-bit numeric field.",
+                        "64-bit numeric field.",
+                        "Floating point numeric field.",
+                        "Double precision numeric field.",
+                        "Real value numeric field.",
+                        "Sequence of characters field.",
+                        "Sequence of bytes field.",
+                        "Date and time field.",
+                        "Date field.",
+                        "Time field.",
+                        "Structured field. Nested fields that define the structure of the map. If all nested fields are nullable, this field represents a union.",
+                        "Null field that does not have values."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Session": {
+            "description": "Represents an active analyze session running for a user.",
+            "id": "GoogleCloudDataplexV1Session",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. Session start time.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Output only. The relative resource name of the content, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}/sessions/{session_id}",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "state": {
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "CREATING",
+                        "DELETING",
+                        "ACTION_REQUIRED"
+                    ],
+                    "enumDescriptions": [
+                        "State is not specified.",
+                        "Resource is active, i.e., ready to use.",
+                        "Resource is under creation.",
+                        "Resource is under deletion.",
+                        "Resource is active but has unresolved actions."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "userId": {
+                    "description": "Output only. Email of user running the session.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1SessionEvent": {
+            "description": "These messages contain information about sessions within an environment. The monitored resource is 'Environment'.",
+            "id": "GoogleCloudDataplexV1SessionEvent",
+            "properties": {
+                "message": {
+                    "description": "The log message.",
+                    "type": "string"
+                },
+                "query": {
+                    "$ref": "GoogleCloudDataplexV1SessionEventQueryDetail",
+                    "description": "The execution details of the query."
+                },
+                "sessionId": {
+                    "description": "Unique identifier for the session.",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "The type of the event.",
+                    "enum": [
+                        "EVENT_TYPE_UNSPECIFIED",
+                        "START",
+                        "STOP",
+                        "QUERY"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified event type.",
+                        "Event for start of a session.",
+                        "Event for stop of a session.",
+                        "Query events in the session."
+                    ],
+                    "type": "string"
+                },
+                "userId": {
+                    "description": "The information about the user that created the session.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1SessionEventQueryDetail": {
+            "description": "Execution details of the query.",
+            "id": "GoogleCloudDataplexV1SessionEventQueryDetail",
+            "properties": {
+                "dataProcessedBytes": {
+                    "description": "The data processed by the query.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "duration": {
+                    "description": "Time taken for execution of the query.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "engine": {
+                    "description": "Query Execution engine.",
+                    "enum": [
+                        "ENGINE_UNSPECIFIED",
+                        "SPARK_SQL",
+                        "BIGQUERY"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified Engine type.",
+                        "Spark-sql engine is specified in Query.",
+                        "BigQuery engine is specified in Query."
+                    ],
+                    "type": "string"
+                },
+                "queryId": {
+                    "description": "The unique Query id identifying the query.",
+                    "type": "string"
+                },
+                "queryText": {
+                    "description": "The query text executed.",
+                    "type": "string"
+                },
+                "resultSizeBytes": {
+                    "description": "The size of results the query produced.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1StorageFormat": {
+            "description": "Describes the format of the data within its storage location.",
+            "id": "GoogleCloudDataplexV1StorageFormat",
+            "properties": {
+                "compressionFormat": {
+                    "description": "Optional. The compression type associated with the stored data. If unspecified, the data is uncompressed.",
+                    "enum": [
+                        "COMPRESSION_FORMAT_UNSPECIFIED",
+                        "GZIP",
+                        "BZIP2"
+                    ],
+                    "enumDescriptions": [
+                        "CompressionFormat unspecified. Implies uncompressed data.",
+                        "GZip compressed set of files.",
+                        "BZip2 compressed set of files."
+                    ],
+                    "type": "string"
+                },
+                "csv": {
+                    "$ref": "GoogleCloudDataplexV1StorageFormatCsvOptions",
+                    "description": "Optional. Additional information about CSV formatted data."
+                },
+                "format": {
+                    "description": "Output only. The data format associated with the stored data, which represents content type values. The value is inferred from mime type.",
+                    "enum": [
+                        "FORMAT_UNSPECIFIED",
+                        "PARQUET",
+                        "AVRO",
+                        "ORC",
+                        "CSV",
+                        "JSON",
+                        "IMAGE",
+                        "AUDIO",
+                        "VIDEO",
+                        "TEXT",
+                        "TFRECORD",
+                        "OTHER",
+                        "UNKNOWN"
+                    ],
+                    "enumDescriptions": [
+                        "Format unspecified.",
+                        "Parquet-formatted structured data.",
+                        "Avro-formatted structured data.",
+                        "Orc-formatted structured data.",
+                        "Csv-formatted semi-structured data.",
+                        "Json-formatted semi-structured data.",
+                        "Image data formats (such as jpg and png).",
+                        "Audio data formats (such as mp3, and wav).",
+                        "Video data formats (such as mp4 and mpg).",
+                        "Textual data formats (such as txt and xml).",
+                        "TensorFlow record format.",
+                        "Data that doesn't match a specific format.",
+                        "Data of an unknown format."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "json": {
+                    "$ref": "GoogleCloudDataplexV1StorageFormatJsonOptions",
+                    "description": "Optional. Additional information about CSV formatted data."
+                },
+                "mimeType": {
+                    "description": "Required. The mime type descriptor for the data. Must match the pattern {type}/{subtype}. Supported values: - application/x-parquet - application/x-avro - application/x-orc - application/x-tfrecord - application/json - application/{subtypes} - text/csv - text/ - image/{image subtype} - video/{video subtype} - audio/{audio subtype}",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1StorageFormatCsvOptions": {
+            "description": "Describes CSV and similar semi-structured data formats.",
+            "id": "GoogleCloudDataplexV1StorageFormatCsvOptions",
+            "properties": {
+                "delimiter": {
+                    "description": "Optional. The delimiter used to separate values. Defaults to ','.",
+                    "type": "string"
+                },
+                "encoding": {
+                    "description": "Optional. The character encoding of the data. Accepts \"US-ASCII\", \"UTF-8\", and \"ISO-8859-1\". Defaults to UTF-8 if unspecified.",
+                    "type": "string"
+                },
+                "headerRows": {
+                    "description": "Optional. The number of rows to interpret as header rows that should be skipped when reading data rows. Defaults to 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "quote": {
+                    "description": "Optional. The character used to quote column values. Accepts '\"' and '''. Defaults to '\"' if unspecified.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1StorageFormatJsonOptions": {
+            "description": "Describes JSON data format.",
+            "id": "GoogleCloudDataplexV1StorageFormatJsonOptions",
+            "properties": {
+                "encoding": {
+                    "description": "Optional. The character encoding of the data. Accepts \"US-ASCII\", \"UTF-8\" and \"ISO-8859-1\". Defaults to UTF-8 if not specified.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Task": {
+            "description": "A task represents a user-visible job.",
+            "id": "GoogleCloudDataplexV1Task",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. The time when the task was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. Description of the task.",
+                    "type": "string"
+                },
+                "displayName": {
+                    "description": "Optional. User friendly display name.",
+                    "type": "string"
+                },
+                "executionSpec": {
+                    "$ref": "GoogleCloudDataplexV1TaskExecutionSpec",
+                    "description": "Required. Spec related to how a task is executed."
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. User-defined labels for the task.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The relative resource name of the task, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/ tasks/{task_id}.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "spark": {
+                    "$ref": "GoogleCloudDataplexV1TaskSparkTaskConfig",
+                    "description": "Config related to running custom Spark tasks."
+                },
+                "state": {
+                    "description": "Output only. Current state of the task.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "CREATING",
+                        "DELETING",
+                        "ACTION_REQUIRED"
+                    ],
+                    "enumDescriptions": [
+                        "State is not specified.",
+                        "Resource is active, i.e., ready to use.",
+                        "Resource is under creation.",
+                        "Resource is under deletion.",
+                        "Resource is active but has unresolved actions."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "triggerSpec": {
+                    "$ref": "GoogleCloudDataplexV1TaskTriggerSpec",
+                    "description": "Required. Spec related to how often and when a task should be triggered."
+                },
+                "uid": {
+                    "description": "Output only. System generated globally unique ID for the task. This ID will be different if the task is deleted and re-created with the same name.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time when the task was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1TaskExecutionSpec": {
+            "description": "Execution related settings, like retry and service_account.",
+            "id": "GoogleCloudDataplexV1TaskExecutionSpec",
+            "properties": {
+                "args": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. The arguments to pass to the task. The args can use placeholders of the format ${placeholder} as part of key/value string. These will be interpolated before passing the args to the driver. Currently supported placeholders: - ${task_id} - ${job_time} To pass positional args, set the key as TASK_ARGS. The value should be a comma-separated string of all the positional arguments. To use a delimiter other than comma, refer to https://cloud.google.com/sdk/gcloud/reference/topic/escaping. In case of other keys being present in the args, then TASK_ARGS will be passed as the last argument.",
+                    "type": "object"
+                },
+                "maxJobExecutionLifetime": {
+                    "description": "Optional. The maximum duration after which the job execution is expired.",
+                    "format": "google-duration",
+                    "type": "string"
+                },
+                "serviceAccount": {
+                    "description": "Required. Service account to use to execute a task. If not provided, the default Compute service account for the project is used.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1TaskInfrastructureSpec": {
+            "description": "Configuration for the underlying infrastructure used to run workloads.",
+            "id": "GoogleCloudDataplexV1TaskInfrastructureSpec",
+            "properties": {
+                "batch": {
+                    "$ref": "GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources",
+                    "description": "Compute resources needed for a Task when using Dataproc Serverless."
+                },
+                "containerImage": {
+                    "$ref": "GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime",
+                    "description": "Container Image Runtime Configuration."
+                },
+                "vpcNetwork": {
+                    "$ref": "GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork",
+                    "description": "Vpc network."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources": {
+            "description": "Batch compute resources associated with the task.",
+            "id": "GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources",
+            "properties": {
+                "executorsCount": {
+                    "description": "Optional. Total number of job executors.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "maxExecutorsCount": {
+                    "description": "Optional. Max configurable executors. If max_executors_count > executors_count, then auto-scaling is enabled.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime": {
+            "description": "Container Image Runtime Configuration used with Batch execution.",
+            "id": "GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime",
+            "properties": {
+                "javaJars": {
+                    "description": "Optional. A list of Java JARS to add to the classpath. Valid input includes Cloud Storage URIs to Jar binaries. For example, gs://bucket-name/my/path/to/file.jar",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "properties": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. Override to common configuration of open source components installed on the Dataproc cluster. The properties to set on daemon config files. Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. For more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties).",
+                    "type": "object"
+                },
+                "pythonPackages": {
+                    "description": "Optional. A list of python packages to be installed. Valid formats include Cloud Storage URI to a PIP installable library. For example, gs://bucket-name/my/path/to/lib.tar.gz",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork": {
+            "description": "Cloud VPC Network used to run the infrastructure.",
+            "id": "GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork",
+            "properties": {
+                "network": {
+                    "description": "Optional. The Cloud VPC network in which the job is run. By default, the Cloud VPC network named Default within the project is used.",
+                    "type": "string"
+                },
+                "networkTags": {
+                    "description": "Optional. List of network tags to apply to the job.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "subNetwork": {
+                    "description": "Optional. The Cloud VPC sub-network in which the job is run.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1TaskSparkTaskConfig": {
+            "description": "User-specified config for running a Spark task.",
+            "id": "GoogleCloudDataplexV1TaskSparkTaskConfig",
+            "properties": {
+                "archiveUris": {
+                    "description": "Optional. Cloud Storage URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "fileUris": {
+                    "description": "Optional. Cloud Storage URIs of files to be placed in the working directory of each executor.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "infrastructureSpec": {
+                    "$ref": "GoogleCloudDataplexV1TaskInfrastructureSpec",
+                    "description": "Optional. Infrastructure specification for the execution."
+                },
+                "mainClass": {
+                    "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris. The execution args are passed in as a sequence of named process arguments (--key=value).",
+                    "type": "string"
+                },
+                "mainJarFileUri": {
+                    "description": "The Cloud Storage URI of the jar file that contains the main class. The execution args are passed in as a sequence of named process arguments (--key=value).",
+                    "type": "string"
+                },
+                "pythonScriptFile": {
+                    "description": "The Gcloud Storage URI of the main Python file to use as the driver. Must be a .py file. The execution args are passed in as a sequence of named process arguments (--key=value).",
+                    "type": "string"
+                },
+                "sqlScript": {
+                    "description": "The query text. The execution args are used to declare a set of script variables (set key=\"value\";).",
+                    "type": "string"
+                },
+                "sqlScriptFile": {
+                    "description": "A reference to a query file. This can be the Cloud Storage URI of the query file or it can the path to a SqlScript Content. The execution args are used to declare a set of script variables (set key=\"value\";).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1TaskTriggerSpec": {
+            "description": "Task scheduling and trigger settings.",
+            "id": "GoogleCloudDataplexV1TaskTriggerSpec",
+            "properties": {
+                "disabled": {
+                    "description": "Optional. Prevent the task from executing. This does not cancel already running tasks. It is intended to temporarily disable RECURRING tasks.",
+                    "type": "boolean"
+                },
+                "maxRetries": {
+                    "description": "Optional. Number of retry attempts before aborting. Set to zero to never attempt to retry a failed task.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "schedule": {
+                    "description": "Optional. Cron schedule (https://en.wikipedia.org/wiki/Cron) for running tasks periodically. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\". This field is required for RECURRING tasks.",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "Optional. The first run of the task will be after this time. If not specified, the task will run shortly after being submitted if ON_DEMAND and based on the schedule if RECURRING.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. Immutable. Trigger type of the user-specified Task.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "ON_DEMAND",
+                        "RECURRING"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified trigger type.",
+                        "The task runs one-time shortly after Task Creation.",
+                        "The task is scheduled to run periodically."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1Zone": {
+            "description": "A zone represents a logical group of related assets within a lake. A zone can be used to map to organizational structure or represent stages of data readiness from raw to curated. It provides managing behavior that is shared or inherited by all contained assets.",
+            "id": "GoogleCloudDataplexV1Zone",
+            "properties": {
+                "assetStatus": {
+                    "$ref": "GoogleCloudDataplexV1AssetStatus",
+                    "description": "Output only. Aggregated status of the underlying assets of the zone.",
+                    "readOnly": true
+                },
+                "createTime": {
+                    "description": "Output only. The time when the zone was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Optional. Description of the zone.",
+                    "type": "string"
+                },
+                "discoverySpec": {
+                    "$ref": "GoogleCloudDataplexV1ZoneDiscoverySpec",
+                    "description": "Optional. Specification of the discovery feature applied to data in this zone."
+                },
+                "displayName": {
+                    "description": "Optional. User friendly display name.",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. User defined labels for the zone.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The relative resource name of the zone, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "resourceSpec": {
+                    "$ref": "GoogleCloudDataplexV1ZoneResourceSpec",
+                    "description": "Required. Specification of the resources that are referenced by the assets within this zone."
+                },
+                "state": {
+                    "description": "Output only. Current state of the zone.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "CREATING",
+                        "DELETING",
+                        "ACTION_REQUIRED"
+                    ],
+                    "enumDescriptions": [
+                        "State is not specified.",
+                        "Resource is active, i.e., ready to use.",
+                        "Resource is under creation.",
+                        "Resource is under deletion.",
+                        "Resource is active but has unresolved actions."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Required. Immutable. The type of the zone.",
+                    "enum": [
+                        "TYPE_UNSPECIFIED",
+                        "RAW",
+                        "CURATED"
+                    ],
+                    "enumDescriptions": [
+                        "Zone type not specified.",
+                        "A zone that contains data that needs further processing before it is considered generally ready for consumption and analytics workloads.",
+                        "A zone that contains data that is considered to be ready for broader consumption and analytics workloads. Curated structured data stored in Cloud Storage must conform to certain file formats (parquet, avro and orc) and organized in a hive-compatible directory layout."
+                    ],
+                    "type": "string"
+                },
+                "uid": {
+                    "description": "Output only. System generated globally unique ID for the zone. This ID will be different if the zone is deleted and re-created with the same name.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. The time when the zone was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ZoneDiscoverySpec": {
+            "description": "Settings to manage the metadata discovery and publishing in a zone.",
+            "id": "GoogleCloudDataplexV1ZoneDiscoverySpec",
+            "properties": {
+                "csvOptions": {
+                    "$ref": "GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions",
+                    "description": "Optional. Configuration for CSV data."
+                },
+                "enabled": {
+                    "description": "Required. Whether discovery is enabled.",
+                    "type": "boolean"
+                },
+                "excludePatterns": {
+                    "description": "Optional. The list of patterns to apply for selecting data to exclude during discovery. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "includePatterns": {
+                    "description": "Optional. The list of patterns to apply for selecting data to include during discovery if only a subset of the data should considered. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "jsonOptions": {
+                    "$ref": "GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions",
+                    "description": "Optional. Configuration for Json data."
+                },
+                "schedule": {
+                    "description": "Optional. Cron schedule (https://en.wikipedia.org/wiki/Cron) for running discovery periodically. Successive discovery runs must be scheduled at least 60 minutes apart. The default value is to run discovery every 60 minutes. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\".",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions": {
+            "description": "Describe CSV and similar semi-structured data formats.",
+            "id": "GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions",
+            "properties": {
+                "delimiter": {
+                    "description": "Optional. The delimiter being used to separate values. This defaults to ','.",
+                    "type": "string"
+                },
+                "disableTypeInference": {
+                    "description": "Optional. Whether to disable the inference of data type for CSV data. If true, all columns will be registered as strings.",
+                    "type": "boolean"
+                },
+                "encoding": {
+                    "description": "Optional. The character encoding of the data. The default is UTF-8.",
+                    "type": "string"
+                },
+                "headerRows": {
+                    "description": "Optional. The number of rows to interpret as header rows that should be skipped when reading data rows.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions": {
+            "description": "Describe JSON data format.",
+            "id": "GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions",
+            "properties": {
+                "disableTypeInference": {
+                    "description": "Optional. Whether to disable the inference of data type for Json data. If true, all columns will be registered as their primitive types (strings, number or boolean).",
+                    "type": "boolean"
+                },
+                "encoding": {
+                    "description": "Optional. The character encoding of the data. The default is UTF-8.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDataplexV1ZoneResourceSpec": {
+            "description": "Settings for resources attached as assets within a zone.",
+            "id": "GoogleCloudDataplexV1ZoneResourceSpec",
+            "properties": {
+                "locationType": {
+                    "description": "Required. Immutable. The location type of the resources that are allowed to be attached to the assets within this zone.",
+                    "enum": [
+                        "LOCATION_TYPE_UNSPECIFIED",
+                        "SINGLE_REGION",
+                        "MULTI_REGION"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified location type.",
+                        "Resources that are associated with a single region.",
+                        "Resources that are associated with a multi-region location."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudLocationListLocationsResponse": {
+            "description": "The response message for Locations.ListLocations.",
+            "id": "GoogleCloudLocationListLocationsResponse",
+            "properties": {
+                "locations": {
+                    "description": "A list of locations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "GoogleCloudLocationLocation"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudLocationLocation": {
+            "description": "A resource that represents Google Cloud Platform location.",
+            "id": "GoogleCloudLocationLocation",
+            "properties": {
+                "displayName": {
+                    "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"} ",
+                    "type": "object"
+                },
+                "locationId": {
+                    "description": "The canonical id for this location. For example: \"us-east1\".",
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata. For example the available capacity at the given location.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleIamV1AuditConfig": {
+            "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
+            "id": "GoogleIamV1AuditConfig",
+            "properties": {
+                "auditLogConfigs": {
+                    "description": "The configuration for logging of each type of permission.",
+                    "items": {
+                        "$ref": "GoogleIamV1AuditLogConfig"
+                    },
+                    "type": "array"
+                },
+                "service": {
+                    "description": "Specifies a service that will be enabled for audit logging. For example, storage.googleapis.com, cloudsql.googleapis.com. allServices is a special value that covers all services.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleIamV1AuditLogConfig": {
+            "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+            "id": "GoogleIamV1AuditLogConfig",
+            "properties": {
+                "exemptedMembers": {
+                    "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "logType": {
+                    "description": "The log type that this config enables.",
+                    "enum": [
+                        "LOG_TYPE_UNSPECIFIED",
+                        "ADMIN_READ",
+                        "DATA_WRITE",
+                        "DATA_READ"
+                    ],
+                    "enumDescriptions": [
+                        "Default case. Should never be this.",
+                        "Admin reads. Example: CloudIAM getIamPolicy",
+                        "Data writes. Example: CloudSQL Users create",
+                        "Data reads. Example: CloudSQL Users list"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleIamV1Binding": {
+            "description": "Associates members, or principals, with a role.",
+            "id": "GoogleIamV1Binding",
+            "properties": {
+                "condition": {
+                    "$ref": "GoogleTypeExpr",
+                    "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
+                },
+                "members": {
+                    "description": "Specifies the principals requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "role": {
+                    "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleIamV1Policy": {
+            "description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.A Policy is a collection of bindings. A binding binds one or more members, or principals, to a single role. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A role is a named list of permissions; each role can be an IAM predefined role or a user-created custom role.For some types of Google Cloud resources, a binding can also specify a condition, which is a logical expression that allows access to a resource only if the expression evaluates to true. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).JSON example: { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } YAML example: bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For a description of IAM and its features, see the IAM documentation (https://cloud.google.com/iam/docs/).",
+            "id": "GoogleIamV1Policy",
+            "properties": {
+                "auditConfigs": {
+                    "description": "Specifies cloud audit logging configuration for this policy.",
+                    "items": {
+                        "$ref": "GoogleIamV1AuditConfig"
+                    },
+                    "type": "array"
+                },
+                "bindings": {
+                    "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
+                    "items": {
+                        "$ref": "GoogleIamV1Binding"
+                    },
+                    "type": "array"
+                },
+                "etag": {
+                    "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleIamV1SetIamPolicyRequest": {
+            "description": "Request message for SetIamPolicy method.",
+            "id": "GoogleIamV1SetIamPolicyRequest",
+            "properties": {
+                "policy": {
+                    "$ref": "GoogleIamV1Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the resource. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them."
+                },
+                "updateMask": {
+                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\"",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleIamV1TestIamPermissionsRequest": {
+            "description": "Request message for TestIamPermissions method.",
+            "id": "GoogleIamV1TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "The set of permissions to check for the resource. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see IAM Overview (https://cloud.google.com/iam/docs/overview#permissions).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleIamV1TestIamPermissionsResponse": {
+            "description": "Response message for TestIamPermissions method.",
+            "id": "GoogleIamV1TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of TestPermissionsRequest.permissions that the caller is allowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleLongrunningCancelOperationRequest": {
+            "description": "The request message for Operations.CancelOperation.",
+            "id": "GoogleLongrunningCancelOperationRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "GoogleLongrunningListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "GoogleLongrunningListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "GoogleLongrunningOperation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleLongrunningOperation": {
+            "description": "This resource represents a long-running operation that is the result of a network API call.",
+            "id": "GoogleLongrunningOperation",
+            "properties": {
+                "done": {
+                    "description": "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.",
+                    "type": "boolean"
+                },
+                "error": {
+                    "$ref": "GoogleRpcStatus",
+                    "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 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.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "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}.",
+                    "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 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.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleRpcStatus": {
+            "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.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).",
+            "id": "GoogleRpcStatus",
+            "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 message 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 user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleTypeExpr": {
+            "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+            "id": "GoogleTypeExpr",
+            "properties": {
+                "description": {
+                    "description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+                    "type": "string"
+                },
+                "expression": {
+                    "description": "Textual representation of an expression in Common Expression Language syntax.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Cloud Dataplex API",
+    "version": "v1",
+    "version_module": true
+}
\ No newline at end of file
diff --git a/discovery/googleapis/dataproc__v1.json b/discovery/googleapis/dataproc__v1.json
index ec984d4..7e4038f 100644
--- a/discovery/googleapis/dataproc__v1.json
+++ b/discovery/googleapis/dataproc__v1.json
@@ -2442,7 +2442,7 @@
             }
         }
     },
-    "revision": "20220113",
+    "revision": "20220201",
     "rootUrl": "https://dataproc.googleapis.com/",
     "schemas": {
         "AcceleratorConfig": {
@@ -2813,6 +2813,10 @@
                     "description": "Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging and temp buckets (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). This field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket.",
                     "type": "string"
                 },
+                "dataprocMetricConfig": {
+                    "$ref": "DataprocMetricConfig",
+                    "description": "Optional. The configuration(s) for a dataproc metric(s)."
+                },
                 "encryptionConfig": {
                     "$ref": "EncryptionConfig",
                     "description": "Optional. Encryption settings for the cluster."
@@ -3056,7 +3060,7 @@
                     "enumDescriptions": [
                         "The cluster state is unknown.",
                         "The cluster is being created and set up. It is not ready for use.",
-                        "The cluster is currently running and healthy. It is ready for use.",
+                        "The cluster is currently running and healthy. It is ready for use.Note: The cluster state changes from \"creating\" to \"running\" status after the master node(s), first two primary worker nodes (and the last primary worker node if primary workers > 2) are running.",
                         "The cluster encountered an error. It is not ready for use.",
                         "The cluster has encountered an error while being updated. Jobs can be submitted to the cluster, but the cluster cannot be updated.",
                         "The cluster is being deleted. It cannot be used.",
@@ -3103,6 +3107,20 @@
             },
             "type": "object"
         },
+        "DataprocMetricConfig": {
+            "description": "Contains dataproc metric config.",
+            "id": "DataprocMetricConfig",
+            "properties": {
+                "metrics": {
+                    "description": "Required. Metrics to be enabled.",
+                    "items": {
+                        "$ref": "Metric"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "DiagnoseClusterRequest": {
             "description": "A request to collect cluster diagnostic information.",
             "id": "DiagnoseClusterRequest",
@@ -3135,7 +3153,7 @@
                     "type": "string"
                 },
                 "localSsdInterface": {
-                    "description": "Optional. Interface type of local SSDs (default is \"scsi\"). Valid values: \"scsi\" (Small Computer System Interface), \"nvme\" (Non-Volatile Memory Express). See SSD Interface types (https://cloud.google.com/compute/docs/disks/local-ssd#performance).",
+                    "description": "Optional. Interface type of local SSDs (default is \"scsi\"). Valid values: \"scsi\" (Small Computer System Interface), \"nvme\" (Non-Volatile Memory Express). See local SSD performance (https://cloud.google.com/compute/docs/disks/local-ssd#performance).",
                     "type": "string"
                 },
                 "numLocalSsds": {
@@ -4173,6 +4191,42 @@
             },
             "type": "object"
         },
+        "Metric": {
+            "description": "Metric source to enable along with any optional metrics for this source that override the dataproc defaults",
+            "id": "Metric",
+            "properties": {
+                "metricOverrides": {
+                    "description": "Optional. Optional Metrics to override the dataproc default metrics configured for the metric source",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "metricSource": {
+                    "description": "Required. MetricSource that should be enabled",
+                    "enum": [
+                        "METRIC_SOURCE_UNSPECIFIED",
+                        "MONITORING_AGENT_DEFAULTS",
+                        "HDFS",
+                        "SPARK",
+                        "YARN",
+                        "SPARK_HISTORY_SERVER",
+                        "HIVESERVER2"
+                    ],
+                    "enumDescriptions": [
+                        "Required unspecified metric source",
+                        "all default monitoring agent metrics that are published with prefix \"agent.googleapis.com\" when we enable a monitoring agent in Compute Engine",
+                        "Hdfs metric source",
+                        "Spark metric source",
+                        "Yarn metric source",
+                        "Spark history server metric source",
+                        "hiveserver2 metric source"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "NamespacedGkeDeploymentTarget": {
             "description": "A full, namespace-isolated deployment target for an existing GKE cluster.",
             "id": "NamespacedGkeDeploymentTarget",
@@ -4837,7 +4891,7 @@
             "type": "object"
         },
         "SparkBatch": {
-            "description": "A configuration for running an Apache Spark (http://spark.apache.org/) batch workload.",
+            "description": "A configuration for running an Apache Spark (https://spark.apache.org/) batch workload.",
             "id": "SparkBatch",
             "properties": {
                 "archiveUris": {
@@ -4891,7 +4945,7 @@
             "type": "object"
         },
         "SparkJob": {
-            "description": "A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN.",
+            "description": "A Dataproc job for running Apache Spark (https://spark.apache.org/) applications on YARN.",
             "id": "SparkJob",
             "properties": {
                 "archiveUris": {
@@ -5020,7 +5074,7 @@
             "type": "object"
         },
         "SparkSqlBatch": {
-            "description": "A configuration for running Apache Spark SQL (http://spark.apache.org/sql/) queries as a batch workload.",
+            "description": "A configuration for running Apache Spark SQL (https://spark.apache.org/sql/) queries as a batch workload.",
             "id": "SparkSqlBatch",
             "properties": {
                 "jarFileUris": {
@@ -5045,7 +5099,7 @@
             "type": "object"
         },
         "SparkSqlJob": {
-            "description": "A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries.",
+            "description": "A Dataproc job for running Apache Spark SQL (https://spark.apache.org/sql/) queries.",
             "id": "SparkSqlJob",
             "properties": {
                 "jarFileUris": {
diff --git a/discovery/googleapis/datastore__v1.json b/discovery/googleapis/datastore__v1.json
index cc2c85b..df0a8f6 100644
--- a/discovery/googleapis/datastore__v1.json
+++ b/discovery/googleapis/datastore__v1.json
@@ -624,7 +624,7 @@
             }
         }
     },
-    "revision": "20220110",
+    "revision": "20220207",
     "rootUrl": "https://datastore.googleapis.com/",
     "schemas": {
         "AllocateIdsRequest": {
@@ -1267,12 +1267,14 @@
                     "enum": [
                         "CONCURRENCY_MODE_UNSPECIFIED",
                         "PESSIMISTIC",
-                        "OPTIMISTIC"
+                        "OPTIMISTIC",
+                        "OPTIMISTIC_WITH_ENTITY_GROUPS"
                     ],
                     "enumDescriptions": [
                         "Unspecified.",
                         "Pessimistic concurrency.",
-                        "Optimistic concurrency."
+                        "Optimistic concurrency.",
+                        "Optimistic concurrency with entity groups."
                     ],
                     "type": "string"
                 }
@@ -1305,12 +1307,14 @@
                     "enum": [
                         "CONCURRENCY_MODE_UNSPECIFIED",
                         "PESSIMISTIC",
-                        "OPTIMISTIC"
+                        "OPTIMISTIC",
+                        "OPTIMISTIC_WITH_ENTITY_GROUPS"
                     ],
                     "enumDescriptions": [
                         "Unspecified.",
                         "Pessimistic concurrency.",
-                        "Optimistic concurrency."
+                        "Optimistic concurrency.",
+                        "Optimistic concurrency with entity groups."
                     ],
                     "type": "string"
                 }
diff --git a/discovery/googleapis/datastream__v1.json b/discovery/googleapis/datastream__v1.json
index 6888773..7bf7450 100644
--- a/discovery/googleapis/datastream__v1.json
+++ b/discovery/googleapis/datastream__v1.json
@@ -1215,7 +1215,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220126",
     "rootUrl": "https://datastream.googleapis.com/",
     "schemas": {
         "AvroFileFormat": {
diff --git a/discovery/googleapis/deploymentmanager__v2.json b/discovery/googleapis/deploymentmanager__v2.json
index 181eb59..91c233d 100644
--- a/discovery/googleapis/deploymentmanager__v2.json
+++ b/discovery/googleapis/deploymentmanager__v2.json
@@ -987,7 +987,7 @@
             }
         }
     },
-    "revision": "20220114",
+    "revision": "20220203",
     "rootUrl": "https://deploymentmanager.googleapis.com/",
     "schemas": {
         "AuditConfig": {
diff --git a/discovery/googleapis/dialogflow__v2.json b/discovery/googleapis/dialogflow__v2.json
index af4c202..917733b 100644
--- a/discovery/googleapis/dialogflow__v2.json
+++ b/discovery/googleapis/dialogflow__v2.json
@@ -7185,7 +7185,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220214",
     "rootUrl": "https://dialogflow.googleapis.com/",
     "schemas": {
         "GoogleCloudDialogflowCxV3AudioInput": {
diff --git a/discovery/googleapis/dialogflow__v3.json b/discovery/googleapis/dialogflow__v3.json
index 7e6990f..cc37095 100644
--- a/discovery/googleapis/dialogflow__v3.json
+++ b/discovery/googleapis/dialogflow__v3.json
@@ -3818,7 +3818,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220214",
     "rootUrl": "https://dialogflow.googleapis.com/",
     "schemas": {
         "GoogleCloudDialogflowCxV3AdvancedSettings": {
diff --git a/discovery/googleapis/digitalassetlinks__v1.json b/discovery/googleapis/digitalassetlinks__v1.json
index 567eb67..8261d97 100644
--- a/discovery/googleapis/digitalassetlinks__v1.json
+++ b/discovery/googleapis/digitalassetlinks__v1.json
@@ -95,6 +95,21 @@
     "resources": {
         "assetlinks": {
             "methods": {
+                "bulkCheck": {
+                    "description": "Send a bundle of statement checks in a single RPC to minimize latency and service load. Statements need not be all for the same source and/or target. We recommend using this method when you need to check more than one statement in a short period of time.",
+                    "flatPath": "v1/assetlinks:bulkCheck",
+                    "httpMethod": "POST",
+                    "id": "digitalassetlinks.assetlinks.bulkCheck",
+                    "parameterOrder": [],
+                    "parameters": {},
+                    "path": "v1/assetlinks:bulkCheck",
+                    "request": {
+                        "$ref": "BulkCheckRequest"
+                    },
+                    "response": {
+                        "$ref": "BulkCheckResponse"
+                    }
+                },
                 "check": {
                     "description": "Determines whether the specified (directional) relationship exists between the specified source and target assets. The relation describes the intent of the link between the two assets as claimed by the source asset. An example for such relationships is the delegation of privileges or permissions. This command is most often used by infrastructure systems to check preconditions for an action. For example, a client may want to know if it is OK to send a web URL to a particular mobile app instead. The client can check for the relevant asset link from the website to the mobile app to decide if the operation should be allowed. A note about security: if you specify a secure asset as the source, such as an HTTPS website or an Android app, the API will ensure that any statements used to generate the response have been made in a secure way by the owner of that asset. Conversely, if the source asset is an insecure HTTP website (that is, the URL starts with `http://` instead of `https://`), the API cannot verify its statements securely, and it is not possible to ensure that the website's statements have not been altered by a third party. For more information, see the [Digital Asset Links technical design specification](https://github.com/google/digitalassetlinks/blob/master/well-known/details.md).",
                     "flatPath": "v1/assetlinks:check",
@@ -183,7 +198,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220207",
     "rootUrl": "https://digitalassetlinks.googleapis.com/",
     "schemas": {
         "AndroidAppAsset": {
@@ -216,6 +231,84 @@
             },
             "type": "object"
         },
+        "BulkCheckRequest": {
+            "description": "Message used to check for the existence of multiple digital asset links within a single RPC.",
+            "id": "BulkCheckRequest",
+            "properties": {
+                "allowGoogleInternalDataSources": {
+                    "description": "Same configuration as in Check request, all statements checks will use same configurations.",
+                    "type": "boolean"
+                },
+                "defaultRelation": {
+                    "description": "If specified, will be used in any given template statement that doesn’t specify a relation.",
+                    "type": "string"
+                },
+                "defaultSource": {
+                    "$ref": "Asset",
+                    "description": "If specified, will be used in any given template statement that doesn’t specify a source."
+                },
+                "defaultTarget": {
+                    "$ref": "Asset",
+                    "description": "If specified, will be used in any given template statement that doesn’t specify a target."
+                },
+                "skipCacheLookup": {
+                    "description": "Same configuration as in Check request, all statements checks will use same configurations.",
+                    "type": "boolean"
+                },
+                "statements": {
+                    "description": "List of statements to check. For each statement, you can omit a field if the corresponding default_* field below was supplied. Minimum 1 statement; maximum 1,000 statements. Any additional statements will be ignored.",
+                    "items": {
+                        "$ref": "StatementTemplate"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "BulkCheckResponse": {
+            "description": "Response for BulkCheck call. Results are sent in a list in the same order in which they were sent. Individual check errors are described in the appropriate check_results entry. If the entire call fails, the response will include a bulk_error_code field describing the error.",
+            "id": "BulkCheckResponse",
+            "properties": {
+                "bulkErrorCode": {
+                    "description": "Error code for the entire request. Present only if the entire request failed. Individual check errors will not trigger the presence of this field.",
+                    "enum": [
+                        "ERROR_CODE_UNSPECIFIED",
+                        "ERROR_CODE_INVALID_QUERY",
+                        "ERROR_CODE_FETCH_ERROR",
+                        "ERROR_CODE_FAILED_SSL_VALIDATION",
+                        "ERROR_CODE_REDIRECT",
+                        "ERROR_CODE_TOO_LARGE",
+                        "ERROR_CODE_MALFORMED_HTTP_RESPONSE",
+                        "ERROR_CODE_WRONG_CONTENT_TYPE",
+                        "ERROR_CODE_MALFORMED_CONTENT",
+                        "ERROR_CODE_SECURE_ASSET_INCLUDES_INSECURE",
+                        "ERROR_CODE_FETCH_BUDGET_EXHAUSTED"
+                    ],
+                    "enumDescriptions": [
+                        "",
+                        "Unable to parse query.",
+                        "Unable to fetch the asset links data.",
+                        "Invalid HTTPS certificate .",
+                        "HTTP redirects (e.g, 301) are not allowed.",
+                        "Asset links data exceeds maximum size.",
+                        "Can't parse HTTP response.",
+                        "HTTP Content-type should be application/json.",
+                        "JSON content is malformed.",
+                        "A secure asset includes an insecure asset (security downgrade).",
+                        "Too many includes (maybe a loop)."
+                    ],
+                    "type": "string"
+                },
+                "checkResults": {
+                    "description": "List of results for each check request. Results are returned in the same order in which they were sent in the request.",
+                    "items": {
+                        "$ref": "CheckResponse"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "CertificateInfo": {
             "description": "Describes an X509 certificate.",
             "id": "CertificateInfo",
@@ -355,6 +448,25 @@
             },
             "type": "object"
         },
+        "StatementTemplate": {
+            "description": "A single statement to check in a bulk call using BulkCheck. See CheckRequest for details about each field.",
+            "id": "StatementTemplate",
+            "properties": {
+                "relation": {
+                    "description": "The relationship being asserted between the source and target. If omitted, you must specify a BulkCheckRequest.default_relation value to use here.",
+                    "type": "string"
+                },
+                "source": {
+                    "$ref": "Asset",
+                    "description": "The source asset that is asserting the statement. If omitted, you must specify a BulkCheckRequest.default_source value to use here."
+                },
+                "target": {
+                    "$ref": "Asset",
+                    "description": "The target that the source is declaring the relationship with. If omitted, you must specify a BulkCheckRequest.default_target to use here."
+                }
+            },
+            "type": "object"
+        },
         "WebAsset": {
             "description": "Describes a web asset.",
             "id": "WebAsset",
diff --git a/discovery/googleapis/displayvideo__v1.json b/discovery/googleapis/displayvideo__v1.json
index d7e7200..8f9ff46 100644
--- a/discovery/googleapis/displayvideo__v1.json
+++ b/discovery/googleapis/displayvideo__v1.json
@@ -7728,7 +7728,7 @@
             }
         }
     },
-    "revision": "20220120",
+    "revision": "20220216",
     "rootUrl": "https://displayvideo.googleapis.com/",
     "schemas": {
         "ActivateManualTriggerRequest": {
@@ -8070,7 +8070,7 @@
             "id": "AgeRangeAssignedTargetingOptionDetails",
             "properties": {
                 "ageRange": {
-                    "description": "Output only. The age range of an audience. We only support targeting a continuous age range of an audience. Thus, the age range represented in this field can be 1) targeted solely, or, 2) part of a larger continuous age range. The reach of a continuous age range targeting can be expanded by also targeting an audience of an unknown age.",
+                    "description": "The age range of an audience. We only support targeting a continuous age range of an audience. Thus, the age range represented in this field can be 1) targeted solely, or, 2) part of a larger continuous age range. The reach of a continuous age range targeting can be expanded by also targeting an audience of an unknown age. Output only in v1. Required in v2.",
                     "enum": [
                         "AGE_RANGE_UNSPECIFIED",
                         "AGE_RANGE_18_24",
@@ -8091,7 +8091,6 @@
                         "The age range of the audience is 65 and up.",
                         "The age range of the audience is unknown."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 },
                 "targetingOptionId": {
@@ -8680,16 +8679,16 @@
             "type": "object"
         },
         "AudienceGroupAssignedTargetingOptionDetails": {
-            "description": "Assigned audience group targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. The relation between each group is UNION, except for excluded_first_and_third_party_audience_group and excluded_google_audience_group, of which COMPLEMENT is UNION'ed with other groups.",
+            "description": "Assigned audience group targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. The relation between each group is UNION, except for excluded_first_and_third_party_audience_group and excluded_google_audience_group, of which COMPLEMENT is used as an INTERSECTION with other groups.",
             "id": "AudienceGroupAssignedTargetingOptionDetails",
             "properties": {
                 "excludedFirstAndThirdPartyAudienceGroup": {
                     "$ref": "FirstAndThirdPartyAudienceGroup",
-                    "description": "The first and third party audience ids and recencies of the excluded first and third party audience group. Used for negative targeting. Its COMPLEMENT is used to UNION other audience groups."
+                    "description": "The first and third party audience ids and recencies of the excluded first and third party audience group. Used for negative targeting. The COMPLEMENT of the UNION of this group and other excluded audience groups is used as an INTERSECTION to any positive audience targeting. All items are logically ‘OR’ of each other."
                 },
                 "excludedGoogleAudienceGroup": {
                     "$ref": "GoogleAudienceGroup",
-                    "description": "The Google audience ids of the excluded Google audience group. Used for negative targeting. It's COMPLEMENT is used to UNION other audience groups. Only contains Affinity, In-market and Installed-apps type Google audiences. All items are logically ‘OR’ of each other."
+                    "description": "The Google audience ids of the excluded Google audience group. Used for negative targeting. The COMPLEMENT of the UNION of this group and other excluded audience groups is used as an INTERSECTION to any positive audience targeting. Only contains Affinity, In-market and Installed-apps type Google audiences. All items are logically ‘OR’ of each other."
                 },
                 "includedCombinedAudienceGroup": {
                     "$ref": "CombinedAudienceGroup",
@@ -8718,7 +8717,7 @@
             "id": "AudioContentTypeAssignedTargetingOptionDetails",
             "properties": {
                 "audioContentType": {
-                    "description": "Output only. The audio content type.",
+                    "description": "The audio content type. Output only in v1. Required in v2.",
                     "enum": [
                         "AUDIO_CONTENT_TYPE_UNSPECIFIED",
                         "AUDIO_CONTENT_TYPE_UNKNOWN",
@@ -8733,7 +8732,6 @@
                         "The audio content type is broadcast.",
                         "The audio content type is podcast."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 },
                 "targetingOptionId": {
@@ -9899,33 +9897,33 @@
             "id": "ContactInfo",
             "properties": {
                 "countryCode": {
-                    "description": "Country code of the member.",
+                    "description": "Country code of the member. Must also be set with the following fields: * hashed_first_name * hashed_last_name * zip_codes",
                     "type": "string"
                 },
                 "hashedEmails": {
-                    "description": "A list of SHA256 hashed email of the member.",
+                    "description": "A list of SHA256 hashed email of the member. Before hashing, remove all whitespace and make sure the string is all lowercase.",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
                 },
                 "hashedFirstName": {
-                    "description": "SHA256 hashed first name of the member.",
+                    "description": "SHA256 hashed first name of the member. Before hashing, remove all whitespace and make sure the string is all lowercase. Must also be set with the following fields: * country_code * hashed_last_name * zip_codes",
                     "type": "string"
                 },
                 "hashedLastName": {
-                    "description": "SHA256 hashed last name of the member.",
+                    "description": "SHA256 hashed last name of the member. Before hashing, remove all whitespace and make sure the string is all lowercase. Must also be set with the following fields: * country_code * hashed_first_name * zip_codes",
                     "type": "string"
                 },
                 "hashedPhoneNumbers": {
-                    "description": "A list of SHA256 hashed phone numbers of the member.",
+                    "description": "A list of SHA256 hashed phone numbers of the member. Before hashing, all phone numbers must be formatted using the [E.164 format](//en.wikipedia.org/wiki/E.164) and include the country calling code.",
                     "items": {
                         "type": "string"
                     },
                     "type": "array"
                 },
                 "zipCodes": {
-                    "description": "A list of zip codes of the member.",
+                    "description": "A list of zip codes of the member. Must also be set with the following fields: * country_code * hashed_first_name * hashed_last_name",
                     "items": {
                         "type": "string"
                     },
@@ -9970,7 +9968,7 @@
                     "type": "string"
                 },
                 "contentInstreamPosition": {
-                    "description": "Output only. The content instream position for video or audio ads.",
+                    "description": "The content instream position for video or audio ads. Output only in v1. Required in v2.",
                     "enum": [
                         "CONTENT_INSTREAM_POSITION_UNSPECIFIED",
                         "CONTENT_INSTREAM_POSITION_PRE_ROLL",
@@ -9985,7 +9983,6 @@
                         "Ads that play at the end of streaming content.",
                         "Ads instream position is unknown."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 },
                 "targetingOptionId": {
@@ -10043,7 +10040,7 @@
                     "type": "string"
                 },
                 "contentOutstreamPosition": {
-                    "description": "Output only. The content outstream position.",
+                    "description": "The content outstream position. Output only in v1. Required in v2.",
                     "enum": [
                         "CONTENT_OUTSTREAM_POSITION_UNSPECIFIED",
                         "CONTENT_OUTSTREAM_POSITION_UNKNOWN",
@@ -10060,7 +10057,6 @@
                         "Ads that appear in a scrollable stream of content. A feed is typically editorial (e.g. a list of articles or news) or listings (e.g. a list of products or services).",
                         "Ads shown before or between content loads."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 },
                 "targetingOptionId": {
@@ -10948,7 +10944,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -11190,7 +11186,7 @@
             "id": "DeviceTypeAssignedTargetingOptionDetails",
             "properties": {
                 "deviceType": {
-                    "description": "Output only. The display name of the device type.",
+                    "description": "The display name of the device type. Output only in v1. Required in v2.",
                     "enum": [
                         "DEVICE_TYPE_UNSPECIFIED",
                         "DEVICE_TYPE_COMPUTER",
@@ -11205,7 +11201,6 @@
                         "The device type is smart phone..",
                         "The device type is tablet."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 },
                 "targetingOptionId": {
@@ -11707,7 +11702,7 @@
             "id": "EnvironmentAssignedTargetingOptionDetails",
             "properties": {
                 "environment": {
-                    "description": "Output only. The serving environment.",
+                    "description": "The serving environment. Output only in v1. Required in v2.",
                     "enum": [
                         "ENVIRONMENT_UNSPECIFIED",
                         "ENVIRONMENT_WEB_OPTIMIZED",
@@ -11720,7 +11715,6 @@
                         "Target inventory displayed in browsers. This includes inventory that was not designed for the device but viewed on it, such as websites optimized for desktop but viewed on a mobile device. ENVIRONMENT_WEB_OPTIMIZED should be targeted prior to the addition of this targeting option.",
                         "Target inventory displayed in apps."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 },
                 "targetingOptionId": {
@@ -12295,6 +12289,10 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "appId": {
+                    "description": "The app_id matches with the type of the mobile_device_ids being uploaded. Only applicable to audience_type `CUSTOMER_MATCH_DEVICE_ID`",
+                    "type": "string"
+                },
                 "audienceSource": {
                     "description": "Output only. The source of the audience.",
                     "enum": [
@@ -12344,6 +12342,10 @@
                     ],
                     "type": "string"
                 },
+                "contactInfoList": {
+                    "$ref": "ContactInfoList",
+                    "description": "Input only. A list of contact information to define the initial audience members. Only applicable to audience_type `CUSTOMER_MATCH_CONTACT_INFO`"
+                },
                 "description": {
                     "description": "The user-provided description of the audience. Only applicable to first party audiences.",
                     "type": "string"
@@ -12403,10 +12405,14 @@
                     "type": "string"
                 },
                 "membershipDurationDays": {
-                    "description": "The duration in days that an entry remains in the audience after the qualifying event. If the audience has no expiration, the value of this field should be set 10000. Otherwise, the set value must be greater than 0 and less than or equal to 540. Only applicable to first party audiences. This field is required for the following audience_type: * `CUSTOMER_MATCH_CONTACT_INFO` * `CUSTOMER_MATCH_DEVICE_ID`",
+                    "description": "The duration in days that an entry remains in the audience after the qualifying event. If the audience has no expiration, set the value of this field to 10000. Otherwise, the set value must be greater than 0 and less than or equal to 540. Only applicable to first party audiences. This field is required if one of the following audience_type is used: * `CUSTOMER_MATCH_CONTACT_INFO` * `CUSTOMER_MATCH_DEVICE_ID`",
                     "format": "int64",
                     "type": "string"
                 },
+                "mobileDeviceIdList": {
+                    "$ref": "MobileDeviceIdList",
+                    "description": "Input only. A list of mobile device IDs to define the initial audience members. Only applicable to audience_type `CUSTOMER_MATCH_DEVICE_ID`"
+                },
                 "name": {
                     "description": "Output only. The resource name of the first and third party audience.",
                     "readOnly": true,
@@ -12629,7 +12635,7 @@
             "id": "GenderAssignedTargetingOptionDetails",
             "properties": {
                 "gender": {
-                    "description": "Output only. The gender of the audience.",
+                    "description": "The gender of the audience. Output only in v1. Required in v2.",
                     "enum": [
                         "GENDER_UNSPECIFIED",
                         "GENDER_MALE",
@@ -12642,7 +12648,6 @@
                         "The audience gender is female.",
                         "The audience gender is unknown."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 },
                 "targetingOptionId": {
@@ -15134,7 +15139,7 @@
             "id": "NativeContentPositionAssignedTargetingOptionDetails",
             "properties": {
                 "contentPosition": {
-                    "description": "Output only. The content position.",
+                    "description": "The content position. Output only in v1. Required in v2.",
                     "enum": [
                         "NATIVE_CONTENT_POSITION_UNSPECIFIED",
                         "NATIVE_CONTENT_POSITION_UNKNOWN",
@@ -15151,7 +15156,6 @@
                         "Native content position is peripheral, i.e., ads appear outside of core content on pages, such as the right- or left-hand side of the page.",
                         "Native content position is recommendation, i.e., ads appear in sections for recommended content."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 },
                 "targetingOptionId": {
@@ -15309,7 +15313,7 @@
             "id": "OmidAssignedTargetingOptionDetails",
             "properties": {
                 "omid": {
-                    "description": "Output only. The type of Open Measurement enabled inventory.",
+                    "description": "The type of Open Measurement enabled inventory. Output only in v1. Required in v2.",
                     "enum": [
                         "OMID_UNSPECIFIED",
                         "OMID_FOR_MOBILE_DISPLAY_ADS"
@@ -15318,7 +15322,6 @@
                         "Default value when omid targeting is not specified in this version.",
                         "Open Measurement enabled mobile display inventory."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 },
                 "targetingOptionId": {
@@ -16570,7 +16573,7 @@
                     "type": "string"
                 },
                 "sensitiveCategory": {
-                    "description": "Output only. An enum for the DV360 Sensitive category content classifier.",
+                    "description": "An enum for the DV360 Sensitive category content classifier. Output only in v1. Required in v2.",
                     "enum": [
                         "SENSITIVE_CATEGORY_UNSPECIFIED",
                         "SENSITIVE_CATEGORY_ADULT",
@@ -16611,7 +16614,6 @@
                         "Issues that evoke strong, opposing views and spark debate. These include issues that are controversial in most countries and markets (such as abortion), as well as those that are controversial in specific countries and markets (such as immigration reform in the United States).",
                         "Content which may be considered shocking or disturbing, such as violent news stories, stunts, or toilet humor."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 }
             },
@@ -17319,7 +17321,7 @@
                     "type": "string"
                 },
                 "videoPlayerSize": {
-                    "description": "Output only. The video player size.",
+                    "description": "The video player size. Output only in v1. Required in v2.",
                     "enum": [
                         "VIDEO_PLAYER_SIZE_UNSPECIFIED",
                         "VIDEO_PLAYER_SIZE_SMALL",
@@ -17334,7 +17336,6 @@
                         "The dimensions of the video player are 1280×720 or greater (desktop), or over 90% of the screen covered (mobile).",
                         "The dimensions of the video player are unknown."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 }
             },
@@ -17375,7 +17376,7 @@
                     "type": "string"
                 },
                 "viewability": {
-                    "description": "Output only. The predicted viewability percentage.",
+                    "description": "The predicted viewability percentage. Output only in v1. Required in v2.",
                     "enum": [
                         "VIEWABILITY_UNSPECIFIED",
                         "VIEWABILITY_10_PERCENT_OR_MORE",
@@ -17400,7 +17401,6 @@
                         "Bid only on impressions that are at least 80% likely to be viewable.",
                         "Bid only on impressions that are at least 90% likely to be viewable."
                     ],
-                    "readOnly": true,
                     "type": "string"
                 }
             },
diff --git a/discovery/googleapis/dlp__v2.json b/discovery/googleapis/dlp__v2.json
index 301e906..eb0f58f 100644
--- a/discovery/googleapis/dlp__v2.json
+++ b/discovery/googleapis/dlp__v2.json
@@ -3410,7 +3410,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://dlp.googleapis.com/",
     "schemas": {
         "GooglePrivacyDlpV2Action": {
@@ -7555,7 +7555,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/dns__v1.json b/discovery/googleapis/dns__v1.json
index e2ae3f2..126c74a 100644
--- a/discovery/googleapis/dns__v1.json
+++ b/discovery/googleapis/dns__v1.json
@@ -1731,7 +1731,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220203",
     "rootUrl": "https://dns.googleapis.com/",
     "schemas": {
         "Change": {
@@ -2615,6 +2615,11 @@
                     "format": "int32",
                     "type": "integer"
                 },
+                "peeringZonesPerTargetNetwork": {
+                    "description": "Maximum allowed number of consumer peering zones per target network owned by this producer project",
+                    "format": "int32",
+                    "type": "integer"
+                },
                 "policies": {
                     "description": "Maximum allowed number of policies per project.",
                     "format": "int32",
diff --git a/discovery/googleapis/docs__v1.json b/discovery/googleapis/docs__v1.json
index 35847e2..c3b037b 100644
--- a/discovery/googleapis/docs__v1.json
+++ b/discovery/googleapis/docs__v1.json
@@ -214,7 +214,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220208",
     "rootUrl": "https://docs.googleapis.com/",
     "schemas": {
         "AutoText": {
diff --git a/discovery/googleapis/documentai__v1.json b/discovery/googleapis/documentai__v1.json
index f47db1d..226209d 100644
--- a/discovery/googleapis/documentai__v1.json
+++ b/discovery/googleapis/documentai__v1.json
@@ -1027,7 +1027,7 @@
             }
         }
     },
-    "revision": "20220114",
+    "revision": "20220205",
     "rootUrl": "https://documentai.googleapis.com/",
     "schemas": {
         "GoogleCloudDocumentaiUiv1beta3BatchDeleteDocumentsMetadata": {
@@ -3060,10 +3060,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -3270,6 +3270,62 @@
             },
             "type": "object"
         },
+        "GoogleCloudDocumentaiV1alpha1AnalyzeHitlDataMetadata": {
+            "description": "The long running operation metadata for AnalyzeHitlData.",
+            "id": "GoogleCloudDocumentaiV1alpha1AnalyzeHitlDataMetadata",
+            "properties": {
+                "commonMetadata": {
+                    "$ref": "GoogleCloudDocumentaiV1alpha1CommonOperationMetadata",
+                    "description": "The basic metadata of the long running operation."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDocumentaiV1alpha1CommonOperationMetadata": {
+            "description": "The common metadata for long running operations.",
+            "id": "GoogleCloudDocumentaiV1alpha1CommonOperationMetadata",
+            "properties": {
+                "createTime": {
+                    "description": "The creation time of the operation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "resource": {
+                    "description": "A related resource to this operation.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The state of the operation.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "RUNNING",
+                        "CANCELLING",
+                        "SUCCEEDED",
+                        "FAILED",
+                        "CANCELLED"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified state.",
+                        "Operation is still running.",
+                        "Operation is being cancelled.",
+                        "Operation succeeded.",
+                        "Operation failed.",
+                        "Operation is cancelled."
+                    ],
+                    "type": "string"
+                },
+                "stateMessage": {
+                    "description": "A message providing more details about the current state of processing.",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "The last update time of the operation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudDocumentaiV1beta1BatchProcessDocumentsResponse": {
             "description": "Response to an batch document processing request. This is returned in the LRO Operation after the operation is complete.",
             "id": "GoogleCloudDocumentaiV1beta1BatchProcessDocumentsResponse",
@@ -6118,7 +6174,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/domains__v1.json b/discovery/googleapis/domains__v1.json
index 75a2425..7d7542a 100644
--- a/discovery/googleapis/domains__v1.json
+++ b/discovery/googleapis/domains__v1.json
@@ -777,7 +777,7 @@
             }
         }
     },
-    "revision": "20211210",
+    "revision": "20220128",
     "rootUrl": "https://domains.googleapis.com/",
     "schemas": {
         "AuditConfig": {
diff --git a/discovery/googleapis/domainsrdap__v1.json b/discovery/googleapis/domainsrdap__v1.json
index de52001..3d272ae 100644
--- a/discovery/googleapis/domainsrdap__v1.json
+++ b/discovery/googleapis/domainsrdap__v1.json
@@ -287,7 +287,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220216",
     "rootUrl": "https://domainsrdap.googleapis.com/",
     "schemas": {
         "HttpBody": {
diff --git a/discovery/googleapis/doubleclickbidmanager__v1.1.json b/discovery/googleapis/doubleclickbidmanager__v1.1.json
index bd5e556..da57697 100644
--- a/discovery/googleapis/doubleclickbidmanager__v1.1.json
+++ b/discovery/googleapis/doubleclickbidmanager__v1.1.json
@@ -278,7 +278,7 @@
             }
         }
     },
-    "revision": "20220113",
+    "revision": "20220214",
     "rootUrl": "https://doubleclickbidmanager.googleapis.com/",
     "schemas": {
         "ChannelGrouping": {
diff --git a/discovery/googleapis/doubleclicksearch__v2.json b/discovery/googleapis/doubleclicksearch__v2.json
index d88bc7e..a58b883 100644
--- a/discovery/googleapis/doubleclicksearch__v2.json
+++ b/discovery/googleapis/doubleclicksearch__v2.json
@@ -398,7 +398,7 @@
             }
         }
     },
-    "revision": "20220111",
+    "revision": "20220208",
     "rootUrl": "https://doubleclicksearch.googleapis.com/",
     "schemas": {
         "Availability": {
diff --git a/discovery/googleapis/drive__v2.json b/discovery/googleapis/drive__v2.json
index ef503b3..3d6bc13 100644
--- a/discovery/googleapis/drive__v2.json
+++ b/discovery/googleapis/drive__v2.json
@@ -38,7 +38,7 @@
     "description": "Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/drive/",
-    "etag": "\"uWj2hSb4GVjzdDlAnRd2gbM1ZQ8/CQ6wXfQl-XAYjFA0TEABj_DZvjU\"",
+    "etag": "\"uWj2hSb4GVjzdDlAnRd2gbM1ZQ8/bVc1R3p2-rm1ArVpg5cObCQ8TUU\"",
     "icons": {
         "x16": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png",
         "x32": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_32.png"
@@ -3527,7 +3527,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220214",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "About": {
diff --git a/discovery/googleapis/drive__v3.json b/discovery/googleapis/drive__v3.json
index 0efa440..851725b 100644
--- a/discovery/googleapis/drive__v3.json
+++ b/discovery/googleapis/drive__v3.json
@@ -35,7 +35,7 @@
     "description": "Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/drive/",
-    "etag": "\"uWj2hSb4GVjzdDlAnRd2gbM1ZQ8/ikp9PmN0whtSCkYPEhAjwoZiyNc\"",
+    "etag": "\"uWj2hSb4GVjzdDlAnRd2gbM1ZQ8/74PJlywo-WsTK0zBGn4AI7FrihI\"",
     "icons": {
         "x16": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png",
         "x32": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_32.png"
@@ -1308,7 +1308,7 @@
                     "supportsMediaUpload": true
                 },
                 "watch": {
-                    "description": "Subscribes to changes to a file",
+                    "description": "Subscribes to changes to a file. While you can establish a channel forchanges to a file on a shared drive, a change to a shared drive file won't create a notification.",
                     "httpMethod": "POST",
                     "id": "drive.files.watch",
                     "parameterOrder": [
@@ -2191,7 +2191,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220214",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "About": {
@@ -2725,6 +2725,11 @@
                     "type": "string"
                 },
                 "name": {
+                    "annotations": {
+                        "required": [
+                            "drive.drives.create"
+                        ]
+                    },
                     "description": "The name of this shared drive.",
                     "type": "string"
                 },
@@ -3900,6 +3905,11 @@
                     "type": "string"
                 },
                 "name": {
+                    "annotations": {
+                        "required": [
+                            "drive.teamdrives.create"
+                        ]
+                    },
                     "description": "The name of this Team Drive.",
                     "type": "string"
                 },
diff --git a/discovery/googleapis/driveactivity__v2.json b/discovery/googleapis/driveactivity__v2.json
index 5e99ee1..4c6a528 100644
--- a/discovery/googleapis/driveactivity__v2.json
+++ b/discovery/googleapis/driveactivity__v2.json
@@ -130,7 +130,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://driveactivity.googleapis.com/",
     "schemas": {
         "Action": {
diff --git a/discovery/googleapis/essentialcontacts__v1.json b/discovery/googleapis/essentialcontacts__v1.json
index 18ce4b5..0dc248e 100644
--- a/discovery/googleapis/essentialcontacts__v1.json
+++ b/discovery/googleapis/essentialcontacts__v1.json
@@ -848,7 +848,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220215",
     "rootUrl": "https://essentialcontacts.googleapis.com/",
     "schemas": {
         "GoogleCloudEssentialcontactsV1ComputeContactsResponse": {
diff --git a/discovery/googleapis/eventarc__v1.json b/discovery/googleapis/eventarc__v1.json
index 1d0fb62..7fc295c 100644
--- a/discovery/googleapis/eventarc__v1.json
+++ b/discovery/googleapis/eventarc__v1.json
@@ -480,6 +480,81 @@
                                 }
                             }
                         },
+                        "providers": {
+                            "methods": {
+                                "get": {
+                                    "description": "Get a single Provider.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}",
+                                    "httpMethod": "GET",
+                                    "id": "eventarc.projects.locations.providers.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the provider to get.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+name}",
+                                    "response": {
+                                        "$ref": "Provider"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "List providers.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers",
+                                    "httpMethod": "GET",
+                                    "id": "eventarc.projects.locations.providers.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "The filter field that the list request will filter on.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "The sorting order of the resources returned. Value should be a comma-separated list of fields. The default sorting oder is ascending. To specify descending order for a field, append a `desc` suffix; for example: `name desc, _id`.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "The maximum number of providers to return on each page.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "The page token; provide the value from the `next_page_token` field in a previous `ListProviders` call to retrieve the subsequent page. When paginating, all other parameters provided to `ListProviders` must match the call that provided the page token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The parent of the provider to get.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+parent}/providers",
+                                    "response": {
+                                        "$ref": "ListProvidersResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
                         "triggers": {
                             "methods": {
                                 "create": {
@@ -764,7 +839,7 @@
             }
         }
     },
-    "revision": "20220111",
+    "revision": "20220205",
     "rootUrl": "https://eventarc.googleapis.com/",
     "schemas": {
         "AuditConfig": {
@@ -861,7 +936,7 @@
             "id": "Destination",
             "properties": {
                 "cloudFunction": {
-                    "description": "The Cloud Function resource name. Only Cloud Functions V2 is supported. Format: projects/{project}/locations/{location}/functions/{function}",
+                    "description": "The Cloud Function resource name. Only Cloud Functions V2 is supported. Format: `projects/{project}/locations/{location}/functions/{function}`",
                     "type": "string"
                 },
                 "cloudRun": {
@@ -889,6 +964,10 @@
                     "description": "Required. The name of a CloudEvents attribute. Currently, only a subset of attributes are supported for filtering. All triggers MUST provide a filter for the 'type' attribute.",
                     "type": "string"
                 },
+                "operator": {
+                    "description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The only allowed value is `match-path-pattern`.",
+                    "type": "string"
+                },
                 "value": {
                     "description": "Required. The value for the attribute.",
                     "type": "string"
@@ -896,6 +975,36 @@
             },
             "type": "object"
         },
+        "EventType": {
+            "description": "A representation of the event type resource.",
+            "id": "EventType",
+            "properties": {
+                "description": {
+                    "description": "Output only. Human friendly description of what the event type is about. For example \"Bucket created in Cloud Storage\".",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "eventSchemaUri": {
+                    "description": "Output only. URI for the event schema. For example \"https://github.com/googleapis/google-cloudevents/blob/master/proto/google/events/cloud/storage/v1/events.proto\"",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "filteringAttributes": {
+                    "description": "Output only. Filtering attributes for the event type.",
+                    "items": {
+                        "$ref": "FilteringAttribute"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
+                "type": {
+                    "description": "Output only. The full name of the event type (for example, \"google.cloud.storage.object.v1.finalized\"). In the form of {provider-specific-prefix}.{resource}.{version}.{verb}. Types MUST be versioned and event schemas are guaranteed to remain backward compatible within one version. Note that event type versions and API versions do not need to match.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "Expr": {
             "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
             "id": "Expr",
@@ -919,6 +1028,33 @@
             },
             "type": "object"
         },
+        "FilteringAttribute": {
+            "description": "A representation of the FilteringAttribute resource. Filtering attributes are per event type.",
+            "id": "FilteringAttribute",
+            "properties": {
+                "attribute": {
+                    "description": "Output only. Attribute used for filtering the event type.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "description": {
+                    "description": "Output only. Description of the purpose of the attribute.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "pathPatternSupported": {
+                    "description": "Output only. If true, the attribute accepts matching expressions in the Eventarc PathPattern format.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
+                "required": {
+                    "description": "Output only. If true, the triggers for this provider should always specify a filter on these attributes. Trigger creation will fail otherwise.",
+                    "readOnly": true,
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "GKE": {
             "description": "Represents a GKE destination.",
             "id": "GKE",
@@ -1050,6 +1186,31 @@
             },
             "type": "object"
         },
+        "ListProvidersResponse": {
+            "description": "The response message for the `ListProviders` method.",
+            "id": "ListProvidersResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "A page token that can be sent to ListProviders to request the next page. If this is empty, then there are no more pages.",
+                    "type": "string"
+                },
+                "providers": {
+                    "description": "The requested providers, up to the number specified in `page_size`.",
+                    "items": {
+                        "$ref": "Provider"
+                    },
+                    "type": "array"
+                },
+                "unreachable": {
+                    "description": "Unreachable resources, if any.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "ListTriggersResponse": {
             "description": "The response message for the `ListTriggers` method.",
             "id": "ListTriggersResponse",
@@ -1184,6 +1345,31 @@
             },
             "type": "object"
         },
+        "Provider": {
+            "description": "A representation of the Provider resource.",
+            "id": "Provider",
+            "properties": {
+                "displayName": {
+                    "description": "Output only. Human friendly name for the Provider. For example \"Cloud Storage\".",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "eventTypes": {
+                    "description": "Output only. Event types for this provider.",
+                    "items": {
+                        "$ref": "EventType"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
+                "name": {
+                    "description": "Output only. In `projects/{project}/locations/{location}/providers/{provider_id}` format.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "Pubsub": {
             "description": "Represents a Pub/Sub transport.",
             "id": "Pubsub",
diff --git a/discovery/googleapis/fcm__v1.json b/discovery/googleapis/fcm__v1.json
index d2d6ab3..aa0ef79 100644
--- a/discovery/googleapis/fcm__v1.json
+++ b/discovery/googleapis/fcm__v1.json
@@ -144,7 +144,7 @@
             }
         }
     },
-    "revision": "20220110",
+    "revision": "20220214",
     "rootUrl": "https://fcm.googleapis.com/",
     "schemas": {
         "AndroidConfig": {
diff --git a/discovery/googleapis/firebasedynamiclinks__v1.json b/discovery/googleapis/firebasedynamiclinks__v1.json
index 363fda3..3d181b2 100644
--- a/discovery/googleapis/firebasedynamiclinks__v1.json
+++ b/discovery/googleapis/firebasedynamiclinks__v1.json
@@ -223,7 +223,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220214",
     "rootUrl": "https://firebasedynamiclinks.googleapis.com/",
     "schemas": {
         "AnalyticsInfo": {
diff --git a/discovery/googleapis/firebasehosting__v1.json b/discovery/googleapis/firebasehosting__v1.json
index 2da43d6..2545084 100644
--- a/discovery/googleapis/firebasehosting__v1.json
+++ b/discovery/googleapis/firebasehosting__v1.json
@@ -184,7 +184,7 @@
             }
         }
     },
-    "revision": "20220106",
+    "revision": "20220212",
     "rootUrl": "https://firebasehosting.googleapis.com/",
     "schemas": {
         "CancelOperationRequest": {
diff --git a/discovery/googleapis/firebaseml__v1.json b/discovery/googleapis/firebaseml__v1.json
index 4a08f0a..3992eff 100644
--- a/discovery/googleapis/firebaseml__v1.json
+++ b/discovery/googleapis/firebaseml__v1.json
@@ -202,7 +202,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://firebaseml.googleapis.com/",
     "schemas": {
         "CancelOperationRequest": {
diff --git a/discovery/googleapis/firebaserules__v1.json b/discovery/googleapis/firebaserules__v1.json
index 3d88579..5aed917 100644
--- a/discovery/googleapis/firebaserules__v1.json
+++ b/discovery/googleapis/firebaserules__v1.json
@@ -475,7 +475,7 @@
             }
         }
     },
-    "revision": "20220104",
+    "revision": "20220127",
     "rootUrl": "https://firebaserules.googleapis.com/",
     "schemas": {
         "Arg": {
@@ -730,11 +730,11 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "Format: `projects/{project_id}/releases/{release_id}`",
+                    "description": "Required. Format: `projects/{project_id}/releases/{release_id}`",
                     "type": "string"
                 },
                 "rulesetName": {
-                    "description": "Name of the `Ruleset` referred to by this `Release`. The `Ruleset` must exist the `Release` to be created.",
+                    "description": "Required. Name of the `Ruleset` referred to by this `Release`. The `Ruleset` must exist the `Release` to be created.",
                     "type": "string"
                 },
                 "updateTime": {
@@ -1008,7 +1008,7 @@
             "properties": {
                 "release": {
                     "$ref": "Release",
-                    "description": "`Release` to update."
+                    "description": "Required. `Release` to update."
                 },
                 "updateMask": {
                     "description": "Specifies which fields to update.",
diff --git a/discovery/googleapis/firestore__v1.json b/discovery/googleapis/firestore__v1.json
index 90cb640..5946736 100644
--- a/discovery/googleapis/firestore__v1.json
+++ b/discovery/googleapis/firestore__v1.json
@@ -1216,7 +1216,7 @@
             }
         }
     },
-    "revision": "20220110",
+    "revision": "20220207",
     "rootUrl": "https://firestore.googleapis.com/",
     "schemas": {
         "ArrayValue": {
diff --git a/discovery/googleapis/fitness__v1.json b/discovery/googleapis/fitness__v1.json
index ad9bde8..b265b77 100644
--- a/discovery/googleapis/fitness__v1.json
+++ b/discovery/googleapis/fitness__v1.json
@@ -830,7 +830,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220214",
     "rootUrl": "https://fitness.googleapis.com/",
     "schemas": {
         "AggregateBucket": {
diff --git a/discovery/googleapis/gamesConfiguration__v1configuration.json b/discovery/googleapis/gamesConfiguration__v1configuration.json
index c1f7eab..7d1e716 100644
--- a/discovery/googleapis/gamesConfiguration__v1configuration.json
+++ b/discovery/googleapis/gamesConfiguration__v1configuration.json
@@ -438,7 +438,7 @@
             }
         }
     },
-    "revision": "20211213",
+    "revision": "20220210",
     "rootUrl": "https://gamesconfiguration.googleapis.com/",
     "schemas": {
         "AchievementConfiguration": {
diff --git a/discovery/googleapis/gamesManagement__v1management.json b/discovery/googleapis/gamesManagement__v1management.json
index 3f180fc..7fc4214 100644
--- a/discovery/googleapis/gamesManagement__v1management.json
+++ b/discovery/googleapis/gamesManagement__v1management.json
@@ -470,7 +470,7 @@
             }
         }
     },
-    "revision": "20211213",
+    "revision": "20220210",
     "rootUrl": "https://gamesmanagement.googleapis.com/",
     "schemas": {
         "AchievementResetAllResponse": {
diff --git a/discovery/googleapis/games__v1.json b/discovery/googleapis/games__v1.json
index 92e77d0..5f3437c 100644
--- a/discovery/googleapis/games__v1.json
+++ b/discovery/googleapis/games__v1.json
@@ -1223,7 +1223,7 @@
             }
         }
     },
-    "revision": "20211213",
+    "revision": "20220210",
     "rootUrl": "https://games.googleapis.com/",
     "schemas": {
         "AchievementDefinition": {
diff --git a/discovery/googleapis/gameservices__v1.json b/discovery/googleapis/gameservices__v1.json
index 41f6350..c277b69 100644
--- a/discovery/googleapis/gameservices__v1.json
+++ b/discovery/googleapis/gameservices__v1.json
@@ -1355,7 +1355,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220202",
     "rootUrl": "https://gameservices.googleapis.com/",
     "schemas": {
         "AuditConfig": {
@@ -1369,12 +1369,6 @@
                     },
                     "type": "array"
                 },
-                "exemptedMembers": {
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
                 "service": {
                     "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
                     "type": "string"
diff --git a/discovery/googleapis/gkehub__v1.json b/discovery/googleapis/gkehub__v1.json
index b3749b7..6bb6bef 100644
--- a/discovery/googleapis/gkehub__v1.json
+++ b/discovery/googleapis/gkehub__v1.json
@@ -903,7 +903,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220204",
     "rootUrl": "https://gkehub.googleapis.com/",
     "schemas": {
         "AppDevExperienceFeatureSpec": {
@@ -1717,6 +1717,17 @@
             },
             "type": "object"
         },
+        "EdgeCluster": {
+            "description": "EdgeCluster contains information specific to Google Edge Clusters.",
+            "id": "EdgeCluster",
+            "properties": {
+                "resourceLink": {
+                    "description": "Immutable. Self-link of the GCP resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "Empty": {
             "description": "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 `{}`.",
             "id": "Empty",
@@ -2187,6 +2198,10 @@
             "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
             "id": "MembershipEndpoint",
             "properties": {
+                "edgeCluster": {
+                    "$ref": "EdgeCluster",
+                    "description": "Optional. Specific information for a Google Edge cluster."
+                },
                 "gkeCluster": {
                     "$ref": "GkeCluster",
                     "description": "Optional. Specific information for a GKE-on-GCP cluster."
diff --git a/discovery/googleapis/gmail__v1.json b/discovery/googleapis/gmail__v1.json
index f1c770e..ae3cc1e 100644
--- a/discovery/googleapis/gmail__v1.json
+++ b/discovery/googleapis/gmail__v1.json
@@ -2681,7 +2681,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220207",
     "rootUrl": "https://gmail.googleapis.com/",
     "schemas": {
         "AutoForwarding": {
diff --git a/discovery/googleapis/gmailpostmastertools__v1.json b/discovery/googleapis/gmailpostmastertools__v1.json
index 795e5f1..0e2151f 100644
--- a/discovery/googleapis/gmailpostmastertools__v1.json
+++ b/discovery/googleapis/gmailpostmastertools__v1.json
@@ -263,7 +263,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://gmailpostmastertools.googleapis.com/",
     "schemas": {
         "DeliveryError": {
diff --git a/discovery/googleapis/groupsmigration__v1.json b/discovery/googleapis/groupsmigration__v1.json
index 267eb23..646eb31 100644
--- a/discovery/googleapis/groupsmigration__v1.json
+++ b/discovery/googleapis/groupsmigration__v1.json
@@ -145,7 +145,7 @@
             }
         }
     },
-    "revision": "20220106",
+    "revision": "20220212",
     "rootUrl": "https://groupsmigration.googleapis.com/",
     "schemas": {
         "Groups": {
diff --git a/discovery/googleapis/groupssettings__v1.json b/discovery/googleapis/groupssettings__v1.json
index 0fa49ca..af26015 100644
--- a/discovery/googleapis/groupssettings__v1.json
+++ b/discovery/googleapis/groupssettings__v1.json
@@ -152,7 +152,7 @@
             }
         }
     },
-    "revision": "20220113",
+    "revision": "20220210",
     "rootUrl": "https://www.googleapis.com/",
     "schemas": {
         "Groups": {
diff --git a/discovery/googleapis/healthcare__v1.json b/discovery/googleapis/healthcare__v1.json
index 3c52f7a..34019ae 100644
--- a/discovery/googleapis/healthcare__v1.json
+++ b/discovery/googleapis/healthcare__v1.json
@@ -4051,7 +4051,7 @@
             }
         }
     },
-    "revision": "20220111",
+    "revision": "20220131",
     "rootUrl": "https://healthcare.googleapis.com/",
     "schemas": {
         "ActivateConsentRequest": {
@@ -4628,7 +4628,7 @@
             "properties": {
                 "config": {
                     "$ref": "DeidentifyConfig",
-                    "description": "De-identify configuration."
+                    "description": "Deidentify configuration."
                 },
                 "destinationStore": {
                     "description": "The name of the DICOM store to create and write the redacted data to. For example, `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/dicomStores/{dicom_store_id}`. * The destination dataset must exist. * The source dataset and destination dataset must both reside in the same location. De-identifying data across multiple locations is not supported. * The destination DICOM store must not exist. * The caller must have the necessary permissions to create the destination DICOM store.",
diff --git a/discovery/googleapis/homegraph__v1.json b/discovery/googleapis/homegraph__v1.json
index f1ea5cd..71441b0 100644
--- a/discovery/googleapis/homegraph__v1.json
+++ b/discovery/googleapis/homegraph__v1.json
@@ -214,7 +214,7 @@
             }
         }
     },
-    "revision": "20220114",
+    "revision": "20220215",
     "rootUrl": "https://homegraph.googleapis.com/",
     "schemas": {
         "AgentDeviceId": {
diff --git a/discovery/googleapis/iam__v1.json b/discovery/googleapis/iam__v1.json
index ef3b045..d0c5ecb 100644
--- a/discovery/googleapis/iam__v1.json
+++ b/discovery/googleapis/iam__v1.json
@@ -856,6 +856,39 @@
                                         }
                                     },
                                     "resources": {
+                                        "keys": {
+                                            "resources": {
+                                                "operations": {
+                                                    "methods": {
+                                                        "get": {
+                                                            "description": "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.",
+                                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/workloadIdentityPools/{workloadIdentityPoolsId}/providers/{providersId}/keys/{keysId}/operations/{operationsId}",
+                                                            "httpMethod": "GET",
+                                                            "id": "iam.projects.locations.workloadIdentityPools.providers.keys.operations.get",
+                                                            "parameterOrder": [
+                                                                "name"
+                                                            ],
+                                                            "parameters": {
+                                                                "name": {
+                                                                    "description": "The name of the operation resource.",
+                                                                    "location": "path",
+                                                                    "pattern": "^projects/[^/]+/locations/[^/]+/workloadIdentityPools/[^/]+/providers/[^/]+/keys/[^/]+/operations/[^/]+$",
+                                                                    "required": true,
+                                                                    "type": "string"
+                                                                }
+                                                            },
+                                                            "path": "v1/{+name}",
+                                                            "response": {
+                                                                "$ref": "Operation"
+                                                            },
+                                                            "scopes": [
+                                                                "https://www.googleapis.com/auth/cloud-platform"
+                                                            ]
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        },
                                         "operations": {
                                             "methods": {
                                                 "get": {
@@ -1820,7 +1853,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220209",
     "rootUrl": "https://iam.googleapis.com/",
     "schemas": {
         "AdminAuditData": {
@@ -2987,7 +3020,7 @@
                     "additionalProperties": {
                         "type": "string"
                     },
-                    "description": "Maps attributes from authentication credentials issued by an external identity provider to Google Cloud attributes, such as `subject` and `segment`. Each key must be a string specifying the Google Cloud IAM attribute to map to. The following keys are supported: * `google.subject`: The principal IAM is authenticating. You can reference this value in IAM bindings. This is also the subject that appears in Cloud Logging logs. Cannot exceed 127 characters. * `google.groups`: Groups the external identity belongs to. You can grant groups access to resources using an IAM `principalSet` binding; access applies to all members of the group. You can also provide custom attributes by specifying `attribute.{custom_attribute}`, where `{custom_attribute}` is the name of the custom attribute to be mapped. You can define a maximum of 50 custom attributes. The maximum length of a mapped attribute key is 100 characters, and the key may only contain the characters [a-z0-9_]. You can reference these attributes in IAM policies to define fine-grained access for a workload to Google Cloud resources. For example: * `google.subject`: `principal://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/subject/{value}` * `google.groups`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/group/{value}` * `attribute.{custom_attribute}`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/attribute.{custom_attribute}/{value}` Each value must be a [Common Expression Language] (https://opensource.google/projects/cel) function that maps an identity provider credential to the normalized attribute specified by the corresponding map key. You can use the `assertion` keyword in the expression to access a JSON representation of the authentication credential issued by the provider. The maximum length of an attribute mapping expression is 2048 characters. When evaluated, the total size of all mapped attributes must not exceed 8KB. For AWS providers, if no attribute mapping is defined, the following default mapping applies: ``` { \"google.subject\":\"assertion.arn\", \"attribute.aws_role\": \"assertion.arn.contains('assumed-role')\" \" ? assertion.arn.extract('{account_arn}assumed-role/')\" \" + 'assumed-role/'\" \" + assertion.arn.extract('assumed-role/{role_name}/')\" \" : assertion.arn\", } ``` If any custom attribute mappings are defined, they must include a mapping to the `google.subject` attribute. For OIDC providers, you must supply a custom mapping, which must include the `google.subject` attribute. For example, the following maps the `sub` claim of the incoming credential to the `subject` attribute on a Google token: ``` {\"google.subject\": \"assertion.sub\"} ```",
+                    "description": "Maps attributes from authentication credentials issued by an external identity provider to Google Cloud attributes, such as `subject` and `segment`. Each key must be a string specifying the Google Cloud IAM attribute to map to. The following keys are supported: * `google.subject`: The principal IAM is authenticating. You can reference this value in IAM bindings. This is also the subject that appears in Cloud Logging logs. Cannot exceed 127 bytes. * `google.groups`: Groups the external identity belongs to. You can grant groups access to resources using an IAM `principalSet` binding; access applies to all members of the group. You can also provide custom attributes by specifying `attribute.{custom_attribute}`, where `{custom_attribute}` is the name of the custom attribute to be mapped. You can define a maximum of 50 custom attributes. The maximum length of a mapped attribute key is 100 characters, and the key may only contain the characters [a-z0-9_]. You can reference these attributes in IAM policies to define fine-grained access for a workload to Google Cloud resources. For example: * `google.subject`: `principal://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/subject/{value}` * `google.groups`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/group/{value}` * `attribute.{custom_attribute}`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/attribute.{custom_attribute}/{value}` Each value must be a [Common Expression Language] (https://opensource.google/projects/cel) function that maps an identity provider credential to the normalized attribute specified by the corresponding map key. You can use the `assertion` keyword in the expression to access a JSON representation of the authentication credential issued by the provider. The maximum length of an attribute mapping expression is 2048 characters. When evaluated, the total size of all mapped attributes must not exceed 8KB. For AWS providers, if no attribute mapping is defined, the following default mapping applies: ``` { \"google.subject\":\"assertion.arn\", \"attribute.aws_role\": \"assertion.arn.contains('assumed-role')\" \" ? assertion.arn.extract('{account_arn}assumed-role/')\" \" + 'assumed-role/'\" \" + assertion.arn.extract('assumed-role/{role_name}/')\" \" : assertion.arn\", } ``` If any custom attribute mappings are defined, they must include a mapping to the `google.subject` attribute. For OIDC providers, you must supply a custom mapping, which must include the `google.subject` attribute. For example, the following maps the `sub` claim of the incoming credential to the `subject` attribute on a Google token: ``` {\"google.subject\": \"assertion.sub\"} ```",
                     "type": "object"
                 },
                 "aws": {
diff --git a/discovery/googleapis/iamcredentials__v1.json b/discovery/googleapis/iamcredentials__v1.json
index 9bcd096..1753151 100644
--- a/discovery/googleapis/iamcredentials__v1.json
+++ b/discovery/googleapis/iamcredentials__v1.json
@@ -224,7 +224,7 @@
             }
         }
     },
-    "revision": "20220114",
+    "revision": "20220204",
     "rootUrl": "https://iamcredentials.googleapis.com/",
     "schemas": {
         "GenerateAccessTokenRequest": {
diff --git a/discovery/googleapis/iap__v1.json b/discovery/googleapis/iap__v1.json
index 6b347d2..f8d8bf7 100644
--- a/discovery/googleapis/iap__v1.json
+++ b/discovery/googleapis/iap__v1.json
@@ -485,7 +485,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220211",
     "rootUrl": "https://iap.googleapis.com/",
     "schemas": {
         "AccessDeniedPageSettings": {
diff --git a/discovery/googleapis/indexing__v3.json b/discovery/googleapis/indexing__v3.json
index e314fbd..b8f2e97 100644
--- a/discovery/googleapis/indexing__v3.json
+++ b/discovery/googleapis/indexing__v3.json
@@ -147,7 +147,7 @@
             }
         }
     },
-    "revision": "20220111",
+    "revision": "20220125",
     "rootUrl": "https://indexing.googleapis.com/",
     "schemas": {
         "PublishUrlNotificationResponse": {
diff --git a/discovery/googleapis/jobs__v3.json b/discovery/googleapis/jobs__v3.json
index 2f2c724..1feefe1 100644
--- a/discovery/googleapis/jobs__v3.json
+++ b/discovery/googleapis/jobs__v3.json
@@ -649,7 +649,7 @@
             }
         }
     },
-    "revision": "20211210",
+    "revision": "20220211",
     "rootUrl": "https://jobs.googleapis.com/",
     "schemas": {
         "ApplicationInfo": {
diff --git a/discovery/googleapis/jobs__v4.json b/discovery/googleapis/jobs__v4.json
index f93137b..a12542d 100644
--- a/discovery/googleapis/jobs__v4.json
+++ b/discovery/googleapis/jobs__v4.json
@@ -901,7 +901,7 @@
             }
         }
     },
-    "revision": "20211210",
+    "revision": "20220125",
     "rootUrl": "https://jobs.googleapis.com/",
     "schemas": {
         "ApplicationInfo": {
diff --git a/discovery/googleapis/keep__v1.json b/discovery/googleapis/keep__v1.json
index 7c74e10..61076ca 100644
--- a/discovery/googleapis/keep__v1.json
+++ b/discovery/googleapis/keep__v1.json
@@ -312,7 +312,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220207",
     "rootUrl": "https://keep.googleapis.com/",
     "schemas": {
         "Attachment": {
diff --git a/discovery/googleapis/kgsearch__v1.json b/discovery/googleapis/kgsearch__v1.json
index d4803aa..af3a57a 100644
--- a/discovery/googleapis/kgsearch__v1.json
+++ b/discovery/googleapis/kgsearch__v1.json
@@ -150,7 +150,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://kgsearch.googleapis.com/",
     "schemas": {
         "SearchResponse": {
diff --git a/discovery/googleapis/language__v1.json b/discovery/googleapis/language__v1.json
index 4644f20..854dccc 100644
--- a/discovery/googleapis/language__v1.json
+++ b/discovery/googleapis/language__v1.json
@@ -225,7 +225,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://language.googleapis.com/",
     "schemas": {
         "AnalyzeEntitiesRequest": {
diff --git a/discovery/googleapis/libraryagent__v1.json b/discovery/googleapis/libraryagent__v1.json
index e45cdd4..5d78fc2 100644
--- a/discovery/googleapis/libraryagent__v1.json
+++ b/discovery/googleapis/libraryagent__v1.json
@@ -277,7 +277,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://libraryagent.googleapis.com/",
     "schemas": {
         "GoogleExampleLibraryagentV1Book": {
diff --git a/discovery/googleapis/licensing__v1.json b/discovery/googleapis/licensing__v1.json
index 7882fd7..7eb2d41 100644
--- a/discovery/googleapis/licensing__v1.json
+++ b/discovery/googleapis/licensing__v1.json
@@ -398,7 +398,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://licensing.googleapis.com/",
     "schemas": {
         "Empty": {
diff --git a/discovery/googleapis/localservices__v1.json b/discovery/googleapis/localservices__v1.json
index 127a33e..db86a50 100644
--- a/discovery/googleapis/localservices__v1.json
+++ b/discovery/googleapis/localservices__v1.json
@@ -248,7 +248,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://localservices.googleapis.com/",
     "schemas": {
         "GoogleAdsHomeservicesLocalservicesV1AccountReport": {
diff --git a/discovery/googleapis/logging__v2.json b/discovery/googleapis/logging__v2.json
index 12bbf67..4328844 100644
--- a/discovery/googleapis/logging__v2.json
+++ b/discovery/googleapis/logging__v2.json
@@ -144,6 +144,34 @@
                         "https://www.googleapis.com/auth/logging.admin",
                         "https://www.googleapis.com/auth/logging.read"
                     ]
+                },
+                "getSettings": {
+                    "description": "Gets the Log Router settings for the given resource.Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
+                    "flatPath": "v2/billingAccounts/{billingAccountsId}/settings",
+                    "httpMethod": "GET",
+                    "id": "logging.billingAccounts.getSettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The resource for which to retrieve settings. \"projects/[PROJECT_ID]/settings\" \"organizations/[ORGANIZATION_ID]/settings\" \"billingAccounts/[BILLING_ACCOUNT_ID]/settings\" \"folders/[FOLDER_ID]/settings\" For example:\"organizations/12345/settings\"Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.",
+                            "location": "path",
+                            "pattern": "^billingAccounts/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}/settings",
+                    "response": {
+                        "$ref": "Settings"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only",
+                        "https://www.googleapis.com/auth/logging.admin",
+                        "https://www.googleapis.com/auth/logging.read"
+                    ]
                 }
             },
             "resources": {
@@ -1431,6 +1459,69 @@
                         "https://www.googleapis.com/auth/logging.admin",
                         "https://www.googleapis.com/auth/logging.read"
                     ]
+                },
+                "getSettings": {
+                    "description": "Gets the Log Router settings for the given resource.Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
+                    "flatPath": "v2/folders/{foldersId}/settings",
+                    "httpMethod": "GET",
+                    "id": "logging.folders.getSettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The resource for which to retrieve settings. \"projects/[PROJECT_ID]/settings\" \"organizations/[ORGANIZATION_ID]/settings\" \"billingAccounts/[BILLING_ACCOUNT_ID]/settings\" \"folders/[FOLDER_ID]/settings\" For example:\"organizations/12345/settings\"Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}/settings",
+                    "response": {
+                        "$ref": "Settings"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only",
+                        "https://www.googleapis.com/auth/logging.admin",
+                        "https://www.googleapis.com/auth/logging.read"
+                    ]
+                },
+                "updateSettings": {
+                    "description": "Updates the Log Router settings for the given resource.Note: Settings for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.UpdateSettings will fail if 1) kms_key_name is invalid, or 2) the associated service account does not have the required roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or 3) access to the key is disabled. 4) location_id is not supported by Logging. 5) location_id violate OrgPolicy.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
+                    "flatPath": "v2/folders/{foldersId}/settings",
+                    "httpMethod": "PATCH",
+                    "id": "logging.folders.updateSettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The resource name for the settings to update. \"organizations/[ORGANIZATION_ID]/settings\" For example:\"organizations/12345/settings\"Note: Settings for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.",
+                            "location": "path",
+                            "pattern": "^folders/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "Optional. Field mask identifying which fields from settings should be updated. A field will be overwritten if and only if it is in the update mask. Output only fields cannot be updated.See FieldMask for more information.For example: \"updateMask=kmsKeyName\"",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}/settings",
+                    "request": {
+                        "$ref": "Settings"
+                    },
+                    "response": {
+                        "$ref": "Settings"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/logging.admin"
+                    ]
                 }
             },
             "resources": {
@@ -3114,6 +3205,34 @@
                         "https://www.googleapis.com/auth/logging.read"
                     ]
                 },
+                "getSettings": {
+                    "description": "Gets the Log Router settings for the given resource.Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
+                    "flatPath": "v2/organizations/{organizationsId}/settings",
+                    "httpMethod": "GET",
+                    "id": "logging.organizations.getSettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The resource for which to retrieve settings. \"projects/[PROJECT_ID]/settings\" \"organizations/[ORGANIZATION_ID]/settings\" \"billingAccounts/[BILLING_ACCOUNT_ID]/settings\" \"folders/[FOLDER_ID]/settings\" For example:\"organizations/12345/settings\"Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}/settings",
+                    "response": {
+                        "$ref": "Settings"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only",
+                        "https://www.googleapis.com/auth/logging.admin",
+                        "https://www.googleapis.com/auth/logging.read"
+                    ]
+                },
                 "updateCmekSettings": {
                     "description": "Updates the Log Router CMEK settings for the given resource.Note: CMEK for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.UpdateCmekSettings will fail if 1) kms_key_name is invalid, or 2) the associated service account does not have the required roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or 3) access to the key is disabled.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
                     "flatPath": "v2/organizations/{organizationsId}/cmekSettings",
@@ -3148,6 +3267,41 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/logging.admin"
                     ]
+                },
+                "updateSettings": {
+                    "description": "Updates the Log Router settings for the given resource.Note: Settings for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.UpdateSettings will fail if 1) kms_key_name is invalid, or 2) the associated service account does not have the required roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or 3) access to the key is disabled. 4) location_id is not supported by Logging. 5) location_id violate OrgPolicy.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
+                    "flatPath": "v2/organizations/{organizationsId}/settings",
+                    "httpMethod": "PATCH",
+                    "id": "logging.organizations.updateSettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The resource name for the settings to update. \"organizations/[ORGANIZATION_ID]/settings\" For example:\"organizations/12345/settings\"Note: Settings for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.",
+                            "location": "path",
+                            "pattern": "^organizations/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "Optional. Field mask identifying which fields from settings should be updated. A field will be overwritten if and only if it is in the update mask. Output only fields cannot be updated.See FieldMask for more information.For example: \"updateMask=kmsKeyName\"",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}/settings",
+                    "request": {
+                        "$ref": "Settings"
+                    },
+                    "response": {
+                        "$ref": "Settings"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/logging.admin"
+                    ]
                 }
             },
             "resources": {
@@ -4175,6 +4329,34 @@
                         "https://www.googleapis.com/auth/logging.admin",
                         "https://www.googleapis.com/auth/logging.read"
                     ]
+                },
+                "getSettings": {
+                    "description": "Gets the Log Router settings for the given resource.Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
+                    "flatPath": "v2/projects/{projectsId}/settings",
+                    "httpMethod": "GET",
+                    "id": "logging.projects.getSettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The resource for which to retrieve settings. \"projects/[PROJECT_ID]/settings\" \"organizations/[ORGANIZATION_ID]/settings\" \"billingAccounts/[BILLING_ACCOUNT_ID]/settings\" \"folders/[FOLDER_ID]/settings\" For example:\"organizations/12345/settings\"Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.",
+                            "location": "path",
+                            "pattern": "^projects/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}/settings",
+                    "response": {
+                        "$ref": "Settings"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only",
+                        "https://www.googleapis.com/auth/logging.admin",
+                        "https://www.googleapis.com/auth/logging.read"
+                    ]
                 }
             },
             "resources": {
@@ -5532,6 +5714,34 @@
                         "https://www.googleapis.com/auth/logging.read"
                     ]
                 },
+                "getSettings": {
+                    "description": "Gets the Log Router settings for the given resource.Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/settings",
+                    "httpMethod": "GET",
+                    "id": "logging.getSettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The resource for which to retrieve settings. \"projects/[PROJECT_ID]/settings\" \"organizations/[ORGANIZATION_ID]/settings\" \"billingAccounts/[BILLING_ACCOUNT_ID]/settings\" \"folders/[FOLDER_ID]/settings\" For example:\"organizations/12345/settings\"Note: Settings for the Log Router can be get for Google Cloud projects, folders, organizations and billing accounts. Currently it can only be configured for organizations. Once configured for an organization, it applies to all projects and folders in the Google Cloud organization.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}/settings",
+                    "response": {
+                        "$ref": "Settings"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloud-platform.read-only",
+                        "https://www.googleapis.com/auth/logging.admin",
+                        "https://www.googleapis.com/auth/logging.read"
+                    ]
+                },
                 "updateCmekSettings": {
                     "description": "Updates the Log Router CMEK settings for the given resource.Note: CMEK for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.UpdateCmekSettings will fail if 1) kms_key_name is invalid, or 2) the associated service account does not have the required roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or 3) access to the key is disabled.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
                     "flatPath": "v2/{v2Id}/{v2Id1}/cmekSettings",
@@ -5566,11 +5776,46 @@
                         "https://www.googleapis.com/auth/cloud-platform",
                         "https://www.googleapis.com/auth/logging.admin"
                     ]
+                },
+                "updateSettings": {
+                    "description": "Updates the Log Router settings for the given resource.Note: Settings for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.UpdateSettings will fail if 1) kms_key_name is invalid, or 2) the associated service account does not have the required roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or 3) access to the key is disabled. 4) location_id is not supported by Logging. 5) location_id violate OrgPolicy.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
+                    "flatPath": "v2/{v2Id}/{v2Id1}/settings",
+                    "httpMethod": "PATCH",
+                    "id": "logging.updateSettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The resource name for the settings to update. \"organizations/[ORGANIZATION_ID]/settings\" For example:\"organizations/12345/settings\"Note: Settings for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.",
+                            "location": "path",
+                            "pattern": "^[^/]+/[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "Optional. Field mask identifying which fields from settings should be updated. A field will be overwritten if and only if it is in the update mask. Output only fields cannot be updated.See FieldMask for more information.For example: \"updateMask=kmsKeyName\"",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v2/{+name}/settings",
+                    "request": {
+                        "$ref": "Settings"
+                    },
+                    "response": {
+                        "$ref": "Settings"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/logging.admin"
+                    ]
                 }
             }
         }
     },
-    "revision": "20211223",
+    "revision": "20220204",
     "rootUrl": "https://logging.googleapis.com/",
     "schemas": {
         "BigQueryOptions": {
@@ -6295,6 +6540,10 @@
                     "description": "Optional. The span ID within the trace associated with the log entry.For Trace spans, this is the same format that the Trace API v2 uses: a 16-character hexadecimal encoding of an 8-byte array, such as 000000000000004a.",
                     "type": "string"
                 },
+                "split": {
+                    "$ref": "LogSplit",
+                    "description": "Optional. Information indicating this LogEntry is part of a sequence of multiple log entries split from a single LogEntry."
+                },
                 "textPayload": {
                     "description": "The log entry payload, represented as a Unicode string (UTF-8).",
                     "type": "string"
@@ -6578,6 +6827,27 @@
             },
             "type": "object"
         },
+        "LogSplit": {
+            "description": "Additional information used to correlate multiple log entries. Used when a single LogEntry would exceed the Google Cloud Logging size limit and is split across multiple log entries.",
+            "id": "LogSplit",
+            "properties": {
+                "index": {
+                    "description": "The index of this LogEntry in the sequence of split log entries. Log entries are given |index| values 0, 1, ..., n-1 for a sequence of n log entries.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "totalSplits": {
+                    "description": "The total number of log entries that the original LogEntry was split into.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "uid": {
+                    "description": "A globally unique identifier for all log entries in a sequence of split log entries. All log entries with the same |LogSplit.uid| are assumed to be part of the same sequence of split log entries.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "LogView": {
             "description": "Describes a view over log entries in a bucket.",
             "id": "LogView",
@@ -6645,10 +6915,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -6742,10 +7012,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -6758,7 +7028,7 @@
             "type": "object"
         },
         "MonitoredResource": {
-            "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"instance_id\" and \"zone\": { \"type\": \"gce_instance\", \"labels\": { \"instance_id\": \"12345678901234\", \"zone\": \"us-central1-a\" }} ",
+            "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"project_id\", \"instance_id\" and \"zone\": { \"type\": \"gce_instance\", \"labels\": { \"project_id\": \"my-project\", \"instance_id\": \"12345678901234\", \"zone\": \"us-central1-a\" }} ",
             "id": "MonitoredResource",
             "properties": {
                 "labels": {
@@ -6811,10 +7081,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -7040,6 +7310,26 @@
             },
             "type": "object"
         },
+        "Settings": {
+            "description": "Describes the settings associated with a project, folder, organization, billing account, or flexible resource.",
+            "id": "Settings",
+            "properties": {
+                "disableDefaultSink": {
+                    "description": "Optional. If set to true, the _Default sink in newly created projects and folders will created in a disabled state. This can be used to automatically disable log ingestion if there is already an aggregated sink configured in the hierarchy. The _Default sink can be re-enabled manually if needed.",
+                    "type": "boolean"
+                },
+                "name": {
+                    "description": "Output only. The resource name of the settings.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "storageLocation": {
+                    "description": "Optional. The Cloud region that will be used for _Default and _Required log buckets for newly created projects and folders. For example europe-west1. This setting does not affect the location of custom log buckets.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "SourceLocation": {
             "description": "Specifies a location in a source code file.",
             "id": "SourceLocation",
diff --git a/discovery/googleapis/manufacturers__v1.json b/discovery/googleapis/manufacturers__v1.json
index dea1ccc..d937a8e 100644
--- a/discovery/googleapis/manufacturers__v1.json
+++ b/discovery/googleapis/manufacturers__v1.json
@@ -286,7 +286,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220209",
     "rootUrl": "https://manufacturers.googleapis.com/",
     "schemas": {
         "Attributes": {
@@ -329,7 +329,7 @@
                     "type": "string"
                 },
                 "excludedDestination": {
-                    "description": "A list of excluded destinations.",
+                    "description": "A list of excluded destinations such as \"ClientExport\", \"ClientShoppingCatalog\" or \"PartnerShoppingCatalog\". For more information, see https://support.google.com/manufacturers/answer/7443550",
                     "items": {
                         "type": "string"
                     },
@@ -366,7 +366,7 @@
                     "description": "The image of the product. For more information, see https://support.google.com/manufacturers/answer/6124116#image."
                 },
                 "includedDestination": {
-                    "description": "A list of included destinations.",
+                    "description": "A list of included destinations such as \"ClientExport\", \"ClientShoppingCatalog\" or \"PartnerShoppingCatalog\". For more information, see https://support.google.com/manufacturers/answer/7443550",
                     "items": {
                         "type": "string"
                     },
@@ -456,7 +456,7 @@
                     "description": "The suggested retail price (MSRP) of the product. For more information, see https://support.google.com/manufacturers/answer/6124116#price."
                 },
                 "targetClientId": {
-                    "description": "The target client id. Should only be used in the accounts of the data partners.",
+                    "description": "The target client id. Should only be used in the accounts of the data partners. For more information, see https://support.google.com/manufacturers/answer/10857344",
                     "type": "string"
                 },
                 "theme": {
diff --git a/discovery/googleapis/memcache__v1.json b/discovery/googleapis/memcache__v1.json
index 8004bf3..ae83385 100644
--- a/discovery/googleapis/memcache__v1.json
+++ b/discovery/googleapis/memcache__v1.json
@@ -526,7 +526,7 @@
             }
         }
     },
-    "revision": "20211028",
+    "revision": "20220126",
     "rootUrl": "https://memcache.googleapis.com/",
     "schemas": {
         "ApplyParametersRequest": {
diff --git a/discovery/googleapis/ml__v1.json b/discovery/googleapis/ml__v1.json
index fab8678..bd4b497 100644
--- a/discovery/googleapis/ml__v1.json
+++ b/discovery/googleapis/ml__v1.json
@@ -1484,7 +1484,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220125",
     "rootUrl": "https://ml.googleapis.com/",
     "schemas": {
         "GoogleApi__HttpBody": {
diff --git a/discovery/googleapis/monitoring__v3.json b/discovery/googleapis/monitoring__v3.json
index 3941052..0662ec7 100644
--- a/discovery/googleapis/monitoring__v3.json
+++ b/discovery/googleapis/monitoring__v3.json
@@ -2569,7 +2569,7 @@
             }
         }
     },
-    "revision": "20220117",
+    "revision": "20220205",
     "rootUrl": "https://monitoring.googleapis.com/",
     "schemas": {
         "Aggregation": {
@@ -4081,10 +4081,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -4178,10 +4178,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -4257,6 +4257,22 @@
                     "format": "google-duration",
                     "type": "string"
                 },
+                "evaluationMissingData": {
+                    "description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving.",
+                    "enum": [
+                        "EVALUATION_MISSING_DATA_UNSPECIFIED",
+                        "EVALUATION_MISSING_DATA_INACTIVE",
+                        "EVALUATION_MISSING_DATA_ACTIVE",
+                        "EVALUATION_MISSING_DATA_NO_OP"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified evaluation missing data option, if used, it will default to EVALUATION_MISSING_DATA_ACTIVE.",
+                        "If there is no data to evaluate the condition, then evaluate the condition as false.",
+                        "If there is no data to evaluate the condition, then evaluate the condition as true. The default for conditions with a duration value.",
+                        "Do not evaluate the condition to any value if there is no data."
+                    ],
+                    "type": "string"
+                },
                 "filter": {
                     "description": "Required. A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies which time series should be compared with the threshold.The filter is similar to the one that is specified in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that call is useful to verify the time series that will be retrieved / processed). The filter must specify the metric type and the resource type. Optionally, it can specify resource labels and metric labels. This field must not exceed 2048 Unicode characters in length.",
                     "type": "string"
@@ -4327,10 +4343,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -4376,6 +4392,22 @@
                     "format": "google-duration",
                     "type": "string"
                 },
+                "evaluationMissingData": {
+                    "description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving.",
+                    "enum": [
+                        "EVALUATION_MISSING_DATA_UNSPECIFIED",
+                        "EVALUATION_MISSING_DATA_INACTIVE",
+                        "EVALUATION_MISSING_DATA_ACTIVE",
+                        "EVALUATION_MISSING_DATA_NO_OP"
+                    ],
+                    "enumDescriptions": [
+                        "An unspecified evaluation missing data option, if used, it will default to EVALUATION_MISSING_DATA_ACTIVE.",
+                        "If there is no data to evaluate the condition, then evaluate the condition as false.",
+                        "If there is no data to evaluate the condition, then evaluate the condition as true. The default for conditions with a duration value.",
+                        "Do not evaluate the condition to any value if there is no data."
+                    ],
+                    "type": "string"
+                },
                 "query": {
                     "description": "Monitoring Query Language (https://cloud.google.com/monitoring/mql) query that outputs a boolean stream.",
                     "type": "string"
@@ -4505,10 +4537,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -5258,7 +5290,7 @@
                 },
                 "monitoredResource": {
                     "$ref": "MonitoredResource",
-                    "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are valid for this field: uptime_url, gce_instance, gae_app, aws_ec2_instance, aws_elb_load_balancer k8s_service"
+                    "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are valid for this field: uptime_url, gce_instance, gae_app, aws_ec2_instance, aws_elb_load_balancer k8s_service servicedirectory_service"
                 },
                 "name": {
                     "description": "A unique resource name for this Uptime check configuration. The format is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] [PROJECT_ID_OR_NUMBER] is the Workspace host project associated with the Uptime check.This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.",
diff --git a/discovery/googleapis/mybusinessaccountmanagement__v1.json b/discovery/googleapis/mybusinessaccountmanagement__v1.json
index 9c1ea37..f2deebe 100644
--- a/discovery/googleapis/mybusinessaccountmanagement__v1.json
+++ b/discovery/googleapis/mybusinessaccountmanagement__v1.json
@@ -528,7 +528,7 @@
             }
         }
     },
-    "revision": "20211211",
+    "revision": "20220215",
     "rootUrl": "https://mybusinessaccountmanagement.googleapis.com/",
     "schemas": {
         "AcceptInvitationRequest": {
@@ -876,7 +876,7 @@
                     "type": "array"
                 },
                 "regionCode": {
-                    "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.",
+                    "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.",
                     "type": "string"
                 },
                 "revision": {
diff --git a/discovery/googleapis/mybusinessbusinesscalls__v1.json b/discovery/googleapis/mybusinessbusinesscalls__v1.json
new file mode 100644
index 0000000..f7b7a3b
--- /dev/null
+++ b/discovery/googleapis/mybusinessbusinesscalls__v1.json
@@ -0,0 +1,396 @@
+{
+    "basePath": "",
+    "baseUrl": "https://mybusinessbusinesscalls.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "My Business Business Calls",
+    "description": "The My Business Business Calls API manages business calls information of a location on Google.",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://developers.google.com/my-business/",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "mybusinessbusinesscalls:v1",
+    "kind": "discovery#restDescription",
+    "name": "mybusinessbusinesscalls",
+    "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": {
+        "locations": {
+            "methods": {
+                "getBusinesscallssettings": {
+                    "description": "Returns the Business calls settings resource for the given location.",
+                    "flatPath": "v1/locations/{locationsId}/businesscallssettings",
+                    "httpMethod": "GET",
+                    "id": "mybusinessbusinesscalls.locations.getBusinesscallssettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The BusinessCallsSettings to get. The `name` field is used to identify the business call settings to get. Format: locations/{location_id}/businesscallssettings.",
+                            "location": "path",
+                            "pattern": "^locations/[^/]+/businesscallssettings$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "response": {
+                        "$ref": "BusinessCallsSettings"
+                    }
+                },
+                "updateBusinesscallssettings": {
+                    "description": "Updates the Business call settings for the specified location.",
+                    "flatPath": "v1/locations/{locationsId}/businesscallssettings",
+                    "httpMethod": "PATCH",
+                    "id": "mybusinessbusinesscalls.locations.updateBusinesscallssettings",
+                    "parameterOrder": [
+                        "name"
+                    ],
+                    "parameters": {
+                        "name": {
+                            "description": "Required. The resource name of the calls settings. Format: locations/{location}/businesscallssettings",
+                            "location": "path",
+                            "pattern": "^locations/[^/]+/businesscallssettings$",
+                            "required": true,
+                            "type": "string"
+                        },
+                        "updateMask": {
+                            "description": "Required. The list of fields to update.",
+                            "format": "google-fieldmask",
+                            "location": "query",
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+name}",
+                    "request": {
+                        "$ref": "BusinessCallsSettings"
+                    },
+                    "response": {
+                        "$ref": "BusinessCallsSettings"
+                    }
+                }
+            },
+            "resources": {
+                "businesscallsinsights": {
+                    "methods": {
+                        "list": {
+                            "description": "Returns insights for Business calls for a location.",
+                            "flatPath": "v1/locations/{locationsId}/businesscallsinsights",
+                            "httpMethod": "GET",
+                            "id": "mybusinessbusinesscalls.locations.businesscallsinsights.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "Optional. A filter constraining the calls insights to return. The response includes only entries that match the filter. If the MetricType is not provided, AGGREGATE_COUNT is returned. If no end_date is provided, the last date for which data is available is used. If no start_date is provided, we will default to the first date for which data is available, which is currently 6 months. If start_date is before the date when data is available, data is returned starting from the date when it is available. At this time we support following filters. 1. start_date=\"DATE\" where date is in YYYY-MM-DD format. 2. end_date=\"DATE\" where date is in YYYY-MM-DD format. 3. metric_type=XYZ where XYZ is a valid MetricType. 4. Conjunctions(AND) of all of the above. e.g., \"start_date=2021-08-01 AND end_date=2021-08-10 AND metric_type=AGGREGATE_COUNT\" The AGGREGATE_COUNT metric_type ignores the DD part of the date.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "Optional. The maximum number of BusinessCallsInsights to return. If unspecified, at most 20 will be returned. Some of the metric_types(e.g, AGGREGATE_COUNT) returns a single page. For these metrics, the page_size is ignored.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "Optional. A page token, received from a previous `ListBusinessCallsInsights` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBusinessCallsInsights` must match the call that provided the page token. Some of the metric_types (e.g, AGGREGATE_COUNT) returns a single page. For these metrics, the pake_token is ignored.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "parent": {
+                                    "description": "Required. The parent location to fetch calls insights for. Format: locations/{location_id}",
+                                    "location": "path",
+                                    "pattern": "^locations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1/{+parent}/businesscallsinsights",
+                            "response": {
+                                "$ref": "ListBusinessCallsInsightsResponse"
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "20220215",
+    "rootUrl": "https://mybusinessbusinesscalls.googleapis.com/",
+    "schemas": {
+        "AggregateMetrics": {
+            "description": "Metrics aggregated over the input time range.",
+            "id": "AggregateMetrics",
+            "properties": {
+                "answeredCallsCount": {
+                    "description": "Total count of answered calls.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "endDate": {
+                    "$ref": "Date",
+                    "description": "End date for this metric."
+                },
+                "hourlyMetrics": {
+                    "description": "A list of metrics by hour of day.",
+                    "items": {
+                        "$ref": "HourlyMetrics"
+                    },
+                    "type": "array"
+                },
+                "missedCallsCount": {
+                    "description": "Total count of missed calls.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "startDate": {
+                    "$ref": "Date",
+                    "description": "Date for this metric. If metric is monthly, only year and month are used."
+                },
+                "weekdayMetrics": {
+                    "description": "A list of metrics by day of week.",
+                    "items": {
+                        "$ref": "WeekDayMetrics"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "BusinessCallsInsights": {
+            "description": "Insights for calls made to a location.",
+            "id": "BusinessCallsInsights",
+            "properties": {
+                "aggregateMetrics": {
+                    "$ref": "AggregateMetrics",
+                    "description": "Metric for the time range based on start_date and end_date."
+                },
+                "metricType": {
+                    "description": "The metric for which the value applies.",
+                    "enum": [
+                        "METRIC_TYPE_UNSPECIFIED",
+                        "AGGREGATE_COUNT"
+                    ],
+                    "enumDescriptions": [
+                        "Type of metric is unspecified.",
+                        "The metrics provided are counts aggregated over the input time_range."
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Required. The resource name of the calls insights. Format: locations/{location}/businesscallsinsights",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BusinessCallsSettings": {
+            "description": "Business calls settings for a location.",
+            "id": "BusinessCallsSettings",
+            "properties": {
+                "callsState": {
+                    "description": "Required. The state of this location's enrollment in Business calls.",
+                    "enum": [
+                        "CALLS_STATE_UNSPECIFIED",
+                        "ENABLED",
+                        "DISABLED"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Business calls is enabled for the location.",
+                        "Business calls is disabled for the location."
+                    ],
+                    "type": "string"
+                },
+                "consentTime": {
+                    "description": "Input only. Time when the end user provided consent to the API user to enable business calls.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Required. The resource name of the calls settings. Format: locations/{location}/businesscallssettings",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Date": {
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
+            "id": "Date",
+            "properties": {
+                "day": {
+                    "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "month": {
+                    "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "year": {
+                    "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "HourlyMetrics": {
+            "description": "Metrics for an hour.",
+            "id": "HourlyMetrics",
+            "properties": {
+                "hour": {
+                    "description": "Hour of the day. Allowed values are 0-23.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "missedCallsCount": {
+                    "description": "Total count of missed calls for this hour.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ListBusinessCallsInsightsResponse": {
+            "description": "Response message for ListBusinessCallsInsights.",
+            "id": "ListBusinessCallsInsightsResponse",
+            "properties": {
+                "businessCallsInsights": {
+                    "description": "A collection of business calls insights for the location.",
+                    "items": {
+                        "$ref": "BusinessCallsInsights"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. Some of the metric_types (e.g, AGGREGATE_COUNT) returns a single page. For these metrics, the next_page_token will be empty.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "WeekDayMetrics": {
+            "description": "Metrics for a week day.",
+            "id": "WeekDayMetrics",
+            "properties": {
+                "day": {
+                    "description": "Day of the week. Allowed values are Sunday - Saturday.",
+                    "enum": [
+                        "DAY_OF_WEEK_UNSPECIFIED",
+                        "MONDAY",
+                        "TUESDAY",
+                        "WEDNESDAY",
+                        "THURSDAY",
+                        "FRIDAY",
+                        "SATURDAY",
+                        "SUNDAY"
+                    ],
+                    "enumDescriptions": [
+                        "The day of the week is unspecified.",
+                        "Monday",
+                        "Tuesday",
+                        "Wednesday",
+                        "Thursday",
+                        "Friday",
+                        "Saturday",
+                        "Sunday"
+                    ],
+                    "type": "string"
+                },
+                "missedCallsCount": {
+                    "description": "Total count of missed calls for this hour.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "My Business Business Calls API",
+    "version": "v1",
+    "version_module": true
+}
\ No newline at end of file
diff --git a/discovery/googleapis/mybusinessbusinessinformation__v1.json b/discovery/googleapis/mybusinessbusinessinformation__v1.json
index ddb1868..331beaa 100644
--- a/discovery/googleapis/mybusinessbusinessinformation__v1.json
+++ b/discovery/googleapis/mybusinessbusinessinformation__v1.json
@@ -660,7 +660,7 @@
             }
         }
     },
-    "revision": "20211211",
+    "revision": "20220215",
     "rootUrl": "https://mybusinessbusinessinformation.googleapis.com/",
     "schemas": {
         "AdWordsLocationExtensions": {
@@ -959,7 +959,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -1485,7 +1485,7 @@
                     "type": "array"
                 },
                 "regionCode": {
-                    "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.",
+                    "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.",
                     "type": "string"
                 },
                 "revision": {
diff --git a/discovery/googleapis/mybusinesslodging__v1.json b/discovery/googleapis/mybusinesslodging__v1.json
index 57cbcb7..87f5f85 100644
--- a/discovery/googleapis/mybusinesslodging__v1.json
+++ b/discovery/googleapis/mybusinesslodging__v1.json
@@ -192,7 +192,7 @@
             }
         }
     },
-    "revision": "20211211",
+    "revision": "20220215",
     "rootUrl": "https://mybusinesslodging.googleapis.com/",
     "schemas": {
         "Accessibility": {
@@ -5163,7 +5163,7 @@
                     "type": "string"
                 },
                 "vegetarianMeals": {
-                    "description": "Vegetarian meals. The property provides vegetarian menu options for guests. Vegetarian food does not contain animal products.",
+                    "description": "Vegetarian meals. The property provides vegetarian menu options for guests. Vegetarian food does not contain meat, poultry, fish, or seafood.",
                     "type": "boolean"
                 },
                 "vegetarianMealsException": {
diff --git a/discovery/googleapis/mybusinessnotifications__v1.json b/discovery/googleapis/mybusinessnotifications__v1.json
index 48fe405..d11b1d6 100644
--- a/discovery/googleapis/mybusinessnotifications__v1.json
+++ b/discovery/googleapis/mybusinessnotifications__v1.json
@@ -152,7 +152,7 @@
             }
         }
     },
-    "revision": "20211211",
+    "revision": "20220215",
     "rootUrl": "https://mybusinessnotifications.googleapis.com/",
     "schemas": {
         "NotificationSetting": {
@@ -177,7 +177,8 @@
                             "NEW_ANSWER",
                             "UPDATED_ANSWER",
                             "DUPLICATE_LOCATION",
-                            "LOSS_OF_VOICE_OF_MERCHANT"
+                            "LOSS_OF_VOICE_OF_MERCHANT",
+                            "VOICE_OF_MERCHANT_UPDATED"
                         ],
                         "enumDescriptions": [
                             "No notification type. Will not match any notifications.",
@@ -190,7 +191,8 @@
                             "A new answer is added to the location. The notification will provide the resource name of question and answer.",
                             "An answer of the location is updated. The notification will provide the resource name of question and answer.",
                             "Indicates whether there is a change in location metadata's duplicate location field.",
-                            "Indicates whether the location has a loss in voice of merchant status. Call GetVoiceOfMerchantState rpc for more details"
+                            "Deprecated: Migrate the existing usages of this value to the more expanded \"VOICE_OF_MERCHANT_UPDATED\".",
+                            "Indicates whether the location has an update in voice of merchant status. Call GetVoiceOfMerchantState rpc for more details"
                         ],
                         "type": "string"
                     },
diff --git a/discovery/googleapis/mybusinessplaceactions__v1.json b/discovery/googleapis/mybusinessplaceactions__v1.json
index 9b7149c..946ce84 100644
--- a/discovery/googleapis/mybusinessplaceactions__v1.json
+++ b/discovery/googleapis/mybusinessplaceactions__v1.json
@@ -279,7 +279,7 @@
             }
         }
     },
-    "revision": "20211211",
+    "revision": "20220215",
     "rootUrl": "https://mybusinessplaceactions.googleapis.com/",
     "schemas": {
         "Empty": {
diff --git a/discovery/googleapis/mybusinessqanda__v1.json b/discovery/googleapis/mybusinessqanda__v1.json
index f958e3b..9eca1a3 100644
--- a/discovery/googleapis/mybusinessqanda__v1.json
+++ b/discovery/googleapis/mybusinessqanda__v1.json
@@ -321,7 +321,7 @@
             }
         }
     },
-    "revision": "20211211",
+    "revision": "20220215",
     "rootUrl": "https://mybusinessqanda.googleapis.com/",
     "schemas": {
         "Answer": {
diff --git a/discovery/googleapis/mybusinessverifications__v1.json b/discovery/googleapis/mybusinessverifications__v1.json
index 0181702..f0cf0c6 100644
--- a/discovery/googleapis/mybusinessverifications__v1.json
+++ b/discovery/googleapis/mybusinessverifications__v1.json
@@ -254,7 +254,7 @@
             }
         }
     },
-    "revision": "20211211",
+    "revision": "20220215",
     "rootUrl": "https://mybusinessverifications.googleapis.com/",
     "schemas": {
         "AddressVerificationData": {
@@ -459,7 +459,7 @@
                     "type": "array"
                 },
                 "regionCode": {
-                    "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.",
+                    "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.",
                     "type": "string"
                 },
                 "revision": {
diff --git a/discovery/googleapis/networkconnectivity__v1.json b/discovery/googleapis/networkconnectivity__v1.json
index 2fd2378..10ce2d3 100644
--- a/discovery/googleapis/networkconnectivity__v1.json
+++ b/discovery/googleapis/networkconnectivity__v1.json
@@ -936,7 +936,7 @@
             }
         }
     },
-    "revision": "20220104",
+    "revision": "20220210",
     "rootUrl": "https://networkconnectivity.googleapis.com/",
     "schemas": {
         "AuditConfig": {
@@ -1125,7 +1125,7 @@
             "type": "object"
         },
         "Hub": {
-            "description": "A hub is a collection of spokes. A single hub can contain spokes from multiple regions. However, all of a hub's spokes must be associated with resources that reside in the same VPC network.",
+            "description": "A hub is a collection of spokes. A single hub can contain spokes from multiple regions. However, if any of a hub's spokes use the data transfer feature, the resources associated with those spokes must all reside in the same VPC network. Spokes that do not use data transfer can be associated with any VPC network in your project.",
             "id": "Hub",
             "properties": {
                 "createTime": {
@@ -1150,7 +1150,7 @@
                     "type": "string"
                 },
                 "routingVpcs": {
-                    "description": "The VPC network associated with this hub's spokes. All of the VPN tunnels, VLAN attachments, and router appliance instances referenced by this hub's spokes must belong to this VPC network. This field is read-only. Network Connectivity Center automatically populates it based on the set of spokes attached to the hub.",
+                    "description": "The VPC networks associated with this hub's spokes. This field is read-only. Network Connectivity Center automatically populates it based on the set of spokes attached to the hub.",
                     "items": {
                         "$ref": "RoutingVPC"
                     },
@@ -1192,7 +1192,7 @@
             "id": "LinkedInterconnectAttachments",
             "properties": {
                 "siteToSiteDataTransfer": {
-                    "description": "A value that controls whether site-to-site data transfer is enabled for these resources. This field is set to false by default, but you must set it to true. Note that data transfer is available only in supported locations.",
+                    "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Data transfer is available only in [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations).",
                     "type": "boolean"
                 },
                 "uris": {
@@ -1206,7 +1206,7 @@
             "type": "object"
         },
         "LinkedRouterApplianceInstances": {
-            "description": "A collection of router appliance instances. If you have multiple router appliance instances connected to the same site, they should all be attached to the same spoke.",
+            "description": "A collection of router appliance instances. If you configure multiple router appliance instances to receive data from the same set of sites outside of Google Cloud, we recommend that you associate those instances with the same spoke.",
             "id": "LinkedRouterApplianceInstances",
             "properties": {
                 "instances": {
@@ -1217,7 +1217,7 @@
                     "type": "array"
                 },
                 "siteToSiteDataTransfer": {
-                    "description": "A value that controls whether site-to-site data transfer is enabled for these resources. This field is set to false by default, but you must set it to true. Note that data transfer is available only in supported locations.",
+                    "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Data transfer is available only in [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations).",
                     "type": "boolean"
                 }
             },
@@ -1228,7 +1228,7 @@
             "id": "LinkedVpnTunnels",
             "properties": {
                 "siteToSiteDataTransfer": {
-                    "description": "A value that controls whether site-to-site data transfer is enabled for these resources. This field is set to false by default, but you must set it to true. Note that data transfer is available only in supported locations.",
+                    "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Data transfer is available only in [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations).",
                     "type": "boolean"
                 },
                 "uris": {
@@ -1458,11 +1458,11 @@
             "type": "object"
         },
         "RoutingVPC": {
-            "description": "RoutingVPC contains information about the VPC network that is associated with a hub's spokes.",
+            "description": "RoutingVPC contains information about the VPC networks that are associated with a hub's spokes.",
             "id": "RoutingVPC",
             "properties": {
                 "requiredForNewSiteToSiteDataTransferSpokes": {
-                    "description": "Output only. If true, indicates that this VPC network is currently associated with spokes that use the data transfer feature (spokes where the site_to_site_data_transfer field is set to true). If you create new spokes that use data transfer, they must be associated with this VPC network.",
+                    "description": "Output only. If true, indicates that this VPC network is currently associated with spokes that use the data transfer feature (spokes where the site_to_site_data_transfer field is set to true). If you create new spokes that use data transfer, they must be associated with this VPC network. At most, one VPC network will have this field set to true.",
                     "readOnly": true,
                     "type": "boolean"
                 },
diff --git a/discovery/googleapis/networksecurity__v1.json b/discovery/googleapis/networksecurity__v1.json
index f812527..b2b654a 100644
--- a/discovery/googleapis/networksecurity__v1.json
+++ b/discovery/googleapis/networksecurity__v1.json
@@ -1035,7 +1035,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220128",
     "rootUrl": "https://networksecurity.googleapis.com/",
     "schemas": {
         "AuthorizationPolicy": {
@@ -1646,7 +1646,7 @@
             "type": "object"
         },
         "ServerTlsPolicy": {
-            "description": "ServerTlsPolicy is a resource that specifies how a server should authenticate incoming requests. This resource itself does not affect configuration unless it is attached to a target https proxy or endpoint config selector resource. ",
+            "description": "ServerTlsPolicy is a resource that specifies how a server should authenticate incoming requests. This resource itself does not affect configuration unless it is attached to a target https proxy or endpoint config selector resource.",
             "id": "ServerTlsPolicy",
             "properties": {
                 "allowOpen": {
diff --git a/discovery/googleapis/networkservices__v1.json b/discovery/googleapis/networkservices__v1.json
index ae5747d..97cdfff 100644
--- a/discovery/googleapis/networkservices__v1.json
+++ b/discovery/googleapis/networkservices__v1.json
@@ -820,7 +820,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220208",
     "rootUrl": "https://networkservices.googleapis.com/",
     "schemas": {
         "AuditConfig": {
diff --git a/discovery/googleapis/notebooks__v1.json b/discovery/googleapis/notebooks__v1.json
index 4540c72..0f52bcc 100644
--- a/discovery/googleapis/notebooks__v1.json
+++ b/discovery/googleapis/notebooks__v1.json
@@ -1741,7 +1741,7 @@
             }
         }
     },
-    "revision": "20220104",
+    "revision": "20220205",
     "rootUrl": "https://notebooks.googleapis.com/",
     "schemas": {
         "AcceleratorConfig": {
@@ -1964,6 +1964,13 @@
             "description": "The definition of an Event for a managed / semi-managed notebook instance.",
             "id": "Event",
             "properties": {
+                "details": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Optional. Event details. This field is used to pass event information.",
+                    "type": "object"
+                },
                 "reportTime": {
                     "description": "Event report time.",
                     "format": "google-datetime",
@@ -1973,11 +1980,15 @@
                     "description": "Event type.",
                     "enum": [
                         "EVENT_TYPE_UNSPECIFIED",
-                        "IDLE"
+                        "IDLE",
+                        "HEARTBEAT",
+                        "HEALTH"
                     ],
                     "enumDescriptions": [
                         "Event is not specified.",
-                        "The instance / runtime is idle"
+                        "The instance / runtime is idle",
+                        "The instance / runtime is available. This event indicates that instance / runtime underlying compute is operational.",
+                        "The instance / runtime health is available. This event indicates that instance / runtime health information."
                     ],
                     "type": "string"
                 }
@@ -2260,6 +2271,11 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "creator": {
+                    "description": "Output only. Email address of entity that sent original CreateInstance request.",
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "customGpuDriverPath": {
                     "description": "Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we'll automatically choose from official GPU drivers.",
                     "type": "string"
@@ -2991,13 +3007,13 @@
             "type": "object"
         },
         "ResetInstanceRequest": {
-            "description": "Request for reseting a notebook instance",
+            "description": "Request for resetting a notebook instance",
             "id": "ResetInstanceRequest",
             "properties": {},
             "type": "object"
         },
         "ResetRuntimeRequest": {
-            "description": "Request for reseting a Managed Notebook Runtime.",
+            "description": "Request for resetting a Managed Notebook Runtime.",
             "id": "ResetRuntimeRequest",
             "properties": {},
             "type": "object"
@@ -3032,12 +3048,16 @@
                     "enum": [
                         "HEALTH_STATE_UNSPECIFIED",
                         "HEALTHY",
-                        "UNHEALTHY"
+                        "UNHEALTHY",
+                        "AGENT_NOT_INSTALLED",
+                        "AGENT_NOT_RUNNING"
                     ],
                     "enumDescriptions": [
                         "The runtime substate is unknown.",
                         "The runtime is known to be in an healthy state (for example, critical daemons are running) Applies to ACTIVE state.",
-                        "The runtime is known to be in an unhealthy state (for example, critical daemons are not running) Applies to ACTIVE state."
+                        "The runtime is known to be in an unhealthy state (for example, critical daemons are not running) Applies to ACTIVE state.",
+                        "The runtime has not installed health monitoring agent. Applies to ACTIVE state.",
+                        "The runtime health monitoring agent is not running. Applies to ACTIVE state."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -3148,11 +3168,13 @@
                     "description": "The type of access mode this instance.",
                     "enum": [
                         "RUNTIME_ACCESS_TYPE_UNSPECIFIED",
-                        "SINGLE_USER"
+                        "SINGLE_USER",
+                        "SERVICE_ACCOUNT"
                     ],
                     "enumDescriptions": [
                         "Unspecified access.",
-                        "Single user login."
+                        "Single user login.",
+                        "Service Account mode. In Service Account mode, Runtime creator will specify a SA that exists in the consumer project. Using Runtime Service Account field. Users accessing the Runtime need ActAs (Service Account User) permission."
                     ],
                     "type": "string"
                 },
@@ -3214,7 +3236,7 @@
             "type": "object"
         },
         "RuntimeSoftwareConfig": {
-            "description": "Specifies the selection and configuration of software inside the runtime. The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * `idle_shutdown: true` * `idle_shutdown_timeout: 180` * `report-system-health: true`",
+            "description": "Specifies the selection and configuration of software inside the runtime. The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * `idle_shutdown: true` * `idle_shutdown_timeout: 180` * `enable_health_monitoring: true`",
             "id": "RuntimeSoftwareConfig",
             "properties": {
                 "customGpuDriverPath": {
@@ -3238,6 +3260,13 @@
                     "description": "Install Nvidia Driver automatically.",
                     "type": "boolean"
                 },
+                "kernels": {
+                    "description": "Optional. Use a list of container images to use as Kernels in the notebook instance.",
+                    "items": {
+                        "$ref": "ContainerImage"
+                    },
+                    "type": "array"
+                },
                 "notebookUpgradeSchedule": {
                     "description": "Cron expression in UTC timezone, used to schedule instance auto upgrade. Please follow the [cron format](https://en.wikipedia.org/wiki/Cron).",
                     "type": "string"
@@ -3245,6 +3274,11 @@
                 "postStartupScript": {
                     "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path (`gs://path-to-file/file-name`).",
                     "type": "string"
+                },
+                "upgradeable": {
+                    "description": "Output only. Bool indicating whether an newer image is available in an image family.",
+                    "readOnly": true,
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -3782,7 +3816,7 @@
                     "description": "Optional. The Compute Engine accelerator configuration for this runtime."
                 },
                 "containerImages": {
-                    "description": "Optional. Use a list of container images to start the notebook instance.",
+                    "description": "Optional. Use a list of container images to use as Kernels in the notebook instance.",
                     "items": {
                         "$ref": "ContainerImage"
                     },
@@ -3844,6 +3878,10 @@
                     ],
                     "type": "string"
                 },
+                "reservedIpRange": {
+                    "description": "Optional. Reserved IP Range name is used for VPC Peering. The subnetwork allocation will use the range *name* if it's assigned. Example: managed-notebooks-range-c PEERING_RANGE_NAME_3=managed-notebooks-range-c gcloud compute addresses create $PEERING_RANGE_NAME_3 \\ --global \\ --prefix-length=24 \\ --description=\"Google Cloud Managed Notebooks Range 24 c\" \\ --network=$NETWORK \\ --addresses=192.168.0.0 \\ --purpose=VPC_PEERING Field value will be: `managed-notebooks-range-c`",
+                    "type": "string"
+                },
                 "shieldedInstanceConfig": {
                     "$ref": "RuntimeShieldedInstanceConfig",
                     "description": "Optional. Shielded VM Instance configuration settings."
diff --git a/discovery/googleapis/ondemandscanning__v1.json b/discovery/googleapis/ondemandscanning__v1.json
index f723e32..8642792 100644
--- a/discovery/googleapis/ondemandscanning__v1.json
+++ b/discovery/googleapis/ondemandscanning__v1.json
@@ -337,7 +337,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220212",
     "rootUrl": "https://ondemandscanning.googleapis.com/",
     "schemas": {
         "AliasContext": {
diff --git a/discovery/googleapis/orgpolicy__v2.json b/discovery/googleapis/orgpolicy__v2.json
index 53554be..d1c9ec3 100644
--- a/discovery/googleapis/orgpolicy__v2.json
+++ b/discovery/googleapis/orgpolicy__v2.json
@@ -360,38 +360,6 @@
                         }
                     }
                 },
-                "customConstraints": {
-                    "methods": {
-                        "patch": {
-                            "description": "Updates a Custom Constraint. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint does not exist. Note: the supplied policy will perform a full overwrite of all fields.",
-                            "flatPath": "v2/organizations/{organizationsId}/customConstraints/{customConstraintsId}",
-                            "httpMethod": "PATCH",
-                            "id": "orgpolicy.organizations.customConstraints.patch",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Immutable. Name of the constraint. This is unique within the organization. Format of the name should be * `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example : \"organizations/123/customConstraints/custom.createOnlyE2TypeVms\"",
-                                    "location": "path",
-                                    "pattern": "^organizations/[^/]+/customConstraints/[^/]+$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v2/{+name}",
-                            "request": {
-                                "$ref": "GoogleCloudOrgpolicyV2CustomConstraint"
-                            },
-                            "response": {
-                                "$ref": "GoogleCloudOrgpolicyV2CustomConstraint"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/cloud-platform"
-                            ]
-                        }
-                    }
-                },
                 "policies": {
                     "methods": {
                         "create": {
@@ -781,7 +749,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://orgpolicy.googleapis.com/",
     "schemas": {
         "GoogleCloudOrgpolicyV2AlternatePolicySpec": {
@@ -861,69 +829,6 @@
             },
             "type": "object"
         },
-        "GoogleCloudOrgpolicyV2CustomConstraint": {
-            "description": "A custom constraint defined by customers which can *only* be applied to the given resource types and organization. By creating a custom constraint, customers can applied policies of this custom constraint. *Creating a custom constraint itself does NOT apply any policy enforcement*.",
-            "id": "GoogleCloudOrgpolicyV2CustomConstraint",
-            "properties": {
-                "actionType": {
-                    "description": "Allow or deny type.",
-                    "enum": [
-                        "ACTION_TYPE_UNSPECIFIED",
-                        "ALLOW",
-                        "DENY"
-                    ],
-                    "enumDescriptions": [
-                        "Unspecified. Will results in user error.",
-                        "Allowed action type.",
-                        "Deny action type."
-                    ],
-                    "type": "string"
-                },
-                "condition": {
-                    "description": "Org policy condition/expression. For example: `resource.instanceName.matches(\"[production|test]_.*_(\\d)+\")'` or, `resource.management.auto_upgrade == true`",
-                    "type": "string"
-                },
-                "description": {
-                    "description": "Detailed information about this custom policy constraint.",
-                    "type": "string"
-                },
-                "displayName": {
-                    "description": "One line display name for the UI.",
-                    "type": "string"
-                },
-                "methodTypes": {
-                    "description": "All the operations being applied for this constraint.",
-                    "items": {
-                        "enum": [
-                            "METHOD_TYPE_UNSPECIFIED",
-                            "CREATE",
-                            "UPDATE",
-                            "DELETE"
-                        ],
-                        "enumDescriptions": [
-                            "Unspecified. Will results in user error.",
-                            "Constraint applied when creating the resource.",
-                            "Constraint applied when updating the resource.",
-                            "Constraint applied when deleting the resource."
-                        ],
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Immutable. Name of the constraint. This is unique within the organization. Format of the name should be * `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example : \"organizations/123/customConstraints/custom.createOnlyE2TypeVms\"",
-                    "type": "string"
-                },
-                "resourceTypes": {
-                    "description": "Immutable. The Resource Instance type on which this policy applies to. Format will be of the form : \"/\" Example: * `compute.googleapis.com/Instance`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
         "GoogleCloudOrgpolicyV2ListConstraintsResponse": {
             "description": "The response returned from the ListConstraints method.",
             "id": "GoogleCloudOrgpolicyV2ListConstraintsResponse",
diff --git a/discovery/googleapis/osconfig__v1.json b/discovery/googleapis/osconfig__v1.json
index b6ab33e..f6b0d93 100644
--- a/discovery/googleapis/osconfig__v1.json
+++ b/discovery/googleapis/osconfig__v1.json
@@ -998,7 +998,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220205",
     "rootUrl": "https://osconfig.googleapis.com/",
     "schemas": {
         "AptSettings": {
@@ -1195,7 +1195,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/oslogin__v1.json b/discovery/googleapis/oslogin__v1.json
index e1fb2f1..a9126a1 100644
--- a/discovery/googleapis/oslogin__v1.json
+++ b/discovery/googleapis/oslogin__v1.json
@@ -341,7 +341,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220205",
     "rootUrl": "https://oslogin.googleapis.com/",
     "schemas": {
         "Empty": {
diff --git a/discovery/googleapis/pagespeedonline__v5.json b/discovery/googleapis/pagespeedonline__v5.json
index dc52452..ab8453c 100644
--- a/discovery/googleapis/pagespeedonline__v5.json
+++ b/discovery/googleapis/pagespeedonline__v5.json
@@ -191,7 +191,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220214",
     "rootUrl": "https://pagespeedonline.googleapis.com/",
     "schemas": {
         "AuditRefs": {
diff --git a/discovery/googleapis/paymentsresellersubscription__v1.json b/discovery/googleapis/paymentsresellersubscription__v1.json
index e266fee..129d0fd 100644
--- a/discovery/googleapis/paymentsresellersubscription__v1.json
+++ b/discovery/googleapis/paymentsresellersubscription__v1.json
@@ -364,7 +364,7 @@
             }
         }
     },
-    "revision": "20220125",
+    "revision": "20220216",
     "rootUrl": "https://paymentsresellersubscription.googleapis.com/",
     "schemas": {
         "GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionRequest": {
diff --git a/discovery/googleapis/people__v1.json b/discovery/googleapis/people__v1.json
index 58e4fff..bef5e33 100644
--- a/discovery/googleapis/people__v1.json
+++ b/discovery/googleapis/people__v1.json
@@ -1171,7 +1171,7 @@
             }
         }
     },
-    "revision": "20220120",
+    "revision": "20220215",
     "rootUrl": "https://people.googleapis.com/",
     "schemas": {
         "Address": {
@@ -1424,19 +1424,19 @@
             "type": "object"
         },
         "Birthday": {
-            "description": "A person's birthday. At least one of the `date` and `text` fields are specified. The `date` and `text` fields typically represent the same date, but are not guaranteed to.",
+            "description": "A person's birthday. At least one of the `date` and `text` fields are specified. The `date` and `text` fields typically represent the same date, but are not guaranteed to. Clients should always set the `date` field when mutating birthdays.",
             "id": "Birthday",
             "properties": {
                 "date": {
                     "$ref": "Date",
-                    "description": "The date of the birthday."
+                    "description": "The structured date of the birthday."
                 },
                 "metadata": {
                     "$ref": "FieldMetadata",
                     "description": "Metadata about the birthday."
                 },
                 "text": {
-                    "description": "A free-form string representing the user's birthday.",
+                    "description": "Prefer to use the `date` field if set. A free-form string representing the user's birthday. This value is not validated.",
                     "type": "string"
                 }
             },
@@ -1701,7 +1701,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/playcustomapp__v1.json b/discovery/googleapis/playcustomapp__v1.json
index f756cc4..ce8bfac 100644
--- a/discovery/googleapis/playcustomapp__v1.json
+++ b/discovery/googleapis/playcustomapp__v1.json
@@ -156,7 +156,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://playcustomapp.googleapis.com/",
     "schemas": {
         "CustomApp": {
diff --git a/discovery/googleapis/playintegrity__v1.json b/discovery/googleapis/playintegrity__v1.json
new file mode 100644
index 0000000..cf72805
--- /dev/null
+++ b/discovery/googleapis/playintegrity__v1.json
@@ -0,0 +1,317 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/playintegrity": {
+                    "description": "Private Service: https://www.googleapis.com/auth/playintegrity"
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://playintegrity.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Play Integrity",
+    "description": "Play Integrity",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://developer.android.com/google/play/integrity",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "playintegrity:v1",
+    "kind": "discovery#restDescription",
+    "name": "playintegrity",
+    "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": {
+        "v1": {
+            "methods": {
+                "decodeIntegrityToken": {
+                    "description": "Decodes the integrity token and returns the token payload.",
+                    "flatPath": "v1/{v1Id}:decodeIntegrityToken",
+                    "httpMethod": "POST",
+                    "id": "playintegrity.decodeIntegrityToken",
+                    "parameterOrder": [
+                        "packageName"
+                    ],
+                    "parameters": {
+                        "packageName": {
+                            "description": " Package name of the app the attached integrity token belongs to.",
+                            "location": "path",
+                            "pattern": "^[^/]+$",
+                            "required": true,
+                            "type": "string"
+                        }
+                    },
+                    "path": "v1/{+packageName}:decodeIntegrityToken",
+                    "request": {
+                        "$ref": "DecodeIntegrityTokenRequest"
+                    },
+                    "response": {
+                        "$ref": "DecodeIntegrityTokenResponse"
+                    },
+                    "scopes": [
+                        "https://www.googleapis.com/auth/playintegrity"
+                    ]
+                }
+            }
+        }
+    },
+    "revision": "20220215",
+    "rootUrl": "https://playintegrity.googleapis.com/",
+    "schemas": {
+        "AccountDetails": {
+            "description": "Contains the account information such as the licensing status for the user in the scope.",
+            "id": "AccountDetails",
+            "properties": {
+                "appLicensingVerdict": {
+                    "description": "Required. Details about the licensing status of the user for the app in the scope.",
+                    "enum": [
+                        "UNKNOWN",
+                        "LICENSED",
+                        "UNLICENSED",
+                        "UNEVALUATED"
+                    ],
+                    "enumDescriptions": [
+                        "Play does not have sufficient information to evaluate licensing details",
+                        "The app and certificate match the versions distributed by Play.",
+                        "The certificate or package name does not match Google Play records.",
+                        "Licensing details were not evaluated since a necessary requirement was missed. For example DeviceIntegrity did not meet the minimum bar or the application was not a known Play version."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AppIntegrity": {
+            "description": "Contains the application integrity information.",
+            "id": "AppIntegrity",
+            "properties": {
+                "appRecognitionVerdict": {
+                    "description": "Required. Details about the app recognition verdict",
+                    "enum": [
+                        "UNKNOWN",
+                        "PLAY_RECOGNIZED",
+                        "UNRECOGNIZED_VERSION",
+                        "UNEVALUATED"
+                    ],
+                    "enumDescriptions": [
+                        "Play does not have sufficient information to evaluate app integrity",
+                        "The app and certificate match the versions distributed by Play.",
+                        "The certificate or package name does not match Google Play records.",
+                        "Application integrity was not evaluated since a necessary requirement was missed. For example DeviceIntegrity did not meet the minimum bar."
+                    ],
+                    "type": "string"
+                },
+                "certificateSha256Digest": {
+                    "description": "Hex fingerprint of the application signing certificate. e.g. “ABCE1F....” Set iff app_recognition_verdict != UNEVALUATED.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "packageName": {
+                    "description": "Package name of the application under attestation. Set iff app_recognition_verdict != UNEVALUATED.",
+                    "type": "string"
+                },
+                "versionCode": {
+                    "description": "Version code of the application. Set iff app_recognition_verdict != UNEVALUATED.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DecodeIntegrityTokenRequest": {
+            "description": "Request to decode the integrity token.",
+            "id": "DecodeIntegrityTokenRequest",
+            "properties": {
+                "integrityToken": {
+                    "description": "Encoded integrity token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "DecodeIntegrityTokenResponse": {
+            "description": "Response containing the decoded integrity payload.",
+            "id": "DecodeIntegrityTokenResponse",
+            "properties": {
+                "tokenPayloadExternal": {
+                    "$ref": "TokenPayloadExternal",
+                    "description": "Plain token payload generated from the decoded integrity token."
+                }
+            },
+            "type": "object"
+        },
+        "DeviceIntegrity": {
+            "description": "Contains the device attestation information.",
+            "id": "DeviceIntegrity",
+            "properties": {
+                "deviceRecognitionVerdict": {
+                    "description": "Details about the integrity of the device the app is running on",
+                    "items": {
+                        "enum": [
+                            "UNKNOWN",
+                            "MEETS_BASIC_INTEGRITY",
+                            "MEETS_DEVICE_INTEGRITY",
+                            "MEETS_STRONG_INTEGRITY",
+                            "MEETS_VIRTUAL_INTEGRITY"
+                        ],
+                        "enumDescriptions": [
+                            "Play does not have sufficient information to evaluate device integrity",
+                            "App is running on a device that passes basic system integrity checks, but may not meet Android platform compatibility requirements and may not be approved to run Google Play services.",
+                            "App is running on GMS Android device with Google Play services.",
+                            "App is running on GMS Android device with Google Play services and has a strong guarantee of system integrity such as a hardware-backed keystore.",
+                            "App is running on an Android emulator with Google Play services which meets core Android compatibility requirements."
+                        ],
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "RequestDetails": {
+            "description": "Contains the integrity request information.",
+            "id": "RequestDetails",
+            "properties": {
+                "nonce": {
+                    "description": "Required. Nonce that was provided in the request (which is base64 web-safe no-wrap).",
+                    "type": "string"
+                },
+                "requestPackageName": {
+                    "description": "Required. Application package name this attestation was requested for. Note: This field makes no guarantees or promises on the caller integrity. For details on application integrity, check application_integrity.",
+                    "type": "string"
+                },
+                "timestampMillis": {
+                    "description": "Required. Timestamp, in milliseconds, of the integrity application request.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestingDetails": {
+            "description": "Contains additional information generated for testing responses.",
+            "id": "TestingDetails",
+            "properties": {
+                "isTestingResponse": {
+                    "description": "Required. Indicates that the information contained in this payload is a testing response that is statically overridden for a tester.",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
+        "TokenPayloadExternal": {
+            "description": "Contains basic app information and integrity signals like device attestation and licensing details.",
+            "id": "TokenPayloadExternal",
+            "properties": {
+                "accountDetails": {
+                    "$ref": "AccountDetails",
+                    "description": "Required. Details about the Play Store account."
+                },
+                "appIntegrity": {
+                    "$ref": "AppIntegrity",
+                    "description": "Required. Details about the application integrity."
+                },
+                "deviceIntegrity": {
+                    "$ref": "DeviceIntegrity",
+                    "description": "Required. Details about the device integrity."
+                },
+                "requestDetails": {
+                    "$ref": "RequestDetails",
+                    "description": "Required. Details about the integrity request."
+                },
+                "testingDetails": {
+                    "$ref": "TestingDetails",
+                    "description": "Indicates that this payload is generated for testing purposes and contains any additional data that is linked with testing status."
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Google Play Integrity API",
+    "version": "v1",
+    "version_module": true
+}
\ No newline at end of file
diff --git a/discovery/googleapis/policyanalyzer__v1.json b/discovery/googleapis/policyanalyzer__v1.json
index deca3e5..a2adc88 100644
--- a/discovery/googleapis/policyanalyzer__v1.json
+++ b/discovery/googleapis/policyanalyzer__v1.json
@@ -161,7 +161,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://policyanalyzer.googleapis.com/",
     "schemas": {
         "GoogleCloudPolicyanalyzerV1Activity": {
diff --git a/discovery/googleapis/policysimulator__v1.json b/discovery/googleapis/policysimulator__v1.json
index 6eb5eb9..d7aa7a2 100644
--- a/discovery/googleapis/policysimulator__v1.json
+++ b/discovery/googleapis/policysimulator__v1.json
@@ -491,7 +491,7 @@
             }
         }
     },
-    "revision": "20211211",
+    "revision": "20220212",
     "rootUrl": "https://policysimulator.googleapis.com/",
     "schemas": {
         "GoogleCloudPolicysimulatorV1AccessStateDiff": {
@@ -1234,7 +1234,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/policytroubleshooter__v1.json b/discovery/googleapis/policytroubleshooter__v1.json
index 27c0a8e..0dc8b1d 100644
--- a/discovery/googleapis/policytroubleshooter__v1.json
+++ b/discovery/googleapis/policytroubleshooter__v1.json
@@ -126,7 +126,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220212",
     "rootUrl": "https://policytroubleshooter.googleapis.com/",
     "schemas": {
         "GoogleCloudPolicytroubleshooterV1AccessTuple": {
diff --git a/discovery/googleapis/privateca__v1.json b/discovery/googleapis/privateca__v1.json
index 346cb8c..8991b5b 100644
--- a/discovery/googleapis/privateca__v1.json
+++ b/discovery/googleapis/privateca__v1.json
@@ -1460,41 +1460,6 @@
                                 }
                             }
                         },
-                        "managedPkis": {
-                            "methods": {
-                                "getIamPolicy": {
-                                    "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
-                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/managedPkis/{managedPkisId}:getIamPolicy",
-                                    "httpMethod": "GET",
-                                    "id": "privateca.projects.locations.managedPkis.getIamPolicy",
-                                    "parameterOrder": [
-                                        "resource"
-                                    ],
-                                    "parameters": {
-                                        "options.requestedPolicyVersion": {
-                                            "description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "resource": {
-                                            "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/managedPkis/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1/{+resource}:getIamPolicy",
-                                    "response": {
-                                        "$ref": "Policy"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                }
-                            }
-                        },
                         "operations": {
                             "methods": {
                                 "cancel": {
@@ -1623,7 +1588,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220202",
     "rootUrl": "https://privateca.googleapis.com/",
     "schemas": {
         "AccessUrls": {
@@ -3210,7 +3175,7 @@
             "id": "SubjectAltNames",
             "properties": {
                 "customSans": {
-                    "description": "Contains additional subject alternative name values.",
+                    "description": "Contains additional subject alternative name values. For each custom_san, the `value` field must contain an ASN.1 encoded UTF8String.",
                     "items": {
                         "$ref": "X509Extension"
                     },
diff --git a/discovery/googleapis/pubsub__v1.json b/discovery/googleapis/pubsub__v1.json
index 0f64891..b39e85d 100644
--- a/discovery/googleapis/pubsub__v1.json
+++ b/discovery/googleapis/pubsub__v1.json
@@ -1423,7 +1423,7 @@
             }
         }
     },
-    "revision": "20220111",
+    "revision": "20220131",
     "rootUrl": "https://pubsub.googleapis.com/",
     "schemas": {
         "AcknowledgeRequest": {
diff --git a/discovery/googleapis/pubsublite__v1.json b/discovery/googleapis/pubsublite__v1.json
index 1372be7..c98ea8e 100644
--- a/discovery/googleapis/pubsublite__v1.json
+++ b/discovery/googleapis/pubsublite__v1.json
@@ -1038,7 +1038,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220204",
     "rootUrl": "https://pubsublite.googleapis.com/",
     "schemas": {
         "CancelOperationRequest": {
diff --git a/discovery/googleapis/realtimebidding__v1.json b/discovery/googleapis/realtimebidding__v1.json
index c3e7ca8..2866e86 100644
--- a/discovery/googleapis/realtimebidding__v1.json
+++ b/discovery/googleapis/realtimebidding__v1.json
@@ -1172,7 +1172,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://realtimebidding.googleapis.com/",
     "schemas": {
         "ActivatePretargetingConfigRequest": {
@@ -1836,7 +1836,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/recaptchaenterprise__v1.json b/discovery/googleapis/recaptchaenterprise__v1.json
index cfd940c..79e402f 100644
--- a/discovery/googleapis/recaptchaenterprise__v1.json
+++ b/discovery/googleapis/recaptchaenterprise__v1.json
@@ -487,7 +487,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220212",
     "rootUrl": "https://recaptchaenterprise.googleapis.com/",
     "schemas": {
         "GoogleCloudRecaptchaenterpriseV1AccountDefenderAssessment": {
@@ -514,20 +514,6 @@
                         "type": "string"
                     },
                     "type": "array"
-                },
-                "recommendedAction": {
-                    "description": "Recommended action after this request.",
-                    "enum": [
-                        "RECOMMENDED_ACTION_UNSPECIFIED",
-                        "REQUEST_2FA",
-                        "SKIP_2FA"
-                    ],
-                    "enumDescriptions": [
-                        "Default unspecified type.",
-                        "The customer should probably request 2FA to their user.",
-                        "This is likely an already seen and safe request. 2FA can be skipped."
-                    ],
-                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/recommender__v1.json b/discovery/googleapis/recommender__v1.json
index 75282f5..8556631 100644
--- a/discovery/googleapis/recommender__v1.json
+++ b/discovery/googleapis/recommender__v1.json
@@ -1176,7 +1176,7 @@
             }
         }
     },
-    "revision": "20220109",
+    "revision": "20220214",
     "rootUrl": "https://recommender.googleapis.com/",
     "schemas": {
         "GoogleCloudRecommenderV1CostProjection": {
@@ -1185,7 +1185,7 @@
             "properties": {
                 "cost": {
                     "$ref": "GoogleTypeMoney",
-                    "description": "An approximate projection on amount saved or amount incurred. Negative cost units indicate cost savings and positive cost units indicate increase. See google.type.Money documentation for positive/negative units."
+                    "description": "An approximate projection on amount saved or amount incurred. Negative cost units indicate cost savings and positive cost units indicate increase. See google.type.Money documentation for positive/negative units. A user's permissions may affect whether the cost is computed using list prices or custom contract prices."
                 },
                 "duration": {
                     "description": "Duration for which this cost applies.",
diff --git a/discovery/googleapis/redis__v1.json b/discovery/googleapis/redis__v1.json
index 127b17c..bb9a35f 100644
--- a/discovery/googleapis/redis__v1.json
+++ b/discovery/googleapis/redis__v1.json
@@ -622,150 +622,15 @@
             }
         }
     },
-    "revision": "20220111",
+    "revision": "20220203",
     "rootUrl": "https://redis.googleapis.com/",
     "schemas": {
-        "Cluster": {
-            "description": "A cluster instance.",
-            "id": "Cluster",
-            "properties": {
-                "clusterUid": {
-                    "description": "Output only. UID of the cluster for use by Pantheon for analytics.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "createTime": {
-                    "description": "Output only. The timestamp associated with the cluster creation request.",
-                    "format": "google-datetime",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "customerManagedKey": {
-                    "description": "Input only. The KMS key reference that the customer provides when trying to create the instance.",
-                    "type": "string"
-                },
-                "defaultReplicaCount": {
-                    "description": "Optional. The number of replica nodes per shard. Valid range is [1-2] and defaults to 1.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "displayName": {
-                    "description": "Optional. An arbitrary and optional user-provided name for the cluster.",
-                    "type": "string"
-                },
-                "endpoints": {
-                    "description": "Output only. Hostname or IP address and port pairs used to connect to the cluster.",
-                    "items": {
-                        "$ref": "Endpoint"
-                    },
-                    "readOnly": true,
-                    "type": "array"
-                },
-                "name": {
-                    "description": "Required. Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`",
-                    "type": "string"
-                },
-                "privateServiceConnect": {
-                    "$ref": "PrivateServiceConnect",
-                    "description": "Optional. Populate to use private service connect network option."
-                },
-                "redisConfigs": {
-                    "additionalProperties": {
-                        "type": "string"
-                    },
-                    "description": "Optional. Redis configuration parameters, according to http://redis.io/topics/config. Currently, the only supported parameters are: Redis version 6.x and newer: * lfu-decay-time * lfu-log-factor * maxmemory-policy",
-                    "type": "object"
-                },
-                "slots": {
-                    "description": "Output only. The slots making up the cluster. Read-only. In future versions this will be writable to allow for heterogeneous clusters.",
-                    "items": {
-                        "$ref": "ClusterSlots"
-                    },
-                    "readOnly": true,
-                    "type": "array"
-                },
-                "state": {
-                    "description": "Output only. The current state of this cluster. Can be CREATING, READY, UPDATING, DELETING and SUSPENDED",
-                    "enum": [
-                        "STATE_UNSPECIFIED",
-                        "CREATING",
-                        "ACTIVE",
-                        "UPDATING",
-                        "DELETING"
-                    ],
-                    "enumDescriptions": [
-                        "Not set.",
-                        "Redis cluster is being created.",
-                        "Redis cluster has been created and is fully usable.",
-                        "Redis cluster configuration is being updated.",
-                        "Redis cluster is being deleted."
-                    ],
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "totalMemorySizeGb": {
-                    "description": "Optional. Redis memory size in GiB for the entire cluster. Defaults to 32.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "ClusterSlots": {
-            "description": "A series of slots belonging to a cluster.",
-            "id": "ClusterSlots",
-            "properties": {
-                "endSlotsExclusive": {
-                    "description": "Output only. The end of the slots that make up this series.",
-                    "format": "int32",
-                    "readOnly": true,
-                    "type": "integer"
-                },
-                "memorySizeGb": {
-                    "description": "Output only. The total size of keyspace this series has.",
-                    "format": "int32",
-                    "readOnly": true,
-                    "type": "integer"
-                },
-                "replicaCount": {
-                    "description": "Output only. The number of replicas this series has.",
-                    "format": "int32",
-                    "readOnly": true,
-                    "type": "integer"
-                },
-                "startSlotsInclusive": {
-                    "description": "Output only. The start of the slots that make up this series.",
-                    "format": "int32",
-                    "readOnly": true,
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
         "Empty": {
             "description": "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 `{}`.",
             "id": "Empty",
             "properties": {},
             "type": "object"
         },
-        "Endpoint": {
-            "description": "An endpoint exposed by a cluster. In the future we will add an enum to identify whether this endpoint is read/write or read-only when the feature is ready.",
-            "id": "Endpoint",
-            "properties": {
-                "host": {
-                    "description": "Output only. Hostname or IP address of the exposed Redis endpoint used by clients to connect to the service.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "port": {
-                    "description": "Output only. The port number of the exposed Redis endpoint.",
-                    "format": "int32",
-                    "readOnly": true,
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
         "ExportInstanceRequest": {
             "description": "Request for Export.",
             "id": "ExportInstanceRequest",
@@ -901,7 +766,7 @@
             "type": "object"
         },
         "Instance": {
-            "description": "A Google Cloud Redis instance.",
+            "description": "A Memorystore for Redis instance.",
             "id": "Instance",
             "properties": {
                 "alternativeLocationId": {
@@ -1400,22 +1265,6 @@
             },
             "type": "object"
         },
-        "PrivateServiceConnect": {
-            "description": "Contains private service connect specific options.",
-            "id": "PrivateServiceConnect",
-            "properties": {
-                "pscService": {
-                    "description": "Output only. The address of the Private Service Connect (PSC) service that the customer can use to connect this instance to their local network.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "pscServiceRoute": {
-                    "description": "Optional. The service route to connect using Private Service Connect. On Instance creation, this will automatically connect this route to this instance.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
         "RescheduleMaintenanceRequest": {
             "description": "Request for RescheduleMaintenance.",
             "id": "RescheduleMaintenanceRequest",
diff --git a/discovery/googleapis/reseller__v1.json b/discovery/googleapis/reseller__v1.json
index 8a48ef9..2de5721 100644
--- a/discovery/googleapis/reseller__v1.json
+++ b/discovery/googleapis/reseller__v1.json
@@ -629,7 +629,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220208",
     "rootUrl": "https://reseller.googleapis.com/",
     "schemas": {
         "Address": {
diff --git a/discovery/googleapis/resourcesettings__v1.json b/discovery/googleapis/resourcesettings__v1.json
index 3d22f78..a0cea80 100644
--- a/discovery/googleapis/resourcesettings__v1.json
+++ b/discovery/googleapis/resourcesettings__v1.json
@@ -497,7 +497,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220215",
     "rootUrl": "https://resourcesettings.googleapis.com/",
     "schemas": {
         "GoogleCloudResourcesettingsV1ListSettingsResponse": {
diff --git a/discovery/googleapis/retail__v2.json b/discovery/googleapis/retail__v2.json
index 68b3454..1c88181 100644
--- a/discovery/googleapis/retail__v2.json
+++ b/discovery/googleapis/retail__v2.json
@@ -167,7 +167,7 @@
                                     ]
                                 },
                                 "getDefaultBranch": {
-                                    "description": "Get which branch is currently default branch set by CatalogService.SetDefaultBranch method under a specified parent catalog. This feature is only available for users who have Retail Search enabled. Please submit a form [here](https://cloud.google.com/contact) to contact cloud sales if you are interested in using Retail Search.",
+                                    "description": "Get which branch is currently default branch set by CatalogService.SetDefaultBranch method under a specified parent catalog.",
                                     "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/catalogs/{catalogsId}:getDefaultBranch",
                                     "httpMethod": "GET",
                                     "id": "retail.projects.locations.catalogs.getDefaultBranch",
@@ -262,7 +262,7 @@
                                     ]
                                 },
                                 "setDefaultBranch": {
-                                    "description": "Set a specified branch id as default branch. API methods such as SearchService.Search, ProductService.GetProduct, ProductService.ListProducts will treat requests using \"default_branch\" to the actual branch id set as default. For example, if `projects/*/locations/*/catalogs/*/branches/1` is set as default, setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/default_branch` is equivalent to setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/1`. Using multiple branches can be useful when developers would like to have a staging branch to test and verify for future usage. When it becomes ready, developers switch on the staging branch using this API while keeping using `projects/*/locations/*/catalogs/*/branches/default_branch` as SearchRequest.branch to route the traffic to this staging branch. CAUTION: If you have live predict/search traffic, switching the default branch could potentially cause outages if the ID space of the new branch is very different from the old one. More specifically: * PredictionService will only return product IDs from branch {newBranch}. * SearchService will only return product IDs from branch {newBranch} (if branch is not explicitly set). * UserEventService will only join events with products from branch {newBranch}. This feature is only available for users who have Retail Search enabled. Please submit a form [here](https://cloud.google.com/contact) to contact cloud sales if you are interested in using Retail Search.",
+                                    "description": "Set a specified branch id as default branch. API methods such as SearchService.Search, ProductService.GetProduct, ProductService.ListProducts will treat requests using \"default_branch\" to the actual branch id set as default. For example, if `projects/*/locations/*/catalogs/*/branches/1` is set as default, setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/default_branch` is equivalent to setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/1`. Using multiple branches can be useful when developers would like to have a staging branch to test and verify for future usage. When it becomes ready, developers switch on the staging branch using this API while keeping using `projects/*/locations/*/catalogs/*/branches/default_branch` as SearchRequest.branch to route the traffic to this staging branch. CAUTION: If you have live predict/search traffic, switching the default branch could potentially cause outages if the ID space of the new branch is very different from the old one. More specifically: * PredictionService will only return product IDs from branch {newBranch}. * SearchService will only return product IDs from branch {newBranch} (if branch is not explicitly set). * UserEventService will only join events with products from branch {newBranch}.",
                                     "flatPath": "v2/projects/{projectsId}/locations/{locationsId}/catalogs/{catalogsId}:setDefaultBranch",
                                     "httpMethod": "POST",
                                     "id": "retail.projects.locations.catalogs.setDefaultBranch",
@@ -1001,11 +1001,81 @@
                             }
                         }
                     }
+                },
+                "operations": {
+                    "methods": {
+                        "get": {
+                            "description": "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.",
+                            "flatPath": "v2/projects/{projectsId}/operations/{operationsId}",
+                            "httpMethod": "GET",
+                            "id": "retail.projects.operations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "The name of the operation resource.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/operations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}",
+                            "response": {
+                                "$ref": "GoogleLongrunningOperation"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding allows API services to override the binding to use different resource name schemes, such as `users/*/operations`. To override the binding, API services can add a binding such as `\"/v1/{name=users/*}/operations\"` to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
+                            "flatPath": "v2/projects/{projectsId}/operations",
+                            "httpMethod": "GET",
+                            "id": "retail.projects.operations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "The standard list filter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The name of the operation's parent resource.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The standard list page size.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "The standard list page token.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2/{+name}/operations",
+                            "response": {
+                                "$ref": "GoogleLongrunningListOperationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
                 }
             }
         }
     },
-    "revision": "20220120",
+    "revision": "20220210",
     "rootUrl": "https://retail.googleapis.com/",
     "schemas": {
         "GoogleApiHttpBody": {
@@ -1223,7 +1293,7 @@
             "id": "GoogleCloudRetailV2BigQuerySource",
             "properties": {
                 "dataSchema": {
-                    "description": "The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.",
+                    "description": "The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: The schema is available here: https://support.google.com/analytics/answer/3437719. * `user_event_ga4`: This feature is in private preview. Please contact the support team for importing Google Analytics 4 events. The schema is available here: https://support.google.com/analytics/answer/7029846.",
                     "type": "string"
                 },
                 "datasetId": {
@@ -1379,7 +1449,7 @@
             "id": "GoogleCloudRetailV2CustomAttribute",
             "properties": {
                 "indexable": {
-                    "description": "If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.",
+                    "description": "This field will only be used when AttributesConfig.attribute_config_level of the Catalog is 'PRODUCT_LEVEL_ATTRIBUTE_CONFIG', if true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.",
                     "type": "boolean"
                 },
                 "numbers": {
@@ -1391,7 +1461,7 @@
                     "type": "array"
                 },
                 "searchable": {
-                    "description": "If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.",
+                    "description": "This field will only be used when AttributesConfig.attribute_config_level of the Catalog is 'PRODUCT_LEVEL_ATTRIBUTE_CONFIG', if true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.",
                     "type": "boolean"
                 },
                 "text": {
@@ -1427,7 +1497,7 @@
             "id": "GoogleCloudRetailV2GcsSource",
             "properties": {
                 "dataSchema": {
-                    "description": "The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719. Supported values for control imports: * 'control' (default): One JSON Control per line.",
+                    "description": "The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719. Supported values for control imports: * 'control' (default): One JSON Control per line. Supported values for catalog attribute imports: * 'catalog_attribute' (default): One CSV CatalogAttribute per line.",
                     "type": "string"
                 },
                 "inputUris": {
@@ -1582,7 +1652,7 @@
                     "enumDescriptions": [
                         "Defaults to INCREMENTAL.",
                         "Inserts new products or updates existing products.",
-                        "Calculates diff and replaces the entire product dataset. Existing products may be deleted if they are not present in the source location. Can only be while using BigQuerySource. Add the IAM permission \"BigQuery Data Viewer\" for cloud-retail-customer-data-access@system.gserviceaccount.com before using this feature otherwise an error is thrown. This feature is only available for users who have Retail Search enabled. Please submit a form [here](https://cloud.google.com/contact) to contact cloud sales if you are interested in using Retail Search."
+                        "Calculates diff and replaces the entire product dataset. Existing products may be deleted if they are not present in the source location. Can only be set while using BigQuerySource. And the BigQuery dataset must be created in the data location \"us (multiple regions in United States)\", otherwise a PERMISSION_DENIED error is thrown. Add the IAM permission \"BigQuery Data Viewer\" for cloud-retail-customer-data-access@system.gserviceaccount.com before using this feature otherwise an error is thrown. This feature is only available for users who have Retail Search enabled. Please submit a form [here](https://cloud.google.com/contact) to contact cloud sales if you are interested in using Retail Search."
                     ],
                     "type": "string"
                 },
@@ -1919,7 +1989,7 @@
                     "type": "array"
                 },
                 "collectionMemberIds": {
-                    "description": "The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.",
+                    "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise and INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.",
                     "items": {
                         "type": "string"
                     },
@@ -1972,7 +2042,7 @@
                     "type": "string"
                 },
                 "materials": {
-                    "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).",
+                    "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).",
                     "items": {
                         "type": "string"
                     },
@@ -1998,7 +2068,7 @@
                     "type": "string"
                 },
                 "promotions": {
-                    "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product.",
+                    "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set.",
                     "items": {
                         "$ref": "GoogleCloudRetailV2Promotion"
                     },
@@ -2141,7 +2211,7 @@
             "id": "GoogleCloudRetailV2Promotion",
             "properties": {
                 "promotionId": {
-                    "description": "ID of the promotion. For example, \"free gift\". The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: `a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).",
+                    "description": "ID of the promotion. For example, \"free gift\". The value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: `a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).",
                     "type": "string"
                 }
             },
@@ -2369,6 +2439,10 @@
                     "description": "A page token SearchResponse.next_page_token, received from a previous SearchService.Search call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to SearchService.Search must match the call that provided the page token. Otherwise, an INVALID_ARGUMENT error is returned.",
                     "type": "string"
                 },
+                "personalizationSpec": {
+                    "$ref": "GoogleCloudRetailV2SearchRequestPersonalizationSpec",
+                    "description": "The specification for personalization."
+                },
                 "query": {
                     "description": "Raw search query.",
                     "type": "string"
@@ -2419,6 +2493,10 @@
                         "$ref": "GoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec"
                     },
                     "type": "array"
+                },
+                "skipBoostSpecValidation": {
+                    "description": "Whether to skip boostspec validation. If this field is set to true, invalid BoostSpec.condition_boost_specs will be ignored and valid BoostSpec.condition_boost_specs will still be applied.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -2534,6 +2612,27 @@
             },
             "type": "object"
         },
+        "GoogleCloudRetailV2SearchRequestPersonalizationSpec": {
+            "description": "The specification for personalization.",
+            "id": "GoogleCloudRetailV2SearchRequestPersonalizationSpec",
+            "properties": {
+                "mode": {
+                    "description": "Defaults to Mode.AUTO.",
+                    "enum": [
+                        "MODE_UNSPECIFIED",
+                        "AUTO",
+                        "DISABLED"
+                    ],
+                    "enumDescriptions": [
+                        "Default value. Defaults to Mode.AUTO.",
+                        "Let CRS decide whether to use personalization.",
+                        "Disable personalization."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudRetailV2SearchRequestQueryExpansionSpec": {
             "description": "Specification to determine under which conditions query expansion should occur.",
             "id": "GoogleCloudRetailV2SearchRequestQueryExpansionSpec",
@@ -2585,6 +2684,13 @@
                     },
                     "type": "array"
                 },
+                "invalidConditionBoostSpecs": {
+                    "description": "The invalid SearchRequest.BoostSpec.condition_boost_specs that are not applied during serving.",
+                    "items": {
+                        "$ref": "GoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec"
+                    },
+                    "type": "array"
+                },
                 "nextPageToken": {
                     "description": "A token that can be sent as SearchRequest.page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.",
                     "type": "string"
@@ -3548,7 +3654,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis/run__v1.json b/discovery/googleapis/run__v1.json
index 4970605..4c63293 100644
--- a/discovery/googleapis/run__v1.json
+++ b/discovery/googleapis/run__v1.json
@@ -12,7 +12,7 @@
     "baseUrl": "https://run.googleapis.com/",
     "batchPath": "batch",
     "canonicalName": "Cloud Run",
-    "description": "Deploy and manage user provided container images that scale automatically based on incoming requests. The Cloud Run Admin API follows the Knative Serving API specification.",
+    "description": "Deploy and manage user provided container images that scale automatically based on incoming requests. The Cloud Run Admin API v1 follows the Knative Serving API specification, while v2 is aligned with Google Cloud AIP-based API standards, as described in https://google.aip.dev/.",
     "discoveryVersion": "v1",
     "documentationLink": "https://cloud.google.com/run/",
     "icons": {
@@ -403,6 +403,350 @@
                         }
                     }
                 },
+                "executions": {
+                    "methods": {
+                        "delete": {
+                            "description": "Delete an execution.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/executions/{executionsId}",
+                            "httpMethod": "DELETE",
+                            "id": "run.namespaces.executions.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "apiVersion": {
+                                    "description": "Optional. Cloud Run currently ignores this parameter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "kind": {
+                                    "description": "Optional. Cloud Run currently ignores this parameter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "Required. The name of the execution to delete. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+/executions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "propagationPolicy": {
+                                    "description": "Optional. Specifies the propagation policy of delete. Cloud Run currently ignores this setting, and deletes in the background. Please see kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ for more information.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+name}",
+                            "response": {
+                                "$ref": "Status"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Get information about an execution.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/executions/{executionsId}",
+                            "httpMethod": "GET",
+                            "id": "run.namespaces.executions.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the execution to retrieve. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+/executions/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+name}",
+                            "response": {
+                                "$ref": "Execution"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "List executions.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/executions",
+                            "httpMethod": "GET",
+                            "id": "run.namespaces.executions.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "continue": {
+                                    "description": "Optional. Optional encoded string to continue paging.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "fieldSelector": {
+                                    "description": "Optional. Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. 'metadata.name%3Dlorem'. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "includeUninitialized": {
+                                    "description": "Optional. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "labelSelector": {
+                                    "description": "Optional. Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "limit": {
+                                    "description": "Optional. The maximum number of records that should be returned.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The namespace from which the executions should be listed. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "resourceVersion": {
+                                    "description": "Optional. The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "watch": {
+                                    "description": "Optional. Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+parent}/executions",
+                            "response": {
+                                "$ref": "ListExecutionsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
+                },
+                "jobs": {
+                    "methods": {
+                        "create": {
+                            "description": "Create a job.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/jobs",
+                            "httpMethod": "POST",
+                            "id": "run.namespaces.jobs.create",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "parent": {
+                                    "description": "Required. The namespace in which the job should be created. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+parent}/jobs",
+                            "request": {
+                                "$ref": "Job"
+                            },
+                            "response": {
+                                "$ref": "Job"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "delete": {
+                            "description": "Delete a job.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/jobs/{jobsId}",
+                            "httpMethod": "DELETE",
+                            "id": "run.namespaces.jobs.delete",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "apiVersion": {
+                                    "description": "Optional. Cloud Run currently ignores this parameter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "kind": {
+                                    "description": "Optional. Cloud Run currently ignores this parameter.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "Required. The name of the job to delete. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+/jobs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "propagationPolicy": {
+                                    "description": "Optional. Specifies the propagation policy of delete. Cloud Run currently ignores this setting, and deletes in the background. Please see kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ for more information.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+name}",
+                            "response": {
+                                "$ref": "Status"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "get": {
+                            "description": "Get information about a job.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/jobs/{jobsId}",
+                            "httpMethod": "GET",
+                            "id": "run.namespaces.jobs.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the job to retrieve. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+/jobs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+name}",
+                            "response": {
+                                "$ref": "Job"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "List jobs.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/jobs",
+                            "httpMethod": "GET",
+                            "id": "run.namespaces.jobs.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "continue": {
+                                    "description": "Optional. Optional encoded string to continue paging.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "fieldSelector": {
+                                    "description": "Optional. Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. 'metadata.name%3Dlorem'. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "includeUninitialized": {
+                                    "description": "Optional. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "labelSelector": {
+                                    "description": "Optional. Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "limit": {
+                                    "description": "Optional. The maximum number of records that should be returned.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The namespace from which the jobs should be listed. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "resourceVersion": {
+                                    "description": "Optional. The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "watch": {
+                                    "description": "Optional. Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+parent}/jobs",
+                            "response": {
+                                "$ref": "ListJobsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "replaceJob": {
+                            "description": "Replace a job. Only the spec and metadata labels and annotations are modifiable. After the Replace request, Cloud Run will work to make the 'status' match the requested 'spec'. May provide metadata.resourceVersion to enforce update from last read for optimistic concurrency control.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/jobs/{jobsId}",
+                            "httpMethod": "PUT",
+                            "id": "run.namespaces.jobs.replaceJob",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the service being replaced. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+/jobs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+name}",
+                            "request": {
+                                "$ref": "Job"
+                            },
+                            "response": {
+                                "$ref": "Job"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "run": {
+                            "description": "Trigger creation of a new execution of this job.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/jobs/{jobsId}:run",
+                            "httpMethod": "POST",
+                            "id": "run.namespaces.jobs.run",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the job to run. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+/jobs/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+name}:run",
+                            "request": {
+                                "$ref": "RunJobRequest"
+                            },
+                            "response": {
+                                "$ref": "Execution"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
+                },
                 "revisions": {
                     "methods": {
                         "delete": {
@@ -828,6 +1172,96 @@
                             ]
                         }
                     }
+                },
+                "tasks": {
+                    "methods": {
+                        "get": {
+                            "description": "Get information about a task.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/tasks/{tasksId}",
+                            "httpMethod": "GET",
+                            "id": "run.namespaces.tasks.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the task to retrieve. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+/tasks/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+name}",
+                            "response": {
+                                "$ref": "Task"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "List tasks.",
+                            "flatPath": "apis/run.googleapis.com/v1/namespaces/{namespacesId}/tasks",
+                            "httpMethod": "GET",
+                            "id": "run.namespaces.tasks.list",
+                            "parameterOrder": [
+                                "parent"
+                            ],
+                            "parameters": {
+                                "continue": {
+                                    "description": "Optional. Optional encoded string to continue paging.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "fieldSelector": {
+                                    "description": "Optional. Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. 'metadata.name%3Dlorem'. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "includeUninitialized": {
+                                    "description": "Optional. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                },
+                                "labelSelector": {
+                                    "description": "Optional. Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "limit": {
+                                    "description": "Optional. The maximum number of records that should be returned.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "parent": {
+                                    "description": "Required. The namespace from which the tasks should be listed. Replace {namespace_id} with the project ID or number.",
+                                    "location": "path",
+                                    "pattern": "^namespaces/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "resourceVersion": {
+                                    "description": "Optional. The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "watch": {
+                                    "description": "Optional. Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.",
+                                    "location": "query",
+                                    "type": "boolean"
+                                }
+                            },
+                            "path": "apis/run.googleapis.com/v1/{+parent}/tasks",
+                            "response": {
+                                "$ref": "ListTasksResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    }
                 }
             }
         },
@@ -1216,6 +1650,97 @@
                                 }
                             }
                         },
+                        "jobs": {
+                            "methods": {
+                                "getIamPolicy": {
+                                    "description": "Get the IAM Access Control policy currently in effect for the given job. This result does not include any inherited policies.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/jobs/{jobsId}:getIamPolicy",
+                                    "httpMethod": "GET",
+                                    "id": "run.projects.locations.jobs.getIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "options.requestedPolicyVersion": {
+                                            "description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/jobs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:getIamPolicy",
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "setIamPolicy": {
+                                    "description": "Sets the IAM Access control policy for the specified job. Overwrites any existing policy.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/jobs/{jobsId}:setIamPolicy",
+                                    "httpMethod": "POST",
+                                    "id": "run.projects.locations.jobs.setIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/jobs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:setIamPolicy",
+                                    "request": {
+                                        "$ref": "SetIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "testIamPermissions": {
+                                    "description": "Returns permissions that a caller has on the specified job. There are no permissions required for making this API call.",
+                                    "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/jobs/{jobsId}:testIamPermissions",
+                                    "httpMethod": "POST",
+                                    "id": "run.projects.locations.jobs.testIamPermissions",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/jobs/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1/{+resource}:testIamPermissions",
+                                    "request": {
+                                        "$ref": "TestIamPermissionsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "TestIamPermissionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
                         "revisions": {
                             "methods": {
                                 "delete": {
@@ -1734,7 +2259,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220204",
     "rootUrl": "https://run.googleapis.com/",
     "schemas": {
         "Addressable": {
@@ -2078,6 +2603,21 @@
             },
             "type": "object"
         },
+        "ContainerStatus": {
+            "description": "ContainerStatus holds the information of container name and image digest value.",
+            "id": "ContainerStatus",
+            "properties": {
+                "imageDigest": {
+                    "description": "ImageDigest holds the resolved digest for the image specified, regardless of whether a tag or digest was originally specified in the Container object.",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of the container, if specified.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "DomainMapping": {
             "description": "Resource to hold the state and status of a user's domain mapping. NOTE: This resource is currently in Beta.",
             "id": "DomainMapping",
@@ -2235,6 +2775,134 @@
             },
             "type": "object"
         },
+        "Execution": {
+            "description": "Execution represents the configuration of a single execution. A execution an immutable resource that references a container image which is run to completion.",
+            "id": "Execution",
+            "properties": {
+                "apiVersion": {
+                    "description": "Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional",
+                    "type": "string"
+                },
+                "kind": {
+                    "description": "Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "ObjectMeta",
+                    "description": "Optional. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional"
+                },
+                "spec": {
+                    "$ref": "ExecutionSpec",
+                    "description": "Optional. Specification of the desired behavior of an execution. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional"
+                },
+                "status": {
+                    "$ref": "ExecutionStatus",
+                    "description": "Output only. Current status of an execution. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional",
+                    "readOnly": true
+                }
+            },
+            "type": "object"
+        },
+        "ExecutionReference": {
+            "description": "Reference to an Execution. Use /Executions.GetExecution with the given name to get full execution including the latest status.",
+            "id": "ExecutionReference",
+            "properties": {
+                "creationTimestamp": {
+                    "description": "Optional. Creation timestamp of the execution.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Optional. Name of the execution.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ExecutionSpec": {
+            "description": "ExecutionSpec describes how the execution will look.",
+            "id": "ExecutionSpec",
+            "properties": {
+                "parallelism": {
+                    "description": "Optional. Specifies the maximum desired number of tasks the execution should run at any given time. Must be <= task_count. The actual number of tasks running in steady state will be less than this number when ((.spec.task_count - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "taskCount": {
+                    "description": "Optional. Specifies the desired number of tasks the execution should run. Setting to 1 means that parallelism is limited to 1 and the success of that task signals the success of the execution. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "template": {
+                    "$ref": "TaskTemplateSpec",
+                    "description": "Optional. Describes the task(s) that will be created when executing an execution."
+                }
+            },
+            "type": "object"
+        },
+        "ExecutionStatus": {
+            "description": "ExecutionStatus represents the current state of a Execution.",
+            "id": "ExecutionStatus",
+            "properties": {
+                "completionTime": {
+                    "description": "Optional. Represents time when the execution was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "conditions": {
+                    "description": "Optional. The latest available observations of an execution's current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional",
+                    "items": {
+                        "$ref": "GoogleCloudRunV1Condition"
+                    },
+                    "type": "array"
+                },
+                "failedCount": {
+                    "description": "Optional. The number of tasks which reached phase Failed. +optional",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "logUri": {
+                    "description": "Optional. URI where logs for this execution can be found in Cloud Console.",
+                    "type": "string"
+                },
+                "observedGeneration": {
+                    "description": "Optional. The 'generation' of the execution that was last processed by the controller.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "runningCount": {
+                    "description": "Optional. The number of actively running tasks. +optional",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "startTime": {
+                    "description": "Optional. Represents time when the execution started to run. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "succeededCount": {
+                    "description": "Optional. The number of tasks which reached phase Succeeded. +optional",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "ExecutionTemplateSpec": {
+            "description": "ExecutionTemplateSpec describes the metadata and spec an Execution should have when created from a job. Based on: https://github.com/kubernetes/api/blob/e771f807/core/v1/types.go#L3179-L3190",
+            "id": "ExecutionTemplateSpec",
+            "properties": {
+                "metadata": {
+                    "$ref": "ObjectMeta",
+                    "description": "Optional. Optional metadata for this Execution, including labels and annotations. The following annotation keys set properties of the created execution: * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`."
+                },
+                "spec": {
+                    "$ref": "ExecutionSpec",
+                    "description": "Required. ExecutionSpec holds the desired configuration for executions of this job."
+                }
+            },
+            "type": "object"
+        },
         "Expr": {
             "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
             "id": "Expr",
@@ -2290,6 +2958,33 @@
             },
             "type": "object"
         },
+        "GoogleRpcStatus": {
+            "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. 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).",
+            "id": "GoogleRpcStatus",
+            "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 message 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 user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "HTTPGetAction": {
             "description": "Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests.",
             "id": "HTTPGetAction",
@@ -2331,6 +3026,80 @@
             },
             "type": "object"
         },
+        "Job": {
+            "description": "Job represents the configuration of a single job. A job an immutable resource that references a container image which is run to completion.",
+            "id": "Job",
+            "properties": {
+                "apiVersion": {
+                    "description": "Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional",
+                    "type": "string"
+                },
+                "kind": {
+                    "description": "Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "ObjectMeta",
+                    "description": "Optional. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional"
+                },
+                "spec": {
+                    "$ref": "JobSpec",
+                    "description": "Optional. Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional"
+                },
+                "status": {
+                    "$ref": "JobStatus",
+                    "description": "Output only. Current status of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional",
+                    "readOnly": true
+                }
+            },
+            "type": "object"
+        },
+        "JobSpec": {
+            "description": "JobSpec describes how the job will look.",
+            "id": "JobSpec",
+            "properties": {
+                "template": {
+                    "$ref": "ExecutionTemplateSpec",
+                    "description": "Optional. Describes the execution that will be created when running a job."
+                }
+            },
+            "type": "object"
+        },
+        "JobStatus": {
+            "description": "JobStatus represents the current state of a Job.",
+            "id": "JobStatus",
+            "properties": {
+                "conditions": {
+                    "description": "The latest available observations of a job's current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/",
+                    "items": {
+                        "$ref": "GoogleCloudRunV1Condition"
+                    },
+                    "type": "array"
+                },
+                "containerStatuses": {
+                    "description": "Status information for each of the specified containers. The status includes the resolved digest for specified images, which occurs during creation of the job.",
+                    "items": {
+                        "$ref": "ContainerStatus"
+                    },
+                    "type": "array"
+                },
+                "executionCount": {
+                    "description": "Number of executions created for this job.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "latestCreatedExecution": {
+                    "$ref": "ExecutionReference",
+                    "description": "A pointer to the most recently created execution for this job. This is set regardless of the eventual state of the execution."
+                },
+                "observedGeneration": {
+                    "description": "The 'generation' of the job that was last processed by the controller.",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
         "KeyToPath": {
             "description": "Maps a string key to a path within a volume.",
             "id": "KeyToPath",
@@ -2435,6 +3204,72 @@
             },
             "type": "object"
         },
+        "ListExecutionsResponse": {
+            "description": "ListExecutionsResponse is a list of Executions resources.",
+            "id": "ListExecutionsResponse",
+            "properties": {
+                "apiVersion": {
+                    "description": "The API version for this call such as \"run.googleapis.com/v1\".",
+                    "type": "string"
+                },
+                "items": {
+                    "description": "List of Executions.",
+                    "items": {
+                        "$ref": "Execution"
+                    },
+                    "type": "array"
+                },
+                "kind": {
+                    "description": "The kind of this resource, in this case \"ExecutionsList\".",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "ListMeta",
+                    "description": "Metadata associated with this executions list."
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListJobsResponse": {
+            "description": "ListJobsResponse is a list of Jobs resources.",
+            "id": "ListJobsResponse",
+            "properties": {
+                "apiVersion": {
+                    "description": "The API version for this call such as \"run.googleapis.com/v1\".",
+                    "type": "string"
+                },
+                "items": {
+                    "description": "List of Jobs.",
+                    "items": {
+                        "$ref": "Job"
+                    },
+                    "type": "array"
+                },
+                "kind": {
+                    "description": "The kind of this resource, in this case \"JobsList\".",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "ListMeta",
+                    "description": "Metadata associated with this jobs list."
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "ListLocationsResponse": {
             "description": "The response message for Locations.ListLocations.",
             "id": "ListLocationsResponse",
@@ -2571,6 +3406,39 @@
             },
             "type": "object"
         },
+        "ListTasksResponse": {
+            "description": "ListTasksResponse is a list of Tasks resources.",
+            "id": "ListTasksResponse",
+            "properties": {
+                "apiVersion": {
+                    "description": "The API version for this call such as \"run.googleapis.com/v1\".",
+                    "type": "string"
+                },
+                "items": {
+                    "description": "List of Tasks.",
+                    "items": {
+                        "$ref": "Task"
+                    },
+                    "type": "array"
+                },
+                "kind": {
+                    "description": "The kind of this resource, in this case \"TasksList\".",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "ListMeta",
+                    "description": "Metadata associated with this tasks list."
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
         "LocalObjectReference": {
             "description": "Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
             "id": "LocalObjectReference",
@@ -2624,7 +3492,7 @@
                     "additionalProperties": {
                         "type": "string"
                     },
-                    "description": "(Optional) Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
+                    "description": "(Optional) Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/user-guide/annotations",
                     "type": "object"
                 },
                 "clusterName": {
@@ -2666,11 +3534,11 @@
                     "additionalProperties": {
                         "type": "string"
                     },
-                    "description": "(Optional) Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes. More info: http://kubernetes.io/docs/user-guide/labels",
+                    "description": "(Optional) Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes. More info: https://kubernetes.io/docs/user-guide/labels",
                     "type": "object"
                 },
                 "name": {
-                    "description": "Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names +optional",
+                    "description": "Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/user-guide/identifiers#names +optional",
                     "type": "string"
                 },
                 "namespace": {
@@ -2693,7 +3561,7 @@
                     "type": "string"
                 },
                 "uid": {
-                    "description": "(Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+                    "description": "(Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: https://kubernetes.io/docs/user-guide/identifiers#uids",
                     "type": "string"
                 }
             },
@@ -2720,11 +3588,11 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
+                    "description": "Name of the referent. More info: https://kubernetes.io/docs/user-guide/identifiers#names",
                     "type": "string"
                 },
                 "uid": {
-                    "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids",
+                    "description": "UID of the referent. More info: https://kubernetes.io/docs/user-guide/identifiers#uids",
                     "type": "string"
                 }
             },
@@ -3050,6 +3918,12 @@
             },
             "type": "object"
         },
+        "RunJobRequest": {
+            "description": "Request message for creating a new execution of a job.",
+            "id": "RunJobRequest",
+            "properties": {},
+            "type": "object"
+        },
         "SecretEnvSource": {
             "description": "Not supported by Cloud Run SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret's Data field will represent the key-value pairs as environment variables.",
             "id": "SecretEnvSource",
@@ -3314,7 +4188,7 @@
                     "type": "integer"
                 },
                 "uid": {
-                    "description": "UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids +optional",
+                    "description": "UID of the resource. (when there is a single resource which can be described). More info: https://kubernetes.io/docs/user-guide/identifiers#uids +optional",
                     "type": "string"
                 }
             },
@@ -3336,6 +4210,143 @@
             },
             "type": "object"
         },
+        "Task": {
+            "description": "Task represents a single run of a container to completion.",
+            "id": "Task",
+            "properties": {
+                "apiVersion": {
+                    "description": "Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional",
+                    "type": "string"
+                },
+                "kind": {
+                    "description": "Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional",
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "ObjectMeta",
+                    "description": "Optional. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional"
+                },
+                "spec": {
+                    "$ref": "TaskSpec",
+                    "description": "Optional. Specification of the desired behavior of an execution. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional"
+                },
+                "status": {
+                    "$ref": "TaskStatus",
+                    "description": "Output only. Current status of an execution. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional",
+                    "readOnly": true
+                }
+            },
+            "type": "object"
+        },
+        "TaskAttemptResult": {
+            "description": "Result of a task attempt.",
+            "id": "TaskAttemptResult",
+            "properties": {
+                "exitCode": {
+                    "description": "Optional. The exit code of this attempt. This may be unset if the container was unable to exit cleanly with a code due to some other failure. See status field for possible failure details.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "status": {
+                    "$ref": "GoogleRpcStatus",
+                    "description": "Optional. The status of this attempt. If the status code is OK, then the attempt succeeded."
+                }
+            },
+            "type": "object"
+        },
+        "TaskSpec": {
+            "description": "TaskSpec is a description of a task.",
+            "id": "TaskSpec",
+            "properties": {
+                "containers": {
+                    "description": "Optional. List of containers belonging to the task. We disallow a number of fields on this Container. Only a single container may be provided.",
+                    "items": {
+                        "$ref": "Container"
+                    },
+                    "type": "array"
+                },
+                "maxRetries": {
+                    "description": "Optional. Number of retries allowed per task, before marking this job failed.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "serviceAccountName": {
+                    "description": "Optional. Email address of the IAM service account associated with the task of a job execution. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project's default service account. +optional",
+                    "type": "string"
+                },
+                "timeoutSeconds": {
+                    "description": "Optional. Optional duration in seconds the task may be active before the system will actively try to mark it failed and kill associated containers. This applies per attempt of a task, meaning each retry can run for the full timeout. +optional",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "volumes": {
+                    "description": "Optional. List of volumes that can be mounted by containers belonging to the task. More info: https://kubernetes.io/docs/concepts/storage/volumes +optional",
+                    "items": {
+                        "$ref": "Volume"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TaskStatus": {
+            "description": "TaskStatus represents the status of a task of a job execution.",
+            "id": "TaskStatus",
+            "properties": {
+                "completionTime": {
+                    "description": "Optional. Represents time when the task was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "conditions": {
+                    "description": "Optional. The latest available observations of a task's current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional",
+                    "items": {
+                        "$ref": "GoogleCloudRunV1Condition"
+                    },
+                    "type": "array"
+                },
+                "index": {
+                    "description": "Required. Index of the task, unique per execution, and beginning at 0.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "lastAttemptResult": {
+                    "$ref": "TaskAttemptResult",
+                    "description": "Optional. Result of the last attempt of this task. +optional"
+                },
+                "logUri": {
+                    "description": "Optional. URI where logs for this task can be found in Cloud Console.",
+                    "type": "string"
+                },
+                "observedGeneration": {
+                    "description": "Optional. The 'generation' of the execution that was last processed by the controller.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "retried": {
+                    "description": "Optional. The number of times this task was retried. Instances are retried when they fail up to the maxRetries limit. +optional",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "startTime": {
+                    "description": "Optional. Represents time when the task started to run. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TaskTemplateSpec": {
+            "description": "TaskTemplateSpec describes the data a task should have when created from a template.",
+            "id": "TaskTemplateSpec",
+            "properties": {
+                "spec": {
+                    "$ref": "TaskSpec",
+                    "description": "Optional. Specification of the desired behavior of the task. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +optional"
+                }
+            },
+            "type": "object"
+        },
         "TestIamPermissionsRequest": {
             "description": "Request message for `TestIamPermissions` method.",
             "id": "TestIamPermissionsRequest",
@@ -3377,12 +4388,12 @@
                     "type": "boolean"
                 },
                 "percent": {
-                    "description": "Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.",
+                    "description": "Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified.",
                     "format": "int32",
                     "type": "integer"
                 },
                 "revisionName": {
-                    "description": "RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.",
+                    "description": "RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName.",
                     "type": "string"
                 },
                 "tag": {
@@ -3390,7 +4401,7 @@
                     "type": "string"
                 },
                 "url": {
-                    "description": "Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)",
+                    "description": "Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. https://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)",
                     "type": "string"
                 }
             },
diff --git a/discovery/googleapis/run__v2.json b/discovery/googleapis/run__v2.json
index 85a3220..546e9ba 100644
--- a/discovery/googleapis/run__v2.json
+++ b/discovery/googleapis/run__v2.json
@@ -12,7 +12,7 @@
     "baseUrl": "https://run.googleapis.com/",
     "batchPath": "batch",
     "canonicalName": "Cloud Run",
-    "description": "Deploy and manage user provided container images that scale automatically based on incoming requests. The Cloud Run Admin API follows the Knative Serving API specification.",
+    "description": "Deploy and manage user provided container images that scale automatically based on incoming requests. The Cloud Run Admin API v1 follows the Knative Serving API specification, while v2 is aligned with Google Cloud AIP-based API standards, as described in https://google.aip.dev/.",
     "discoveryVersion": "v1",
     "documentationLink": "https://cloud.google.com/run/",
     "icons": {
@@ -169,25 +169,25 @@
                                     ],
                                     "parameters": {
                                         "filter": {
-                                            "description": "The standard list filter.",
+                                            "description": "Optional. A filter for matching the completed or in-progress operations. The supported formats of *filter* are: To query for only completed operations: done:true To query for only ongoing operations: done:false Must be empty to query for all of the latest operations for the given parent project.",
                                             "location": "query",
                                             "type": "string"
                                         },
                                         "name": {
-                                            "description": "The name of the operation's parent resource.",
+                                            "description": "Required. To query for all of the operations for a project.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+$",
                                             "required": true,
                                             "type": "string"
                                         },
                                         "pageSize": {
-                                            "description": "The standard list page size.",
+                                            "description": "The maximum number of records that should be returned. Requested page size cannot exceed 100. If not set or set to less than or equal to 0, the default page size is 100. .",
                                             "format": "int32",
                                             "location": "query",
                                             "type": "integer"
                                         },
                                         "pageToken": {
-                                            "description": "The standard list page token.",
+                                            "description": "Token identifying which result to start with, which is returned by a previous list call.",
                                             "location": "query",
                                             "type": "string"
                                         }
@@ -588,7 +588,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220211",
     "rootUrl": "https://run.googleapis.com/",
     "schemas": {
         "GoogleCloudRunOpV2BinaryAuthorization": {
@@ -650,11 +650,13 @@
                     "description": "A reason for the execution condition.",
                     "enum": [
                         "EXECUTION_REASON_UNDEFINED",
-                        "JOB_STATUS_SERVICE_POLLING_ERROR"
+                        "JOB_STATUS_SERVICE_POLLING_ERROR",
+                        "NON_ZERO_EXIT_CODE"
                     ],
                     "enumDescriptions": [
                         "Default value.",
-                        "Internal system error getting execution status. System will retry."
+                        "Internal system error getting execution status. System will retry.",
+                        "A task reached its retry limit and the last attempt failed due to the user container exiting with a non-zero exit code."
                     ],
                     "type": "string"
                 },
@@ -744,7 +746,8 @@
                         "CUSTOMIZED_PATH_RESPONSE_PENDING",
                         "MIN_INSTANCES_NOT_PROVISIONED",
                         "ACTIVE_REVISION_LIMIT_REACHED",
-                        "NO_DEPLOYMENT"
+                        "NO_DEPLOYMENT",
+                        "HEALTH_CHECK_SKIPPED"
                     ],
                     "enumDescriptions": [
                         "Default value.",
@@ -757,7 +760,8 @@
                         "Health check failed due to user error from customized path of the container. System will retry.",
                         "A revision with min_instance_count > 0 was created and is reserved, but it was not configured to serve traffic, so it's not live. This can also happen momentarily during traffic migration.",
                         "The maximum allowed number of active revisions has been reached.",
-                        "There was no deployment defined. This value is no longer used, but Services created in older versions of the API might contain this value."
+                        "There was no deployment defined. This value is no longer used, but Services created in older versions of the API might contain this value.",
+                        "A revision's container has no port specified since the revision is of a manually scaled service with 0 instance count"
                     ],
                     "type": "string"
                 },
@@ -1046,7 +1050,7 @@
                     "type": "object"
                 },
                 "launchStage": {
-                    "description": "Set the launch stage to a preview stage on write to allow use of preview features in that stage. On read, describes whether the resource uses preview features. Launch Stages are defined at [Google Cloud Platform Launch Stages](http://cloud.google.com/terms/launch-stages).",
+                    "description": "Set the launch stage to a preview stage on write to allow use of preview features in that stage. On read, describes whether the resource uses preview features. Launch Stages are defined at [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages).",
                     "enum": [
                         "LAUNCH_STAGE_UNSPECIFIED",
                         "UNIMPLEMENTED",
@@ -1062,10 +1066,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -1279,7 +1283,7 @@
                     "additionalProperties": {
                         "type": "string"
                     },
-                    "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects. Cloud Run will populate some annotations using 'run.googleapis.com' or 'serving.knative.dev' namespaces. This field follows Kubernetes annotations' namespacing, limits, and rules. More info: http://kubernetes.io/docs/user-guide/annotations",
+                    "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects. Cloud Run will populate some annotations using 'run.googleapis.com' or 'serving.knative.dev' namespaces. This field follows Kubernetes annotations' namespacing, limits, and rules. More info: https://kubernetes.io/docs/user-guide/annotations",
                     "type": "object"
                 },
                 "binaryAuthorization": {
@@ -1320,7 +1324,7 @@
                     "type": "string"
                 },
                 "description": {
-                    "description": "User-provided description of the Service.",
+                    "description": "User-provided description of the Service. This field currently has a 512-character limit.",
                     "type": "string"
                 },
                 "etag": {
@@ -1379,7 +1383,7 @@
                     "type": "string"
                 },
                 "launchStage": {
-                    "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](http://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed.",
+                    "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed.",
                     "enum": [
                         "LAUNCH_STAGE_UNSPECIFIED",
                         "UNIMPLEMENTED",
@@ -1395,10 +1399,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -1465,7 +1469,7 @@
             "id": "GoogleCloudRunOpV2TrafficTarget",
             "properties": {
                 "percent": {
-                    "description": "Specifies percent of the traffic to this Revision. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single TrafficTarget entry.",
+                    "description": "Specifies percent of the traffic to this Revision. This defaults to zero if unspecified.",
                     "format": "int32",
                     "type": "integer"
                 },
diff --git a/discovery/googleapis/runtimeconfig__v1.json b/discovery/googleapis/runtimeconfig__v1.json
index ad02a37..ceec4d2 100644
--- a/discovery/googleapis/runtimeconfig__v1.json
+++ b/discovery/googleapis/runtimeconfig__v1.json
@@ -208,7 +208,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220214",
     "rootUrl": "https://runtimeconfig.googleapis.com/",
     "schemas": {
         "CancelOperationRequest": {
diff --git a/discovery/googleapis/safebrowsing__v4.json b/discovery/googleapis/safebrowsing__v4.json
index 0e310db..9cfb58f 100644
--- a/discovery/googleapis/safebrowsing__v4.json
+++ b/discovery/googleapis/safebrowsing__v4.json
@@ -259,7 +259,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220215",
     "rootUrl": "https://safebrowsing.googleapis.com/",
     "schemas": {
         "GoogleProtobufEmpty": {
diff --git a/discovery/googleapis/script__v1.json b/discovery/googleapis/script__v1.json
index 528aa61..be1dc0a 100644
--- a/discovery/googleapis/script__v1.json
+++ b/discovery/googleapis/script__v1.json
@@ -885,7 +885,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220216",
     "rootUrl": "https://script.googleapis.com/",
     "schemas": {
         "Content": {
diff --git a/discovery/googleapis/searchconsole__v1.json b/discovery/googleapis/searchconsole__v1.json
index 685529b..0867c40 100644
--- a/discovery/googleapis/searchconsole__v1.json
+++ b/discovery/googleapis/searchconsole__v1.json
@@ -347,6 +347,33 @@
                 }
             }
         },
+        "urlInspection": {
+            "resources": {
+                "index": {
+                    "methods": {
+                        "inspect": {
+                            "description": "Index inspection.",
+                            "flatPath": "v1/urlInspection/index:inspect",
+                            "httpMethod": "POST",
+                            "id": "searchconsole.urlInspection.index.inspect",
+                            "parameterOrder": [],
+                            "parameters": {},
+                            "path": "v1/urlInspection/index:inspect",
+                            "request": {
+                                "$ref": "InspectUrlIndexRequest"
+                            },
+                            "response": {
+                                "$ref": "InspectUrlIndexResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/webmasters",
+                                "https://www.googleapis.com/auth/webmasters.readonly"
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "urlTestingTools": {
             "resources": {
                 "mobileFriendlyTest": {
@@ -371,9 +398,155 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://searchconsole.googleapis.com/",
     "schemas": {
+        "AmpInspectionResult": {
+            "description": "AMP inspection result of the live page or the current information from Google's index, depending on whether you requested a live inspection or not.",
+            "id": "AmpInspectionResult",
+            "properties": {
+                "ampIndexStatusVerdict": {
+                    "description": "Index status of the AMP URL.",
+                    "enum": [
+                        "VERDICT_UNSPECIFIED",
+                        "PASS",
+                        "PARTIAL",
+                        "FAIL",
+                        "NEUTRAL"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown verdict.",
+                        "Equivalent to \"Valid\" for the page or item in Search Console.",
+                        "Equivalent to \"Valid with warnings\" for the page or item in Search Console.",
+                        "Equivalent to \"Error\" or \"Invalid\" for the page or item in Search Console.",
+                        "Equivalent to \"Excluded\" for the page or item in Search Console."
+                    ],
+                    "type": "string"
+                },
+                "ampUrl": {
+                    "description": "URL of the AMP that was inspected. If the submitted URL is a desktop page that refers to an AMP version, the AMP version will be inspected.",
+                    "type": "string"
+                },
+                "indexingState": {
+                    "description": "Whether or not the page blocks indexing through a noindex rule.",
+                    "enum": [
+                        "AMP_INDEXING_STATE_UNSPECIFIED",
+                        "AMP_INDEXING_ALLOWED",
+                        "BLOCKED_DUE_TO_NOINDEX",
+                        "BLOCKED_DUE_TO_EXPIRED_UNAVAILABLE_AFTER"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown indexing status.",
+                        "Indexing allowed.",
+                        "Indexing not allowed, 'noindex' detected.",
+                        "Indexing not allowed, 'unavailable_after' date expired."
+                    ],
+                    "type": "string"
+                },
+                "issues": {
+                    "description": "A list of zero or more AMP issues found for the inspected URL.",
+                    "items": {
+                        "$ref": "AmpIssue"
+                    },
+                    "type": "array"
+                },
+                "lastCrawlTime": {
+                    "description": "Last time this AMP version was crawled by Google. Absent if the URL was never crawled successfully.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "pageFetchState": {
+                    "description": "Whether or not Google could fetch the AMP.",
+                    "enum": [
+                        "PAGE_FETCH_STATE_UNSPECIFIED",
+                        "SUCCESSFUL",
+                        "SOFT_404",
+                        "BLOCKED_ROBOTS_TXT",
+                        "NOT_FOUND",
+                        "ACCESS_DENIED",
+                        "SERVER_ERROR",
+                        "REDIRECT_ERROR",
+                        "ACCESS_FORBIDDEN",
+                        "BLOCKED_4XX",
+                        "INTERNAL_CRAWL_ERROR",
+                        "INVALID_URL"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown fetch state.",
+                        "Successful fetch.",
+                        "Soft 404.",
+                        "Blocked by robots.txt.",
+                        "Not found (404).",
+                        "Blocked due to unauthorized request (401).",
+                        "Server error (5xx).",
+                        "Redirection error.",
+                        "Blocked due to access forbidden (403).",
+                        "Blocked due to other 4xx issue (not 403, 404).",
+                        "Internal error.",
+                        "Invalid URL."
+                    ],
+                    "type": "string"
+                },
+                "robotsTxtState": {
+                    "description": "Whether or not the page is blocked to Google by a robots.txt rule.",
+                    "enum": [
+                        "ROBOTS_TXT_STATE_UNSPECIFIED",
+                        "ALLOWED",
+                        "DISALLOWED"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown robots.txt state, typically because the page wasn't fetched or found, or because robots.txt itself couldn't be reached.",
+                        "Crawl allowed by robots.txt.",
+                        "Crawl blocked by robots.txt."
+                    ],
+                    "type": "string"
+                },
+                "verdict": {
+                    "description": "The status of the most severe error on the page. If a page has both warnings and errors, the page status is error. Error status means the page cannot be shown in Search results.",
+                    "enum": [
+                        "VERDICT_UNSPECIFIED",
+                        "PASS",
+                        "PARTIAL",
+                        "FAIL",
+                        "NEUTRAL"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown verdict.",
+                        "Equivalent to \"Valid\" for the page or item in Search Console.",
+                        "Equivalent to \"Valid with warnings\" for the page or item in Search Console.",
+                        "Equivalent to \"Error\" or \"Invalid\" for the page or item in Search Console.",
+                        "Equivalent to \"Excluded\" for the page or item in Search Console."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AmpIssue": {
+            "description": "AMP issue.",
+            "id": "AmpIssue",
+            "properties": {
+                "issueMessage": {
+                    "description": "Brief description of this issue.",
+                    "type": "string"
+                },
+                "severity": {
+                    "description": "Severity of this issue: WARNING or ERROR.",
+                    "enum": [
+                        "SEVERITY_UNSPECIFIED",
+                        "WARNING",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown severity.",
+                        "Warning.",
+                        "Error."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ApiDataRow": {
             "id": "ApiDataRow",
             "properties": {
@@ -481,6 +654,24 @@
             },
             "type": "object"
         },
+        "DetectedItems": {
+            "description": "Rich Results items grouped by type.",
+            "id": "DetectedItems",
+            "properties": {
+                "items": {
+                    "description": "List of Rich Results items.",
+                    "items": {
+                        "$ref": "Item"
+                    },
+                    "type": "array"
+                },
+                "richResultType": {
+                    "description": "Rich Results type",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "Image": {
             "description": "Describe image data.",
             "id": "Image",
@@ -497,6 +688,188 @@
             },
             "type": "object"
         },
+        "IndexStatusInspectionResult": {
+            "description": "Results of index status inspection for either the live page or the version in Google's index, depending on whether you requested a live inspection or not. For more information, see the [Index coverage report documentation](https://support.google.com/webmasters/answer/7440203).",
+            "id": "IndexStatusInspectionResult",
+            "properties": {
+                "coverageState": {
+                    "description": "Could Google find and index the page. More details about page indexing appear in 'indexing_state'.",
+                    "type": "string"
+                },
+                "crawledAs": {
+                    "description": "Primary crawler that was used by Google to crawl your site.",
+                    "enum": [
+                        "CRAWLING_USER_AGENT_UNSPECIFIED",
+                        "DESKTOP",
+                        "MOBILE"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown user agent.",
+                        "Desktop user agent.",
+                        "Mobile user agent."
+                    ],
+                    "type": "string"
+                },
+                "googleCanonical": {
+                    "description": "The URL of the page that Google selected as canonical. If the page was not indexed, this field is absent.",
+                    "type": "string"
+                },
+                "indexingState": {
+                    "description": "Whether or not the page blocks indexing through a noindex rule.",
+                    "enum": [
+                        "INDEXING_STATE_UNSPECIFIED",
+                        "INDEXING_ALLOWED",
+                        "BLOCKED_BY_META_TAG",
+                        "BLOCKED_BY_HTTP_HEADER",
+                        "BLOCKED_BY_ROBOTS_TXT"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown indexing status.",
+                        "Indexing allowed.",
+                        "Indexing not allowed, 'noindex' detected in 'robots' meta tag.",
+                        "Indexing not allowed, 'noindex' detected in 'X-Robots-Tag' http header.",
+                        "Indexing not allowed, No: 'noindex' detected in robots.txt."
+                    ],
+                    "type": "string"
+                },
+                "lastCrawlTime": {
+                    "description": "Last time this URL was crawled by Google using the [primary crawler](https://support.google.com/webmasters/answer/7440203#primary_crawler). Absent if the URL was never crawled successfully.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "pageFetchState": {
+                    "description": "Whether or not Google could retrieve the page from your server. Equivalent to [\"page fetch\"](https://support.google.com/webmasters/answer/9012289#index_coverage) in the URL inspection report.",
+                    "enum": [
+                        "PAGE_FETCH_STATE_UNSPECIFIED",
+                        "SUCCESSFUL",
+                        "SOFT_404",
+                        "BLOCKED_ROBOTS_TXT",
+                        "NOT_FOUND",
+                        "ACCESS_DENIED",
+                        "SERVER_ERROR",
+                        "REDIRECT_ERROR",
+                        "ACCESS_FORBIDDEN",
+                        "BLOCKED_4XX",
+                        "INTERNAL_CRAWL_ERROR",
+                        "INVALID_URL"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown fetch state.",
+                        "Successful fetch.",
+                        "Soft 404.",
+                        "Blocked by robots.txt.",
+                        "Not found (404).",
+                        "Blocked due to unauthorized request (401).",
+                        "Server error (5xx).",
+                        "Redirection error.",
+                        "Blocked due to access forbidden (403).",
+                        "Blocked due to other 4xx issue (not 403, 404).",
+                        "Internal error.",
+                        "Invalid URL."
+                    ],
+                    "type": "string"
+                },
+                "referringUrls": {
+                    "description": "URLs that link to the inspected URL, directly and indirectly.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "robotsTxtState": {
+                    "description": "Whether or not the page is blocked to Google by a robots.txt rule.",
+                    "enum": [
+                        "ROBOTS_TXT_STATE_UNSPECIFIED",
+                        "ALLOWED",
+                        "DISALLOWED"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown robots.txt state, typically because the page wasn't fetched or found, or because robots.txt itself couldn't be reached.",
+                        "Crawl allowed by robots.txt.",
+                        "Crawl blocked by robots.txt."
+                    ],
+                    "type": "string"
+                },
+                "sitemap": {
+                    "description": "Any sitemaps that this URL was listed in, as known by Google. Not guaranteed to be an exhaustive list, especially if Google did not discover this URL through a sitemap. Absent if no sitemaps were found.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "userCanonical": {
+                    "description": "The URL that your page or site [declares as canonical](https://developers.google.com/search/docs/advanced/crawling/consolidate-duplicate-urls?#define-canonical). If you did not declare a canonical URL, this field is absent.",
+                    "type": "string"
+                },
+                "verdict": {
+                    "description": "High level verdict about whether the URL *is* indexed (indexed status), or *can be* indexed (live inspection).",
+                    "enum": [
+                        "VERDICT_UNSPECIFIED",
+                        "PASS",
+                        "PARTIAL",
+                        "FAIL",
+                        "NEUTRAL"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown verdict.",
+                        "Equivalent to \"Valid\" for the page or item in Search Console.",
+                        "Equivalent to \"Valid with warnings\" for the page or item in Search Console.",
+                        "Equivalent to \"Error\" or \"Invalid\" for the page or item in Search Console.",
+                        "Equivalent to \"Excluded\" for the page or item in Search Console."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "InspectUrlIndexRequest": {
+            "description": "Index inspection request.",
+            "id": "InspectUrlIndexRequest",
+            "properties": {
+                "inspectionUrl": {
+                    "description": "Required. URL to inspect. Must be under the property specified in \"site_url\".",
+                    "type": "string"
+                },
+                "languageCode": {
+                    "description": "Optional. An [IETF BCP-47](https://en.wikipedia.org/wiki/IETF_language_tag) language code representing the requested language for translated issue messages, e.g. \"en-US\", \"or \"de-CH\". Default value is \"en-US\".",
+                    "type": "string"
+                },
+                "siteUrl": {
+                    "description": "Required. The URL of the property as defined in Search Console. **Examples:** `http://www.example.com/` for a URL-prefix property, or `sc-domain:example.com` for a Domain property.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "InspectUrlIndexResponse": {
+            "description": "Index-Status inspection response.",
+            "id": "InspectUrlIndexResponse",
+            "properties": {
+                "inspectionResult": {
+                    "$ref": "UrlInspectionResult",
+                    "description": "URL inspection results."
+                }
+            },
+            "type": "object"
+        },
+        "Item": {
+            "description": "A specific rich result found on the page.",
+            "id": "Item",
+            "properties": {
+                "issues": {
+                    "description": "A list of zero or more rich result issues found for this instance.",
+                    "items": {
+                        "$ref": "RichResultsIssue"
+                    },
+                    "type": "array"
+                },
+                "name": {
+                    "description": "The user-provided name of this item.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "MobileFriendlyIssue": {
             "description": "Mobile-friendly issue.",
             "id": "MobileFriendlyIssue",
@@ -526,6 +899,85 @@
             },
             "type": "object"
         },
+        "MobileUsabilityInspectionResult": {
+            "description": "Mobile-usability inspection results.",
+            "id": "MobileUsabilityInspectionResult",
+            "properties": {
+                "issues": {
+                    "description": "A list of zero or more mobile-usability issues detected for this URL.",
+                    "items": {
+                        "$ref": "MobileUsabilityIssue"
+                    },
+                    "type": "array"
+                },
+                "verdict": {
+                    "description": "High-level mobile-usability inspection result for this URL.",
+                    "enum": [
+                        "VERDICT_UNSPECIFIED",
+                        "PASS",
+                        "PARTIAL",
+                        "FAIL",
+                        "NEUTRAL"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown verdict.",
+                        "Equivalent to \"Valid\" for the page or item in Search Console.",
+                        "Equivalent to \"Valid with warnings\" for the page or item in Search Console.",
+                        "Equivalent to \"Error\" or \"Invalid\" for the page or item in Search Console.",
+                        "Equivalent to \"Excluded\" for the page or item in Search Console."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MobileUsabilityIssue": {
+            "description": "Mobile-usability issue.",
+            "id": "MobileUsabilityIssue",
+            "properties": {
+                "issueType": {
+                    "description": "Mobile-usability issue type.",
+                    "enum": [
+                        "MOBILE_USABILITY_ISSUE_TYPE_UNSPECIFIED",
+                        "USES_INCOMPATIBLE_PLUGINS",
+                        "CONFIGURE_VIEWPORT",
+                        "FIXED_WIDTH_VIEWPORT",
+                        "SIZE_CONTENT_TO_VIEWPORT",
+                        "USE_LEGIBLE_FONT_SIZES",
+                        "TAP_TARGETS_TOO_CLOSE"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown issue. Sorry, we don't have any description for the rule that was broken.",
+                        "Plugins incompatible with mobile devices are being used. [Learn more] (https://support.google.com/webmasters/answer/6352293#flash_usage#error-list).",
+                        "Viewport is not specified using the meta viewport tag. [Learn more] (https://support.google.com/webmasters/answer/6352293#viewport_not_configured#error-list).",
+                        "Viewport defined to a fixed width. [Learn more] (https://support.google.com/webmasters/answer/6352293#fixed-width_viewport#error-list).",
+                        "Content not sized to viewport. [Learn more] (https://support.google.com/webmasters/answer/6352293#content_not_sized_to_viewport#error-list).",
+                        "Font size is too small for easy reading on a small screen. [Learn More] (https://support.google.com/webmasters/answer/6352293#small_font_size#error-list).",
+                        "Touch elements are too close to each other. [Learn more] (https://support.google.com/webmasters/answer/6352293#touch_elements_too_close#error-list)."
+                    ],
+                    "type": "string"
+                },
+                "message": {
+                    "description": "Additional information regarding the issue.",
+                    "type": "string"
+                },
+                "severity": {
+                    "description": "Not returned; reserved for future use.",
+                    "enum": [
+                        "SEVERITY_UNSPECIFIED",
+                        "WARNING",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown severity.",
+                        "Warning.",
+                        "Error."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "ResourceIssue": {
             "description": "Information about a resource with issue.",
             "id": "ResourceIssue",
@@ -537,6 +989,63 @@
             },
             "type": "object"
         },
+        "RichResultsInspectionResult": {
+            "description": "Rich-Results inspection result, including any rich results found at this URL.",
+            "id": "RichResultsInspectionResult",
+            "properties": {
+                "detectedItems": {
+                    "description": "A list of zero or more rich results detected on this page. Rich results that cannot even be parsed due to syntactic issues will not be listed here.",
+                    "items": {
+                        "$ref": "DetectedItems"
+                    },
+                    "type": "array"
+                },
+                "verdict": {
+                    "description": "High-level rich results inspection result for this URL.",
+                    "enum": [
+                        "VERDICT_UNSPECIFIED",
+                        "PASS",
+                        "PARTIAL",
+                        "FAIL",
+                        "NEUTRAL"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown verdict.",
+                        "Equivalent to \"Valid\" for the page or item in Search Console.",
+                        "Equivalent to \"Valid with warnings\" for the page or item in Search Console.",
+                        "Equivalent to \"Error\" or \"Invalid\" for the page or item in Search Console.",
+                        "Equivalent to \"Excluded\" for the page or item in Search Console."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "RichResultsIssue": {
+            "description": "Severity and status of a single issue affecting a single rich result instance on a page.",
+            "id": "RichResultsIssue",
+            "properties": {
+                "issueMessage": {
+                    "description": "Rich Results issue type.",
+                    "type": "string"
+                },
+                "severity": {
+                    "description": "Severity of this issue: WARNING, or ERROR. Items with an issue of status ERROR cannot appear with rich result features in Google Search results.",
+                    "enum": [
+                        "SEVERITY_UNSPECIFIED",
+                        "WARNING",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown severity.",
+                        "Warning.",
+                        "Error."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "RunMobileFriendlyTestRequest": {
             "description": "Mobile-friendly test request.",
             "id": "RunMobileFriendlyTestRequest",
@@ -800,6 +1309,33 @@
             },
             "type": "object"
         },
+        "UrlInspectionResult": {
+            "description": "URL inspection result, including all inspection results.",
+            "id": "UrlInspectionResult",
+            "properties": {
+                "ampResult": {
+                    "$ref": "AmpInspectionResult",
+                    "description": "Result of the AMP analysis. Absent if the page is not an AMP page."
+                },
+                "indexStatusResult": {
+                    "$ref": "IndexStatusInspectionResult",
+                    "description": "Result of the index status analysis."
+                },
+                "inspectionResultLink": {
+                    "description": "Link to Search Console URL inspection.",
+                    "type": "string"
+                },
+                "mobileUsabilityResult": {
+                    "$ref": "MobileUsabilityInspectionResult",
+                    "description": "Result of the Mobile usability analysis."
+                },
+                "richResultsResult": {
+                    "$ref": "RichResultsInspectionResult",
+                    "description": "Result of the Rich Results analysis. Absent if there are no rich results found."
+                }
+            },
+            "type": "object"
+        },
         "WmxSite": {
             "description": "Contains permission level information about a Search Console site. For more information, see [Permissions in Search Console](https://support.google.com/webmasters/answer/2451999).",
             "id": "WmxSite",
diff --git a/discovery/googleapis/secretmanager__v1.json b/discovery/googleapis/secretmanager__v1.json
index f7bf714..1bae253 100644
--- a/discovery/googleapis/secretmanager__v1.json
+++ b/discovery/googleapis/secretmanager__v1.json
@@ -641,7 +641,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220129",
     "rootUrl": "https://secretmanager.googleapis.com/",
     "schemas": {
         "AccessSecretVersionResponse": {
diff --git a/discovery/googleapis/securitycenter__v1.json b/discovery/googleapis/securitycenter__v1.json
index 1869d92..993fcb0 100644
--- a/discovery/googleapis/securitycenter__v1.json
+++ b/discovery/googleapis/securitycenter__v1.json
@@ -2585,7 +2585,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220210",
     "rootUrl": "https://securitycenter.googleapis.com/",
     "schemas": {
         "Access": {
@@ -2801,6 +2801,10 @@
                         "$ref": "Reference"
                     },
                     "type": "array"
+                },
+                "upstreamFixAvailable": {
+                    "description": "Whether upstream fix is available for the CVE.",
+                    "type": "boolean"
                 }
             },
             "type": "object"
@@ -3037,7 +3041,7 @@
                     "description": "MITRE ATT&CK tactics and techniques related to this finding. See: https://attack.mitre.org"
                 },
                 "mute": {
-                    "description": "Indicates the mute state of a finding (either unspecified, muted, unmuted or undefined).",
+                    "description": "Indicates the mute state of a finding (either unspecified, muted, unmuted or undefined). Unlike other attributes of a finding, a finding provider shouldn't set the value of mute.",
                     "enum": [
                         "MUTE_UNSPECIFIED",
                         "MUTED",
@@ -3053,7 +3057,7 @@
                     "type": "string"
                 },
                 "muteInitiator": {
-                    "description": "First known as mute_annotation. Records additional information about the mute operation e.g. mute config that muted the finding, user who muted the finding, etc.",
+                    "description": "First known as mute_annotation. Records additional information about the mute operation e.g. mute config that muted the finding, user who muted the finding, etc. Unlike other attributes of a finding, a finding provider shouldn't set the value of mute.",
                     "type": "string"
                 },
                 "muteUpdateTime": {
@@ -4013,7 +4017,8 @@
                             "CREATE_OR_MODIFY_SYSTEM_PROCESS",
                             "STEAL_WEB_SESSION_COOKIE",
                             "MODIFY_CLOUD_COMPUTE_INFRASTRUCTURE",
-                            "EXPLOIT_PUBLIC_FACING_APPLICATION"
+                            "EXPLOIT_PUBLIC_FACING_APPLICATION",
+                            "MODIFY_AUTHENTICATION_PROCESS"
                         ],
                         "enumDescriptions": [
                             "Unspecified value.",
@@ -4043,7 +4048,8 @@
                             "T1543",
                             "T1539",
                             "T1578",
-                            "T1190"
+                            "T1190",
+                            "T1556"
                         ],
                         "type": "string"
                     },
@@ -4118,7 +4124,8 @@
                             "CREATE_OR_MODIFY_SYSTEM_PROCESS",
                             "STEAL_WEB_SESSION_COOKIE",
                             "MODIFY_CLOUD_COMPUTE_INFRASTRUCTURE",
-                            "EXPLOIT_PUBLIC_FACING_APPLICATION"
+                            "EXPLOIT_PUBLIC_FACING_APPLICATION",
+                            "MODIFY_AUTHENTICATION_PROCESS"
                         ],
                         "enumDescriptions": [
                             "Unspecified value.",
@@ -4148,7 +4155,8 @@
                             "T1543",
                             "T1539",
                             "T1578",
-                            "T1190"
+                            "T1190",
+                            "T1556"
                         ],
                         "type": "string"
                     },
diff --git a/discovery/googleapis/serviceconsumermanagement__v1.json b/discovery/googleapis/serviceconsumermanagement__v1.json
index 0c58968..0f9a6c1 100644
--- a/discovery/googleapis/serviceconsumermanagement__v1.json
+++ b/discovery/googleapis/serviceconsumermanagement__v1.json
@@ -540,7 +540,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220215",
     "rootUrl": "https://serviceconsumermanagement.googleapis.com/",
     "schemas": {
         "AddTenantProjectRequest": {
@@ -1540,10 +1540,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -1637,10 +1637,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -1722,10 +1722,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
diff --git a/discovery/googleapis/servicecontrol__v1.json b/discovery/googleapis/servicecontrol__v1.json
index 88823ca..37c9ee9 100644
--- a/discovery/googleapis/servicecontrol__v1.json
+++ b/discovery/googleapis/servicecontrol__v1.json
@@ -195,7 +195,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220209",
     "rootUrl": "https://servicecontrol.googleapis.com/",
     "schemas": {
         "AllocateInfo": {
@@ -1385,7 +1385,7 @@
                     "type": "string"
                 },
                 "operationId": {
-                    "description": "Identity of the operation. This is expected to be unique within the scope of the service that generated the operation, and guarantees idempotency in case of retries. In order to ensure best performance and latency in the Quota backends, operation_ids are optimally associated with time, so that related operations can be accessed fast in storage. For this reason, the recommended token for services that intend to operate at a high QPS is Unix time in nanos + UUID",
+                    "description": "Identity of the operation. For Allocation Quota, this is expected to be unique within the scope of the service that generated the operation, and guarantees idempotency in case of retries. In order to ensure best performance and latency in the Quota backends, operation_ids are optimally associated with time, so that related operations can be accessed fast in storage. For this reason, the recommended token for services that intend to operate at a high QPS is Unix time in nanos + UUID",
                     "type": "string"
                 },
                 "quotaMetrics": {
diff --git a/discovery/googleapis/servicecontrol__v2.json b/discovery/googleapis/servicecontrol__v2.json
index ea9f5dc..8d1aeb8 100644
--- a/discovery/googleapis/servicecontrol__v2.json
+++ b/discovery/googleapis/servicecontrol__v2.json
@@ -167,7 +167,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220209",
     "rootUrl": "https://servicecontrol.googleapis.com/",
     "schemas": {
         "Api": {
diff --git a/discovery/googleapis/servicedirectory__v1.json b/discovery/googleapis/servicedirectory__v1.json
index 2c60872..3e38bcc 100644
--- a/discovery/googleapis/servicedirectory__v1.json
+++ b/discovery/googleapis/servicedirectory__v1.json
@@ -881,7 +881,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220203",
     "rootUrl": "https://servicedirectory.googleapis.com/",
     "schemas": {
         "Binding": {
diff --git a/discovery/googleapis/servicemanagement__v1.json b/discovery/googleapis/servicemanagement__v1.json
index d01bfb4..fe54655 100644
--- a/discovery/googleapis/servicemanagement__v1.json
+++ b/discovery/googleapis/servicemanagement__v1.json
@@ -827,7 +827,7 @@
             }
         }
     },
-    "revision": "20220117",
+    "revision": "20220204",
     "rootUrl": "https://servicemanagement.googleapis.com/",
     "schemas": {
         "Advice": {
@@ -2138,10 +2138,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -2235,10 +2235,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -2320,10 +2320,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
diff --git a/discovery/googleapis/servicenetworking__v1.json b/discovery/googleapis/servicenetworking__v1.json
index f16333a..040a11c 100644
--- a/discovery/googleapis/servicenetworking__v1.json
+++ b/discovery/googleapis/servicenetworking__v1.json
@@ -858,7 +858,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220215",
     "rootUrl": "https://servicenetworking.googleapis.com/",
     "schemas": {
         "AddDnsRecordSetMetadata": {
@@ -968,6 +968,10 @@
             "description": "Request to create a subnetwork in a previously peered service network.",
             "id": "AddSubnetworkRequest",
             "properties": {
+                "checkServiceNetworkingUsePermission": {
+                    "description": "Optional. The IAM permission check determines whether the consumer project has 'servicenetworking.services.use' permission or not.",
+                    "type": "boolean"
+                },
                 "consumer": {
                     "description": "Required. A resource that represents the service consumer, such as `projects/123456`. The project number can be different from the value in the consumer network parameter. For example, the network might be part of a Shared VPC network. In those cases, Service Networking validates that this resource belongs to that Shared VPC.",
                     "type": "string"
@@ -2217,10 +2221,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -2314,10 +2318,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -2399,10 +2403,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
diff --git a/discovery/googleapis/serviceusage__v1.json b/discovery/googleapis/serviceusage__v1.json
index 8ed45cd..291cce7 100644
--- a/discovery/googleapis/serviceusage__v1.json
+++ b/discovery/googleapis/serviceusage__v1.json
@@ -424,7 +424,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220215",
     "rootUrl": "https://serviceusage.googleapis.com/",
     "schemas": {
         "AdminQuotaPolicy": {
@@ -1904,10 +1904,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -2001,10 +2001,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -2086,10 +2086,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
diff --git a/discovery/googleapis/sheets__v4.json b/discovery/googleapis/sheets__v4.json
index 84ad830..f8aaf81 100644
--- a/discovery/googleapis/sheets__v4.json
+++ b/discovery/googleapis/sheets__v4.json
@@ -868,7 +868,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220208",
     "rootUrl": "https://sheets.googleapis.com/",
     "schemas": {
         "AddBandingRequest": {
diff --git a/discovery/googleapis/slides__v1.json b/discovery/googleapis/slides__v1.json
index 31baa03..96a59a4 100644
--- a/discovery/googleapis/slides__v1.json
+++ b/discovery/googleapis/slides__v1.json
@@ -311,7 +311,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220208",
     "rootUrl": "https://slides.googleapis.com/",
     "schemas": {
         "AffineTransform": {
diff --git a/discovery/googleapis/smartdevicemanagement__v1.json b/discovery/googleapis/smartdevicemanagement__v1.json
index 0e202f6..e4e1ab6 100644
--- a/discovery/googleapis/smartdevicemanagement__v1.json
+++ b/discovery/googleapis/smartdevicemanagement__v1.json
@@ -353,7 +353,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220207",
     "rootUrl": "https://smartdevicemanagement.googleapis.com/",
     "schemas": {
         "GoogleHomeEnterpriseSdmV1Device": {
diff --git a/discovery/googleapis/sourcerepo__v1.json b/discovery/googleapis/sourcerepo__v1.json
index 4738c4b..cf18555 100644
--- a/discovery/googleapis/sourcerepo__v1.json
+++ b/discovery/googleapis/sourcerepo__v1.json
@@ -448,7 +448,7 @@
             }
         }
     },
-    "revision": "20211206",
+    "revision": "20220209",
     "rootUrl": "https://sourcerepo.googleapis.com/",
     "schemas": {
         "AuditConfig": {
diff --git a/discovery/googleapis/spanner__v1.json b/discovery/googleapis/spanner__v1.json
index 0506604..d00e7d7 100644
--- a/discovery/googleapis/spanner__v1.json
+++ b/discovery/googleapis/spanner__v1.json
@@ -445,7 +445,7 @@
                                     ],
                                     "parameters": {
                                         "filter": {
-                                            "description": "An expression that filters the list of returned backup operations. A filter expression consists of a field name, a comparison operator, and a value for filtering. The value must be a string, a number, or a boolean. The comparison operator must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`. Colon `:` is the contains operator. Filter rules are not case sensitive. The following fields in the operation are eligible for filtering: * `name` - The name of the long-running operation * `done` - False if the operation is in progress, else true. * `metadata.@type` - the type of metadata. For example, the type string for CreateBackupMetadata is `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * `metadata.` - any field in metadata.value. * `error` - Error associated with the long-running operation. * `response.@type` - the type of response. * `response.` - any field in response.value. You can combine multiple expressions by enclosing each expression in parentheses. By default, expressions are combined with AND logic, but you can specify AND, OR, and NOT logic explicitly. Here are a few examples: * `done:true` - The operation is complete. * `metadata.database:prod` - The database the backup was taken from has a name containing the string \"prod\". * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \\ `(metadata.name:howl) AND` \\ `(metadata.progress.start_time < \\\"2018-03-28T14:50:00Z\\\") AND` \\ `(error:*)` - Returns operations where: * The operation's metadata type is CreateBackupMetadata. * The backup name contains the string \"howl\". * The operation started before 2018-03-28T14:50:00Z. * The operation resulted in an error.",
+                                            "description": "An expression that filters the list of returned backup operations. A filter expression consists of a field name, a comparison operator, and a value for filtering. The value must be a string, a number, or a boolean. The comparison operator must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`. Colon `:` is the contains operator. Filter rules are not case sensitive. The following fields in the operation are eligible for filtering: * `name` - The name of the long-running operation * `done` - False if the operation is in progress, else true. * `metadata.@type` - the type of metadata. For example, the type string for CreateBackupMetadata is `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`. * `metadata.` - any field in metadata.value. `metadata.type_url` must be specified if filtering on metadata fields. * `error` - Error associated with the long-running operation. * `response.@type` - the type of response. * `response.` - any field in response.value. You can combine multiple expressions by enclosing each expression in parentheses. By default, expressions are combined with AND logic, but you can specify AND, OR, and NOT logic explicitly. Here are a few examples: * `done:true` - The operation is complete. * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \\ `metadata.database:prod` - Returns operations where: * The operation's metadata type is CreateBackupMetadata. * The database the backup was taken from has a name containing the string \"prod\". * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \\ `(metadata.name:howl) AND` \\ `(metadata.progress.start_time < \\\"2018-03-28T14:50:00Z\\\") AND` \\ `(error:*)` - Returns operations where: * The operation's metadata type is CreateBackupMetadata. * The backup name contains the string \"howl\". * The operation started before 2018-03-28T14:50:00Z. * The operation resulted in an error.",
                                             "location": "query",
                                             "type": "string"
                                         },
@@ -2035,7 +2035,7 @@
             }
         }
     },
-    "revision": "20220103",
+    "revision": "20220210",
     "rootUrl": "https://spanner.googleapis.com/",
     "schemas": {
         "Backup": {
@@ -2052,6 +2052,21 @@
                     "description": "Required for the CreateBackup operation. Name of the database from which this backup was created. This needs to be in the same instance as the backup. Values are of the form `projects//instances//databases/`.",
                     "type": "string"
                 },
+                "databaseDialect": {
+                    "description": "Output only. The database dialect information for the backup.",
+                    "enum": [
+                        "DATABASE_DIALECT_UNSPECIFIED",
+                        "GOOGLE_STANDARD_SQL",
+                        "POSTGRESQL"
+                    ],
+                    "enumDescriptions": [
+                        "Default value. This value will create a database with the GOOGLE_STANDARD_SQL dialect.",
+                        "Google standard SQL.",
+                        "PostgreSQL supported SQL."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "encryptionInfo": {
                     "$ref": "EncryptionInfo",
                     "description": "Output only. The encryption information for the backup.",
@@ -2355,6 +2370,20 @@
                     "description": "Required. A `CREATE DATABASE` statement, which specifies the ID of the new database. The database ID must conform to the regular expression `a-z*[a-z0-9]` and be between 2 and 30 characters in length. If the database ID is a reserved word or if it contains a hyphen, the database ID must be enclosed in backticks (`` ` ``).",
                     "type": "string"
                 },
+                "databaseDialect": {
+                    "description": "Optional. The dialect of the Cloud Spanner Database.",
+                    "enum": [
+                        "DATABASE_DIALECT_UNSPECIFIED",
+                        "GOOGLE_STANDARD_SQL",
+                        "POSTGRESQL"
+                    ],
+                    "enumDescriptions": [
+                        "Default value. This value will create a database with the GOOGLE_STANDARD_SQL dialect.",
+                        "Google standard SQL.",
+                        "PostgreSQL supported SQL."
+                    ],
+                    "type": "string"
+                },
                 "encryptionConfig": {
                     "$ref": "EncryptionConfig",
                     "description": "Optional. The encryption configuration for the database. If this field is not specified, Cloud Spanner will encrypt/decrypt all data at rest using Google default encryption."
@@ -2431,6 +2460,21 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "databaseDialect": {
+                    "description": "Output only. The dialect of the Cloud Spanner Database.",
+                    "enum": [
+                        "DATABASE_DIALECT_UNSPECIFIED",
+                        "GOOGLE_STANDARD_SQL",
+                        "POSTGRESQL"
+                    ],
+                    "enumDescriptions": [
+                        "Default value. This value will create a database with the GOOGLE_STANDARD_SQL dialect.",
+                        "Google standard SQL.",
+                        "PostgreSQL supported SQL."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
                 "defaultLeader": {
                     "description": "Output only. The read-write region which contains the database's leader replicas. This is the same as the value of default_leader database option set using DatabaseAdmin.CreateDatabase or DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.",
                     "readOnly": true,
@@ -3054,7 +3098,7 @@
                     "type": "string"
                 },
                 "operations": {
-                    "description": "The list of matching backup long-running operations. Each operation's name will be prefixed by the backup's name and the operation's metadata will be of type CreateBackupMetadata. Operations returned include those that are pending or have completed/failed/canceled within the last 7 days. Operations returned are ordered by `operation.metadata.value.progress.start_time` in descending order starting from the most recently started operation.",
+                    "description": "The list of matching backup long-running operations. Each operation's name will be prefixed by the backup's name. The operation's metadata field type `metadata.type_url` describes the type of the metadata. Operations returned include those that are pending or have completed/failed/canceled within the last 7 days. Operations returned are ordered by `operation.metadata.value.progress.start_time` in descending order starting from the most recently started operation.",
                     "items": {
                         "$ref": "Operation"
                     },
@@ -4379,6 +4423,18 @@
                 "structType": {
                     "$ref": "StructType",
                     "description": "If code == STRUCT, then `struct_type` provides type information for the struct's fields."
+                },
+                "typeAnnotation": {
+                    "description": "The TypeAnnotationCode that disambiguates SQL type that Spanner will use to represent values of this type during query processing. This is necessary for some type codes because a single TypeCode can be mapped to different SQL types depending on the SQL dialect. type_annotation typically is not needed to process the content of a value (it doesn't affect serialization) and clients can ignore it on the read path.",
+                    "enum": [
+                        "TYPE_ANNOTATION_CODE_UNSPECIFIED",
+                        "PG_NUMERIC"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "PostgreSQL compatible NUMERIC type. This annotation needs to be applied to Type instances having NUMERIC type code to specify that values of this type should be treated as PostgreSQL NUMERIC values. Currently this annotation is always needed for NUMERIC when a client interacts with PostgreSQL-enabled Spanner databases."
+                    ],
+                    "type": "string"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis/speech__v1.json b/discovery/googleapis/speech__v1.json
index 55b290c..8927b1a 100644
--- a/discovery/googleapis/speech__v1.json
+++ b/discovery/googleapis/speech__v1.json
@@ -522,7 +522,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220203",
     "rootUrl": "https://speech.googleapis.com/",
     "schemas": {
         "ClassItem": {
@@ -899,7 +899,7 @@
                     "description": "Metadata regarding this request."
                 },
                 "model": {
-                    "description": "Which model to select for the given request. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then we auto-select a model based on the parameters in the RecognitionConfig. *Model* *Description* command_and_search Best for short queries such as voice commands or voice search. phone_call Best for audio that originated from a phone call (typically recorded at an 8khz sampling rate). video Best for audio that originated from video or includes multiple speakers. Ideally the audio is recorded at a 16khz or greater sampling rate. This is a premium model that costs more than the standard rate. default Best for audio that is not one of the specific audio models. For example, long-form audio. Ideally the audio is high-fidelity, recorded at a 16khz or greater sampling rate. ",
+                    "description": "Which model to select for the given request. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then we auto-select a model based on the parameters in the RecognitionConfig. *Model* *Description* command_and_search Best for short queries such as voice commands or voice search. phone_call Best for audio that originated from a phone call (typically recorded at an 8khz sampling rate). video Best for audio that originated from video or includes multiple speakers. Ideally the audio is recorded at a 16khz or greater sampling rate. This is a premium model that costs more than the standard rate. default Best for audio that is not one of the specific audio models. For example, long-form audio. Ideally the audio is high-fidelity, recorded at a 16khz or greater sampling rate. medical_conversation Best for audio that originated from a conversation between a medical provider and patient. medical_dictation Best for audio that originated from dictation notes by a medical provider. ",
                     "type": "string"
                 },
                 "profanityFilter": {
diff --git a/discovery/googleapis/storage__v1.json b/discovery/googleapis/storage__v1.json
index 79dc60b..e65547d 100644
--- a/discovery/googleapis/storage__v1.json
+++ b/discovery/googleapis/storage__v1.json
@@ -26,7 +26,7 @@
     "description": "Stores and retrieves potentially large, immutable data objects.",
     "discoveryVersion": "v1",
     "documentationLink": "https://developers.google.com/storage/docs/json_api/",
-    "etag": "\"3136353137393030313734333731353930323633\"",
+    "etag": "\"3137353238303035303136333633393332333233\"",
     "icons": {
         "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
         "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
@@ -78,6 +78,11 @@
             "location": "query",
             "type": "string"
         },
+        "uploadType": {
+            "description": "Upload protocol for media (e.g. \"media\", \"multipart\", \"resumable\").",
+            "location": "query",
+            "type": "string"
+        },
         "userIp": {
             "description": "Deprecated. Please use quotaUser instead.",
             "location": "query",
@@ -3229,7 +3234,7 @@
             }
         }
     },
-    "revision": "20220114",
+    "revision": "20220210",
     "rootUrl": "https://storage.googleapis.com/",
     "schemas": {
         "Bucket": {
diff --git a/discovery/googleapis/storagetransfer__v1.json b/discovery/googleapis/storagetransfer__v1.json
index 53e65b9..6437b66 100644
--- a/discovery/googleapis/storagetransfer__v1.json
+++ b/discovery/googleapis/storagetransfer__v1.json
@@ -412,7 +412,7 @@
                     ]
                 },
                 "run": {
-                    "description": "Attempts to start a new TransferOperation for the current TransferJob. A TransferJob has a maximum of one active TransferOperation. If this method is called while a TransferOperation is active, an error wil be returned.",
+                    "description": "Attempts to start a new TransferOperation for the current TransferJob. A TransferJob has a maximum of one active TransferOperation. If this method is called while a TransferOperation is active, an error will be returned.",
                     "flatPath": "v1/transferJobs/{transferJobsId}:run",
                     "httpMethod": "POST",
                     "id": "storagetransfer.transferJobs.run",
@@ -598,7 +598,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220203",
     "rootUrl": "https://storagetransfer.googleapis.com/",
     "schemas": {
         "AgentPool": {
@@ -728,7 +728,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -977,11 +977,25 @@
             "type": "object"
         },
         "MetadataOptions": {
-            "description": "Specifies the metadata options for running a transfer.",
+            "description": "Specifies the metadata options for running a transfer. These options only apply to transfers involving a POSIX filesystem and are ignored for other transfers.",
             "id": "MetadataOptions",
             "properties": {
+                "acl": {
+                    "description": "Specifies how each object's ACLs should be preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as ACL_DESTINATION_BUCKET_DEFAULT.",
+                    "enum": [
+                        "ACL_UNSPECIFIED",
+                        "ACL_DESTINATION_BUCKET_DEFAULT",
+                        "ACL_PRESERVE"
+                    ],
+                    "enumDescriptions": [
+                        "ACL behavior is unspecified.",
+                        "Use the destination bucket's default object ACLS, if applicable.",
+                        "Preserve the object's original ACLs. This requires the service account to have `storage.objects.getIamPolicy` permission for the source object. [Uniform bucket-level access](https://cloud.google.com/storage/docs/uniform-bucket-level-access) must not be enabled on either the source or destination buckets."
+                    ],
+                    "type": "string"
+                },
                 "gid": {
-                    "description": "Specifies how each file's GID attribute should be handled by the transfer. If unspecified, the default behavior is the same as GID_SKIP when the source is a POSIX file system.",
+                    "description": "Specifies how each file's POSIX group ID (GID) attribute should be handled by the transfer. By default, GID is not preserved.",
                     "enum": [
                         "GID_UNSPECIFIED",
                         "GID_SKIP",
@@ -989,13 +1003,27 @@
                     ],
                     "enumDescriptions": [
                         "GID behavior is unspecified.",
-                        "Skip GID during a transfer job.",
+                        "Do not preserve GID during a transfer job.",
                         "Preserve GID during a transfer job."
                     ],
                     "type": "string"
                 },
+                "kmsKey": {
+                    "description": "Specifies how each object's Cloud KMS customer-managed encryption key (CMEK) is preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as KMS_KEY_DESTINATION_BUCKET_DEFAULT.",
+                    "enum": [
+                        "KMS_KEY_UNSPECIFIED",
+                        "KMS_KEY_DESTINATION_BUCKET_DEFAULT",
+                        "KMS_KEY_PRESERVE"
+                    ],
+                    "enumDescriptions": [
+                        "KmsKey behavior is unspecified.",
+                        "Use the destination bucket's default encryption settings.",
+                        "Preserve the object's original Cloud KMS customer-managed encryption key (CMEK) if present. Objects that do not use a Cloud KMS encryption key will be encrypted using the destination bucket's encryption settings."
+                    ],
+                    "type": "string"
+                },
                 "mode": {
-                    "description": "Specifies how each file's mode attribute should be handled by the transfer. If unspecified, the default behavior is the same as MODE_SKIP when the source is a POSIX file system.",
+                    "description": "Specifies how each file's mode attribute should be handled by the transfer. By default, mode is not preserved.",
                     "enum": [
                         "MODE_UNSPECIFIED",
                         "MODE_SKIP",
@@ -1003,27 +1031,63 @@
                     ],
                     "enumDescriptions": [
                         "Mode behavior is unspecified.",
-                        "Skip mode during a transfer job.",
+                        "Do not preserve mode during a transfer job.",
                         "Preserve mode during a transfer job."
                     ],
                     "type": "string"
                 },
+                "storageClass": {
+                    "description": "Specifies the storage class to set on objects being transferred to Google Cloud Storage buckets. If unspecified, the default behavior is the same as STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT.",
+                    "enum": [
+                        "STORAGE_CLASS_UNSPECIFIED",
+                        "STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT",
+                        "STORAGE_CLASS_PRESERVE",
+                        "STORAGE_CLASS_STANDARD",
+                        "STORAGE_CLASS_NEARLINE",
+                        "STORAGE_CLASS_COLDLINE",
+                        "STORAGE_CLASS_ARCHIVE"
+                    ],
+                    "enumDescriptions": [
+                        "Storage class behavior is unspecified.",
+                        "Use the destination bucket's default storage class.",
+                        "Preserve the object's original storage class. This is only supported for transfers from Google Cloud Storage buckets.",
+                        "Set the storage class to STANDARD.",
+                        "Set the storage class to NEARLINE.",
+                        "Set the storage class to COLDLINE.",
+                        "Set the storage class to ARCHIVE."
+                    ],
+                    "type": "string"
+                },
                 "symlink": {
-                    "description": "Specifies how symlinks should be handled by the transfer. If unspecified, the default behavior is the same as SYMLINK_SKIP when the source is a POSIX file system.",
+                    "description": "Specifies how symlinks should be handled by the transfer. By default, symlinks are not preserved.",
                     "enum": [
                         "SYMLINK_UNSPECIFIED",
                         "SYMLINK_SKIP",
                         "SYMLINK_PRESERVE"
                     ],
                     "enumDescriptions": [
-                        "Symlink behavior is unspecified. The default behavior is to skip symlinks during a transfer job.",
-                        "Skip symlinks during a transfer job.",
+                        "Symlink behavior is unspecified.",
+                        "Do not preserve symlinks during a transfer job.",
                         "Preserve symlinks during a transfer job."
                     ],
                     "type": "string"
                 },
+                "temporaryHold": {
+                    "description": "Specifies how each object's temporary hold status should be preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as TEMPORARY_HOLD_PRESERVE.",
+                    "enum": [
+                        "TEMPORARY_HOLD_UNSPECIFIED",
+                        "TEMPORARY_HOLD_SKIP",
+                        "TEMPORARY_HOLD_PRESERVE"
+                    ],
+                    "enumDescriptions": [
+                        "Temporary hold behavior is unspecified.",
+                        "Do not set a temporary hold on the destination object.",
+                        "Preserve the object's original temporary hold status."
+                    ],
+                    "type": "string"
+                },
                 "uid": {
-                    "description": "Specifies how each file's UID attribute should be handled by the transfer. If unspecified, the default behavior is the same as UID_SKIP when the source is a POSIX file system.",
+                    "description": "Specifies how each file's POSIX user ID (UID) attribute should be handled by the transfer. By default, UID is not preserved.",
                     "enum": [
                         "UID_UNSPECIFIED",
                         "UID_SKIP",
@@ -1031,7 +1095,7 @@
                     ],
                     "enumDescriptions": [
                         "UID behavior is unspecified.",
-                        "Skip UID during a transfer job.",
+                        "Do not preserve UID during a transfer job.",
                         "Preserve UID during a transfer job."
                     ],
                     "type": "string"
@@ -1555,7 +1619,7 @@
                 },
                 "metadataOptions": {
                     "$ref": "MetadataOptions",
-                    "description": "Represents the selected metadata options for a transfer job."
+                    "description": "Represents the selected metadata options for a transfer job. This feature is in Preview."
                 },
                 "overwriteObjectsAlreadyExistingInSink": {
                     "description": "When to overwrite objects that already exist in the sink. The default is that only objects that are different from the source are ovewritten. If true, all objects in the sink whose name matches an object in the source are overwritten with the source object.",
diff --git a/discovery/googleapis/streetviewpublish__v1.json b/discovery/googleapis/streetviewpublish__v1.json
index f4af535..e65930b 100644
--- a/discovery/googleapis/streetviewpublish__v1.json
+++ b/discovery/googleapis/streetviewpublish__v1.json
@@ -373,7 +373,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220215",
     "rootUrl": "https://streetviewpublish.googleapis.com/",
     "schemas": {
         "BatchDeletePhotosRequest": {
diff --git a/discovery/googleapis/sts__v1.json b/discovery/googleapis/sts__v1.json
index dbe33db..4817ca7 100644
--- a/discovery/googleapis/sts__v1.json
+++ b/discovery/googleapis/sts__v1.json
@@ -129,7 +129,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220203",
     "rootUrl": "https://sts.googleapis.com/",
     "schemas": {
         "GoogleIamV1Binding": {
diff --git a/discovery/googleapis/tagmanager__v1.json b/discovery/googleapis/tagmanager__v1.json
index a69c3e0..59d5f01 100644
--- a/discovery/googleapis/tagmanager__v1.json
+++ b/discovery/googleapis/tagmanager__v1.json
@@ -1931,7 +1931,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220212",
     "rootUrl": "https://tagmanager.googleapis.com/",
     "schemas": {
         "Account": {
diff --git a/discovery/googleapis/tagmanager__v2.json b/discovery/googleapis/tagmanager__v2.json
index 113fe71..2e84c24 100644
--- a/discovery/googleapis/tagmanager__v2.json
+++ b/discovery/googleapis/tagmanager__v2.json
@@ -3316,7 +3316,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220212",
     "rootUrl": "https://tagmanager.googleapis.com/",
     "schemas": {
         "Account": {
diff --git a/discovery/googleapis/tasks__v1.json b/discovery/googleapis/tasks__v1.json
index ba14107..f8fa98e 100644
--- a/discovery/googleapis/tasks__v1.json
+++ b/discovery/googleapis/tasks__v1.json
@@ -564,7 +564,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://tasks.googleapis.com/",
     "schemas": {
         "Task": {
diff --git a/discovery/googleapis/testing__v1.json b/discovery/googleapis/testing__v1.json
index 123821c..a455115 100644
--- a/discovery/googleapis/testing__v1.json
+++ b/discovery/googleapis/testing__v1.json
@@ -281,7 +281,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220212",
     "rootUrl": "https://testing.googleapis.com/",
     "schemas": {
         "Account": {
@@ -850,7 +850,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
@@ -2140,7 +2140,7 @@
             "type": "object"
         },
         "UniformSharding": {
-            "description": "Uniformly shards test cases given a total number of shards. For Instrumentation test, it will be translated to \"-e numShard\" \"-e shardIndex\" AndroidJUnitRunner arguments. With uniform sharding enabled, specifying these sharding arguments via environment_variables is invalid.",
+            "description": "Uniformly shards test cases given a total number of shards. For Instrumentation test, it will be translated to \"-e numShard\" \"-e shardIndex\" AndroidJUnitRunner arguments. Based on the sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test cases will be distributed uniformly across all shards. With uniform sharding enabled, specifying these sharding arguments via environment_variables is invalid.",
             "id": "UniformSharding",
             "properties": {
                 "numShards": {
diff --git a/discovery/googleapis/texttospeech__v1.json b/discovery/googleapis/texttospeech__v1.json
index 3dfe334..7751b5d 100644
--- a/discovery/googleapis/texttospeech__v1.json
+++ b/discovery/googleapis/texttospeech__v1.json
@@ -151,7 +151,7 @@
             }
         }
     },
-    "revision": "20220103",
+    "revision": "20220204",
     "rootUrl": "https://texttospeech.googleapis.com/",
     "schemas": {
         "AudioConfig": {
diff --git a/discovery/googleapis/trafficdirector__v2.json b/discovery/googleapis/trafficdirector__v2.json
index b56c4d7..32ea135 100644
--- a/discovery/googleapis/trafficdirector__v2.json
+++ b/discovery/googleapis/trafficdirector__v2.json
@@ -126,7 +126,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220201",
     "rootUrl": "https://trafficdirector.googleapis.com/",
     "schemas": {
         "Address": {
diff --git a/discovery/googleapis/transcoder__v1.json b/discovery/googleapis/transcoder__v1.json
index fa9133d..67c70f9 100644
--- a/discovery/googleapis/transcoder__v1.json
+++ b/discovery/googleapis/transcoder__v1.json
@@ -383,7 +383,7 @@
             }
         }
     },
-    "revision": "20211108",
+    "revision": "20220201",
     "rootUrl": "https://transcoder.googleapis.com/",
     "schemas": {
         "AdBreak": {
@@ -1501,7 +1501,7 @@
                     "type": "integer"
                 },
                 "crfLevel": {
-                    "description": "Target CRF level. Must be between 10 and 36, where 10 is the highest quality and 36 is the most efficient compression. The default is 21.",
+                    "description": "Target CRF level. Must be between 10 and 36, where 10 is the highest quality and 36 is the most efficient compression. The default is 21. *Note*: This field is not supported. ",
                     "format": "int32",
                     "type": "integer"
                 },
@@ -1534,7 +1534,7 @@
                     "type": "string"
                 },
                 "rateControlMode": {
-                    "description": "Specify the `rate_control_mode`. The default is `vbr`. Supported rate control modes: - `vbr` - variable bitrate - `crf` - constant rate factor",
+                    "description": "Specify the `rate_control_mode`. The default is `vbr`. Supported rate control modes: - `vbr` - variable bitrate",
                     "type": "string"
                 },
                 "widthPixels": {
diff --git a/discovery/googleapis/translate__v3.json b/discovery/googleapis/translate__v3.json
index bbeae0c..e872193 100644
--- a/discovery/googleapis/translate__v3.json
+++ b/discovery/googleapis/translate__v3.json
@@ -742,7 +742,7 @@
             }
         }
     },
-    "revision": "20220117",
+    "revision": "20220121",
     "rootUrl": "https://translation.googleapis.com/",
     "schemas": {
         "BatchDocumentInputConfig": {
diff --git a/discovery/googleapis/vault__v1.json b/discovery/googleapis/vault__v1.json
index 1d1fb42..f9e67b0 100644
--- a/discovery/googleapis/vault__v1.json
+++ b/discovery/googleapis/vault__v1.json
@@ -1191,7 +1191,7 @@
             }
         }
     },
-    "revision": "20211225",
+    "revision": "20220128",
     "rootUrl": "https://vault.googleapis.com/",
     "schemas": {
         "AccountCount": {
diff --git a/discovery/googleapis/versionhistory__v1.json b/discovery/googleapis/versionhistory__v1.json
index 7288815..c8bd2a5 100644
--- a/discovery/googleapis/versionhistory__v1.json
+++ b/discovery/googleapis/versionhistory__v1.json
@@ -269,7 +269,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220214",
     "rootUrl": "https://versionhistory.googleapis.com/",
     "schemas": {
         "Channel": {
diff --git a/discovery/googleapis/videointelligence__v1.json b/discovery/googleapis/videointelligence__v1.json
index a1c90f8..7515d13 100644
--- a/discovery/googleapis/videointelligence__v1.json
+++ b/discovery/googleapis/videointelligence__v1.json
@@ -348,7 +348,7 @@
             }
         }
     },
-    "revision": "20211210",
+    "revision": "20220127",
     "rootUrl": "https://videointelligence.googleapis.com/",
     "schemas": {
         "GoogleCloudVideointelligenceV1_AnnotateVideoProgress": {
diff --git a/discovery/googleapis/vision__v1.json b/discovery/googleapis/vision__v1.json
index 17676de..fa0026c 100644
--- a/discovery/googleapis/vision__v1.json
+++ b/discovery/googleapis/vision__v1.json
@@ -1280,7 +1280,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220204",
     "rootUrl": "https://vision.googleapis.com/",
     "schemas": {
         "AddProductToProductSetRequest": {
diff --git a/discovery/googleapis/vmmigration__v1.json b/discovery/googleapis/vmmigration__v1.json
index a810fdc..55e32f8 100644
--- a/discovery/googleapis/vmmigration__v1.json
+++ b/discovery/googleapis/vmmigration__v1.json
@@ -354,7 +354,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "The Group name.",
+                                            "description": "Output only. The Group name.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
                                             "required": true,
@@ -888,6 +888,34 @@
                                             "scopes": [
                                                 "https://www.googleapis.com/auth/cloud-platform"
                                             ]
+                                        },
+                                        "upgradeAppliance": {
+                                            "description": "Upgrades the appliance relate to this DatacenterConnector to the in-place updateable version.",
+                                            "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors/{datacenterConnectorsId}:upgradeAppliance",
+                                            "httpMethod": "POST",
+                                            "id": "vmmigration.projects.locations.sources.datacenterConnectors.upgradeAppliance",
+                                            "parameterOrder": [
+                                                "datacenterConnector"
+                                            ],
+                                            "parameters": {
+                                                "datacenterConnector": {
+                                                    "description": "Required. The DatacenterConnector name.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/datacenterConnectors/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1/{+datacenterConnector}:upgradeAppliance",
+                                            "request": {
+                                                "$ref": "UpgradeApplianceRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
                                         }
                                     }
                                 },
@@ -1820,7 +1848,7 @@
                                     ],
                                     "parameters": {
                                         "name": {
-                                            "description": "The name of the target project.",
+                                            "description": "Output only. The name of the target project.",
                                             "location": "path",
                                             "pattern": "^projects/[^/]+/locations/[^/]+/targetProjects/[^/]+$",
                                             "required": true,
@@ -1856,7 +1884,7 @@
             }
         }
     },
-    "revision": "20211229",
+    "revision": "20220203",
     "rootUrl": "https://vmmigration.googleapis.com/",
     "schemas": {
         "AddGroupMigrationRequest": {
@@ -1870,10 +1898,27 @@
             },
             "type": "object"
         },
-        "AddGroupMigrationResponse": {
-            "description": "Response message for 'AddGroupMigration' request.",
-            "id": "AddGroupMigrationResponse",
-            "properties": {},
+        "ApplianceVersion": {
+            "description": "Describes an appliance version.",
+            "id": "ApplianceVersion",
+            "properties": {
+                "critical": {
+                    "description": "Determine whether it's critical to upgrade the appliance to this version.",
+                    "type": "boolean"
+                },
+                "releaseNotesUri": {
+                    "description": "Link to a page that contains the version release notes.",
+                    "type": "string"
+                },
+                "uri": {
+                    "description": "A link for downloading the version.",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "The appliance version.",
+                    "type": "string"
+                }
+            },
             "type": "object"
         },
         "AppliedLicense": {
@@ -1903,30 +1948,33 @@
             },
             "type": "object"
         },
+        "AvailableUpdates": {
+            "description": "Holds informatiom about the available versions for upgrade.",
+            "id": "AvailableUpdates",
+            "properties": {
+                "inPlaceUpdate": {
+                    "$ref": "ApplianceVersion",
+                    "description": "The latest version for in place update. The current appliance can be updated to this version using the API or m4c CLI."
+                },
+                "newDeployableAppliance": {
+                    "$ref": "ApplianceVersion",
+                    "description": "The newest deployable version of the appliance. The current appliance can't be updated into this version, and the owner must manually deploy this OVA to a new appliance."
+                }
+            },
+            "type": "object"
+        },
         "CancelCloneJobRequest": {
             "description": "Request message for 'CancelCloneJob' request.",
             "id": "CancelCloneJobRequest",
             "properties": {},
             "type": "object"
         },
-        "CancelCloneJobResponse": {
-            "description": "Response message for 'CancelCloneJob' request.",
-            "id": "CancelCloneJobResponse",
-            "properties": {},
-            "type": "object"
-        },
         "CancelCutoverJobRequest": {
             "description": "Request message for 'CancelCutoverJob' request.",
             "id": "CancelCutoverJobRequest",
             "properties": {},
             "type": "object"
         },
-        "CancelCutoverJobResponse": {
-            "description": "Response message for 'CancelCutoverJob' request.",
-            "id": "CancelCutoverJobResponse",
-            "properties": {},
-            "type": "object"
-        },
         "CancelOperationRequest": {
             "description": "The request message for Operations.CancelOperation.",
             "id": "CancelOperationRequest",
@@ -1954,7 +2002,8 @@
                     "readOnly": true
                 },
                 "name": {
-                    "description": "The name of the clone.",
+                    "description": "Output only. The name of the clone.",
+                    "readOnly": true,
                     "type": "string"
                 },
                 "state": {
@@ -2358,6 +2407,21 @@
             "description": "DatacenterConnector message describes a connector between the Source and GCP, which is installed on a vmware datacenter (an OVA vm installed by the user) to connect the Datacenter to GCP and support vm migration data transfer.",
             "id": "DatacenterConnector",
             "properties": {
+                "applianceInfrastructureVersion": {
+                    "description": "Output only. Appliance OVA version. This is the OVA which is manually installed by the user and contains the infrastructure for the automatically updatable components on the appliance.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "applianceSoftwareVersion": {
+                    "description": "Output only. Appliance last installed update bundle version. This is the version of the automatically updatable components on the appliance.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "availableVersions": {
+                    "$ref": "AvailableUpdates",
+                    "description": "Output only. The available versions for updating this appliance.",
+                    "readOnly": true
+                },
                 "bucket": {
                     "description": "Output only. The communication channel between the datacenter connector and GCP.",
                     "readOnly": true,
@@ -2418,6 +2482,11 @@
                     "readOnly": true,
                     "type": "string"
                 },
+                "upgradeStatus": {
+                    "$ref": "UpgradeStatus",
+                    "description": "Output only. The status of the current / last upgradeAppliance operation.",
+                    "readOnly": true
+                },
                 "version": {
                     "description": "The version running in the DatacenterConnector. This is supplied by the OVA connector during the registration process and can not be modified.",
                     "type": "string"
@@ -2443,8 +2512,7 @@
                 },
                 "vmwareVms": {
                     "$ref": "VmwareVmsDetails",
-                    "description": "Output only. The description of the VMs in a Source of type Vmware.",
-                    "readOnly": true
+                    "description": "The description of the VMs in a Source of type Vmware."
                 }
             },
             "type": "object"
@@ -2455,12 +2523,6 @@
             "properties": {},
             "type": "object"
         },
-        "FinalizeMigrationResponse": {
-            "description": "Response message for 'FinalizeMigration' request.",
-            "id": "FinalizeMigrationResponse",
-            "properties": {},
-            "type": "object"
-        },
         "Group": {
             "description": "Describes message for 'Group' resource. The Group is a collections of several MigratingVms.",
             "id": "Group",
@@ -2480,7 +2542,8 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "The Group name.",
+                    "description": "Output only. The Group name.",
+                    "readOnly": true,
                     "type": "string"
                 },
                 "updateTime": {
@@ -2962,7 +3025,8 @@
                         "OS_ADAPTATION_ERROR",
                         "CLONE_ERROR",
                         "CUTOVER_ERROR",
-                        "UTILIZATION_REPORT_ERROR"
+                        "UTILIZATION_REPORT_ERROR",
+                        "APPLIANCE_UPGRADE_ERROR"
                     ],
                     "enumDescriptions": [
                         "Default value. This value is not used.",
@@ -2973,7 +3037,8 @@
                         "Migrate for Compute encountered an error during OS adaptation.",
                         "Migrate for Compute encountered an error in clone operation.",
                         "Migrate for Compute encountered an error in cutover operation.",
-                        "Migrate for Compute encountered an error during utilization report creation."
+                        "Migrate for Compute encountered an error during utilization report creation.",
+                        "Migrate for Compute encountered an error during appliance upgrade."
                     ],
                     "readOnly": true,
                     "type": "string"
@@ -3108,12 +3173,6 @@
             "properties": {},
             "type": "object"
         },
-        "PauseMigrationResponse": {
-            "description": "Response message for 'PauseMigration' request.",
-            "id": "PauseMigrationResponse",
-            "properties": {},
-            "type": "object"
-        },
         "RemoveGroupMigrationRequest": {
             "description": "Request message for 'RemoveMigration' request.",
             "id": "RemoveGroupMigrationRequest",
@@ -3125,12 +3184,6 @@
             },
             "type": "object"
         },
-        "RemoveGroupMigrationResponse": {
-            "description": "Response message for 'RemoveMigration' request.",
-            "id": "RemoveGroupMigrationResponse",
-            "properties": {},
-            "type": "object"
-        },
         "ReplicationCycle": {
             "description": "ReplicationCycle contains information about the current replication cycle status.",
             "id": "ReplicationCycle",
@@ -3166,12 +3219,6 @@
             "properties": {},
             "type": "object"
         },
-        "ResumeMigrationResponse": {
-            "description": "Response message for 'ResumeMigration' request.",
-            "id": "ResumeMigrationResponse",
-            "properties": {},
-            "type": "object"
-        },
         "SchedulePolicy": {
             "description": "A policy for scheduling replications.",
             "id": "SchedulePolicy",
@@ -3265,12 +3312,6 @@
             "properties": {},
             "type": "object"
         },
-        "StartMigrationResponse": {
-            "description": "Response message for 'StartMigration' request.",
-            "id": "StartMigrationResponse",
-            "properties": {},
-            "type": "object"
-        },
         "Status": {
             "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). 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).",
             "id": "Status",
@@ -3313,7 +3354,8 @@
                     "type": "string"
                 },
                 "name": {
-                    "description": "The name of the target project.",
+                    "description": "Output only. The name of the target project.",
+                    "readOnly": true,
                     "type": "string"
                 },
                 "project": {
@@ -3329,6 +3371,57 @@
             },
             "type": "object"
         },
+        "UpgradeApplianceRequest": {
+            "description": "Request message for 'UpgradeAppliance' request.",
+            "id": "UpgradeApplianceRequest",
+            "properties": {
+                "requestId": {
+                    "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "UpgradeStatus": {
+            "description": "UpgradeStatus contains information about upgradeAppliance operation.",
+            "id": "UpgradeStatus",
+            "properties": {
+                "error": {
+                    "$ref": "Status",
+                    "description": "Provides details on the state of the upgrade operation in case of an error."
+                },
+                "previousVersion": {
+                    "description": "The version from which we upgraded.",
+                    "type": "string"
+                },
+                "startTime": {
+                    "description": "The time the operation was started.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The state of the upgradeAppliance operation.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "RUNNING",
+                        "FAILED",
+                        "SUCCEEDED"
+                    ],
+                    "enumDescriptions": [
+                        "The state was not sampled by the health checks yet.",
+                        "The upgrade has started.",
+                        "The upgrade failed.",
+                        "The upgrade finished successfully."
+                    ],
+                    "type": "string"
+                },
+                "version": {
+                    "description": "The version to upgrade to.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "UtilizationReport": {
             "description": "Utilization report details the utilization (CPU, memory, etc.) of selected source VMs.",
             "id": "UtilizationReport",
@@ -3550,7 +3643,7 @@
                     "type": "string"
                 },
                 "guestDescription": {
-                    "description": "The VM's OS. See for example https://pubs.vmware.com/vi-sdk/visdk250/ReferenceGuide/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold.",
+                    "description": "The VM's OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold.",
                     "type": "string"
                 },
                 "memoryMb": {
diff --git a/discovery/googleapis/webfonts__v1.json b/discovery/googleapis/webfonts__v1.json
index 6a3db11..2571fc4 100644
--- a/discovery/googleapis/webfonts__v1.json
+++ b/discovery/googleapis/webfonts__v1.json
@@ -133,7 +133,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220215",
     "rootUrl": "https://webfonts.googleapis.com/",
     "schemas": {
         "Webfont": {
diff --git a/discovery/googleapis/webrisk__v1.json b/discovery/googleapis/webrisk__v1.json
index 3407b27..4272c10 100644
--- a/discovery/googleapis/webrisk__v1.json
+++ b/discovery/googleapis/webrisk__v1.json
@@ -444,7 +444,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220212",
     "rootUrl": "https://webrisk.googleapis.com/",
     "schemas": {
         "GoogleCloudWebriskV1ComputeThreatListDiffResponse": {
diff --git a/discovery/googleapis/websecurityscanner__v1.json b/discovery/googleapis/websecurityscanner__v1.json
index 6951a54..faf0ec4 100644
--- a/discovery/googleapis/websecurityscanner__v1.json
+++ b/discovery/googleapis/websecurityscanner__v1.json
@@ -524,7 +524,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220212",
     "rootUrl": "https://websecurityscanner.googleapis.com/",
     "schemas": {
         "Authentication": {
diff --git a/discovery/googleapis/workflowexecutions__v1.json b/discovery/googleapis/workflowexecutions__v1.json
index 45da606..91ba2bb 100644
--- a/discovery/googleapis/workflowexecutions__v1.json
+++ b/discovery/googleapis/workflowexecutions__v1.json
@@ -267,7 +267,7 @@
             }
         }
     },
-    "revision": "20220111",
+    "revision": "20220201",
     "rootUrl": "https://workflowexecutions.googleapis.com/",
     "schemas": {
         "CancelExecutionRequest": {
diff --git a/discovery/googleapis/workflows__v1.json b/discovery/googleapis/workflows__v1.json
index d9e4c4e..c270e35 100644
--- a/discovery/googleapis/workflows__v1.json
+++ b/discovery/googleapis/workflows__v1.json
@@ -442,7 +442,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220202",
     "rootUrl": "https://workflows.googleapis.com/",
     "schemas": {
         "Empty": {
diff --git a/discovery/googleapis/youtubeAnalytics__v2.json b/discovery/googleapis/youtubeAnalytics__v2.json
index 41a92b9..63eb82d 100644
--- a/discovery/googleapis/youtubeAnalytics__v2.json
+++ b/discovery/googleapis/youtubeAnalytics__v2.json
@@ -419,7 +419,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://youtubeanalytics.googleapis.com/",
     "schemas": {
         "EmptyResponse": {
diff --git a/discovery/googleapis/youtube__v3.json b/discovery/googleapis/youtube__v3.json
index 85a928a..c17839a 100644
--- a/discovery/googleapis/youtube__v3.json
+++ b/discovery/googleapis/youtube__v3.json
@@ -3787,7 +3787,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://youtube.googleapis.com/",
     "schemas": {
         "AbuseReport": {
diff --git a/discovery/googleapis/youtubereporting__v1.json b/discovery/googleapis/youtubereporting__v1.json
index 5ccb2e6..cc46477 100644
--- a/discovery/googleapis/youtubereporting__v1.json
+++ b/discovery/googleapis/youtubereporting__v1.json
@@ -410,7 +410,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://youtubereporting.googleapis.com/",
     "schemas": {
         "Empty": {
diff --git a/discovery/googleapis_beta/adexchangebuyer2__v2beta1.json b/discovery/googleapis_beta/adexchangebuyer2__v2beta1.json
index f805fe0..bd9806f 100644
--- a/discovery/googleapis_beta/adexchangebuyer2__v2beta1.json
+++ b/discovery/googleapis_beta/adexchangebuyer2__v2beta1.json
@@ -2567,7 +2567,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://adexchangebuyer.googleapis.com/",
     "schemas": {
         "AbsoluteDateRange": {
@@ -3527,7 +3527,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis_beta/alertcenter__v1beta1.json b/discovery/googleapis_beta/alertcenter__v1beta1.json
index 68c6a9b..e8d0fbd 100644
--- a/discovery/googleapis_beta/alertcenter__v1beta1.json
+++ b/discovery/googleapis_beta/alertcenter__v1beta1.json
@@ -421,7 +421,7 @@
             }
         }
     },
-    "revision": "20220116",
+    "revision": "20220131",
     "rootUrl": "https://alertcenter.googleapis.com/",
     "schemas": {
         "AccountSuspensionDetails": {
@@ -802,7 +802,8 @@
                         "RESOLVED",
                         "FALSE_POSITIVE",
                         "PARTIALLY_RESOLVED",
-                        "MERGED"
+                        "MERGED",
+                        "DOWNGRADED"
                     ],
                     "enumDescriptions": [
                         "Status is unspecified.",
@@ -811,7 +812,8 @@
                         "The incident has been resolved.",
                         "Further assessment indicated no customer impact.",
                         "The incident has been partially resolved.",
-                        "The incident was merged into a parent."
+                        "The incident was merged into a parent.",
+                        "The incident has lower impact than initially anticipated."
                     ],
                     "type": "string"
                 }
@@ -1287,7 +1289,7 @@
             "id": "MergeInfo",
             "properties": {
                 "newAlertId": {
-                    "description": "New alert ID. Reference the [google.apps.alertcenter.Alert] with this ID for the current state.",
+                    "description": "Optional. New alert ID. Reference the [google.apps.alertcenter.Alert] with this ID for the current state.",
                     "type": "string"
                 },
                 "newIncidentTrackingId": {
diff --git a/discovery/googleapis_beta/analyticsadmin__v1alpha.json b/discovery/googleapis_beta/analyticsadmin__v1alpha.json
index 815aa58..6c064ce 100644
--- a/discovery/googleapis_beta/analyticsadmin__v1alpha.json
+++ b/discovery/googleapis_beta/analyticsadmin__v1alpha.json
@@ -797,7 +797,7 @@
                     "parameterOrder": [],
                     "parameters": {
                         "filter": {
-                            "description": "Required. An expression for filtering the results of the request. Fields eligible for filtering are: `parent:`(The resource name of the parent account) or `ancestor:`(The resource name of the parent account) or `firebase_project:`(The id or number of the linked firebase project). Some examples of filters: ``` | Filter | Description | |-----------------------------|-------------------------------------------| | parent:accounts/123 | The account with account id: 123. | | ancestor:accounts/123 | The account with account id: 123. | | firebase_project:project-id | The firebase project with id: project-id. | | firebase_project:123 | The firebase project with number: 123. | ```",
+                            "description": "Required. An expression for filtering the results of the request. Fields eligible for filtering are: `parent:`(The resource name of the parent account/property) or `ancestor:`(The resource name of the parent account) or `firebase_project:`(The id or number of the linked firebase project). Some examples of filters: ``` | Filter | Description | |-----------------------------|-------------------------------------------| | parent:accounts/123 | The account with account id: 123. | | parent:properties/123 | The property with property id: 123. | | ancestor:accounts/123 | The account with account id: 123. | | firebase_project:project-id | The firebase project with id: project-id. | | firebase_project:123 | The firebase project with number: 123. | ```",
                             "location": "query",
                             "type": "string"
                         },
@@ -1572,6 +1572,32 @@
                                 "https://www.googleapis.com/auth/analytics.readonly"
                             ]
                         },
+                        "getGlobalSiteTag": {
+                            "description": "Returns the Site Tag for the specified web stream. Site Tags are immutable singletons.",
+                            "flatPath": "v1alpha/properties/{propertiesId}/dataStreams/{dataStreamsId}/globalSiteTag",
+                            "httpMethod": "GET",
+                            "id": "analyticsadmin.properties.dataStreams.getGlobalSiteTag",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Required. The name of the site tag to lookup. Note that site tags are singletons and do not have unique IDs. Format: properties/{property_id}/dataStreams/{stream_id}/globalSiteTag Example: \"properties/123/dataStreams/456/globalSiteTag\"",
+                                    "location": "path",
+                                    "pattern": "^properties/[^/]+/dataStreams/[^/]+/globalSiteTag$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v1alpha/{+name}",
+                            "response": {
+                                "$ref": "GoogleAnalyticsAdminV1alphaGlobalSiteTag"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/analytics.edit",
+                                "https://www.googleapis.com/auth/analytics.readonly"
+                            ]
+                        },
                         "list": {
                             "description": "Lists DataStreams on a property.",
                             "flatPath": "v1alpha/properties/{propertiesId}/dataStreams",
@@ -2858,32 +2884,6 @@
                                 "https://www.googleapis.com/auth/analytics.readonly"
                             ]
                         },
-                        "getGlobalSiteTag": {
-                            "description": "Returns the Site Tag for the specified web stream. Site Tags are immutable singletons.",
-                            "flatPath": "v1alpha/properties/{propertiesId}/webDataStreams/{webDataStreamsId}/globalSiteTag",
-                            "httpMethod": "GET",
-                            "id": "analyticsadmin.properties.webDataStreams.getGlobalSiteTag",
-                            "parameterOrder": [
-                                "name"
-                            ],
-                            "parameters": {
-                                "name": {
-                                    "description": "Required. The name of the site tag to lookup. Note that site tags are singletons and do not have unique IDs. Format: properties/{property_id}/webDataStreams/{stream_id}/globalSiteTag Example: \"properties/123/webDataStreams/456/globalSiteTag\"",
-                                    "location": "path",
-                                    "pattern": "^properties/[^/]+/webDataStreams/[^/]+/globalSiteTag$",
-                                    "required": true,
-                                    "type": "string"
-                                }
-                            },
-                            "path": "v1alpha/{+name}",
-                            "response": {
-                                "$ref": "GoogleAnalyticsAdminV1alphaGlobalSiteTag"
-                            },
-                            "scopes": [
-                                "https://www.googleapis.com/auth/analytics.edit",
-                                "https://www.googleapis.com/auth/analytics.readonly"
-                            ]
-                        },
                         "list": {
                             "description": "Returns child web data streams under the specified parent property. Web data streams will be excluded if the caller does not have access. Returns an empty list if no relevant web data streams are found.",
                             "flatPath": "v1alpha/properties/{propertiesId}/webDataStreams",
@@ -2960,7 +2960,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220215",
     "rootUrl": "https://analyticsadmin.googleapis.com/",
     "schemas": {
         "GoogleAnalyticsAdminV1alphaAccount": {
@@ -3869,11 +3869,11 @@
             "type": "object"
         },
         "GoogleAnalyticsAdminV1alphaGlobalSiteTag": {
-            "description": "Read-only resource with the tag for sending data from a website to a WebDataStream.",
+            "description": "Read-only resource with the tag for sending data from a website to a DataStream. Only present for web DataStream resources.",
             "id": "GoogleAnalyticsAdminV1alphaGlobalSiteTag",
             "properties": {
                 "name": {
-                    "description": "Output only. Resource name for this GlobalSiteTag resource. Format: properties/{propertyId}/globalSiteTag",
+                    "description": "Output only. Resource name for this GlobalSiteTag resource. Format: properties/{property_id}/dataStreams/{stream_id}/globalSiteTag Example: \"properties/123/dataStreams/456/globalSiteTag\"",
                     "readOnly": true,
                     "type": "string"
                 },
diff --git a/discovery/googleapis_beta/analyticsdata__v1beta.json b/discovery/googleapis_beta/analyticsdata__v1beta.json
index 25ab10c..9af6f0d 100644
--- a/discovery/googleapis_beta/analyticsdata__v1beta.json
+++ b/discovery/googleapis_beta/analyticsdata__v1beta.json
@@ -311,7 +311,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220215",
     "rootUrl": "https://analyticsdata.googleapis.com/",
     "schemas": {
         "ActiveMetricRestriction": {
diff --git a/discovery/googleapis_beta/area120tables__v1alpha1.json b/discovery/googleapis_beta/area120tables__v1alpha1.json
index 5b66afb..09c0c2a 100644
--- a/discovery/googleapis_beta/area120tables__v1alpha1.json
+++ b/discovery/googleapis_beta/area120tables__v1alpha1.json
@@ -584,7 +584,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://area120tables.googleapis.com/",
     "schemas": {
         "BatchCreateRowsRequest": {
diff --git a/discovery/googleapis_beta/bigqueryconnection__v1beta1.json b/discovery/googleapis_beta/bigqueryconnection__v1beta1.json
index d1d05f1..4df4930 100644
--- a/discovery/googleapis_beta/bigqueryconnection__v1beta1.json
+++ b/discovery/googleapis_beta/bigqueryconnection__v1beta1.json
@@ -393,7 +393,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220205",
     "rootUrl": "https://bigqueryconnection.googleapis.com/",
     "schemas": {
         "AuditConfig": {
diff --git a/discovery/googleapis_beta/clouderrorreporting__v1beta1.json b/discovery/googleapis_beta/clouderrorreporting__v1beta1.json
index 103f1f7..db1473c 100644
--- a/discovery/googleapis_beta/clouderrorreporting__v1beta1.json
+++ b/discovery/googleapis_beta/clouderrorreporting__v1beta1.json
@@ -429,7 +429,7 @@
             }
         }
     },
-    "revision": "20220119",
+    "revision": "20220203",
     "rootUrl": "https://clouderrorreporting.googleapis.com/",
     "schemas": {
         "DeleteEventsResponse": {
diff --git a/discovery/googleapis_beta/cloudfunctions__v2beta.json b/discovery/googleapis_beta/cloudfunctions__v2beta.json
new file mode 100644
index 0000000..0442290
--- /dev/null
+++ b/discovery/googleapis_beta/cloudfunctions__v2beta.json
@@ -0,0 +1,1727 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://cloudfunctions.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "Cloud Functions",
+    "description": "Manages lightweight user-provided functions executed in response to events.",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/functions",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "cloudfunctions:v2beta",
+    "kind": "discovery#restDescription",
+    "name": "cloudfunctions",
+    "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": {
+        "projects": {
+            "resources": {
+                "locations": {
+                    "methods": {
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "flatPath": "v2beta/projects/{projectsId}/locations",
+                            "httpMethod": "GET",
+                            "id": "cloudfunctions.projects.locations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like \"displayName=tokyo\", and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The maximum number of results to return. If not set, the service selects a default.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2beta/{+name}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "functions": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates a new function. If a function with the given name already exists in the specified project, the long running operation will return `ALREADY_EXISTS` error.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions",
+                                    "httpMethod": "POST",
+                                    "id": "cloudfunctions.projects.locations.functions.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "functionId": {
+                                            "description": "The ID to use for the function, which will become the final component of the function's resource name. This value should be 4-63 characters, and valid characters are /a-z-/.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The project and location in which the function should be created, specified in the format `projects/*/locations/*`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+parent}/functions",
+                                    "request": {
+                                        "$ref": "Function"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Deletes a function with the given name from the specified project. If the given function is used by some trigger, the trigger will be updated to remove this function.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "cloudfunctions.projects.locations.functions.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the function which should be deleted.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "generateDownloadUrl": {
+                                    "description": "Returns a signed URL for downloading deployed function source code. The URL is only valid for a limited period and should be used within 30 minutes of generation. For more information about the signed URL usage see: https://cloud.google.com/storage/docs/access-control/signed-urls",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:generateDownloadUrl",
+                                    "httpMethod": "POST",
+                                    "id": "cloudfunctions.projects.locations.functions.generateDownloadUrl",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of function for which source code Google Cloud Storage signed URL should be generated.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+name}:generateDownloadUrl",
+                                    "request": {
+                                        "$ref": "GenerateDownloadUrlRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "GenerateDownloadUrlResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "generateUploadUrl": {
+                                    "description": "Returns a signed URL for uploading a function source code. For more information about the signed URL usage see: https://cloud.google.com/storage/docs/access-control/signed-urls. Once the function source code upload is complete, the used signed URL should be provided in CreateFunction or UpdateFunction request as a reference to the function source code. When uploading source code to the generated signed URL, please follow these restrictions: * Source file type should be a zip file. * No credentials should be attached - the signed URLs provide access to the target bucket using internal service identity; if credentials were attached, the identity from the credentials would be used, but that identity does not have permissions to upload files to the URL. When making a HTTP PUT request, these two headers need to be specified: * `content-type: application/zip` And this header SHOULD NOT be specified: * `Authorization: Bearer YOUR_TOKEN`",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions:generateUploadUrl",
+                                    "httpMethod": "POST",
+                                    "id": "cloudfunctions.projects.locations.functions.generateUploadUrl",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "parent": {
+                                            "description": "Required. The project and location in which the Google Cloud Storage signed URL should be generated, specified in the format `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+parent}/functions:generateUploadUrl",
+                                    "request": {
+                                        "$ref": "GenerateUploadUrlRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "GenerateUploadUrlResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "Returns a function with the given name from the requested project.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}",
+                                    "httpMethod": "GET",
+                                    "id": "cloudfunctions.projects.locations.functions.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the function which details should be obtained.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+name}",
+                                    "response": {
+                                        "$ref": "Function"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "getIamPolicy": {
+                                    "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:getIamPolicy",
+                                    "httpMethod": "GET",
+                                    "id": "cloudfunctions.projects.locations.functions.getIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "options.requestedPolicyVersion": {
+                                            "description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+resource}:getIamPolicy",
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Returns a list of functions that belong to the requested project.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions",
+                                    "httpMethod": "GET",
+                                    "id": "cloudfunctions.projects.locations.functions.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "The filter for Functions that match the filter expression, following the syntax outlined in https://google.aip.dev/160.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "The sorting order of the resources returned. Value should be a comma separated list of fields. The default sorting oder is ascending. See https://google.aip.dev/132#ordering.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "Maximum number of functions to return per call.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "The value returned by the last `ListFunctionsResponse`; indicates that this is a continuation of a prior `ListFunctions` call, and that the system should return the next page of data.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The project and location from which the function should be listed, specified in the format `projects/*/locations/*` If you want to list functions in all locations, use \"-\" in place of a location. When listing functions in all locations, if one or more location(s) are unreachable, the response will contain functions from all reachable locations along with the names of any unreachable locations.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+parent}/functions",
+                                    "response": {
+                                        "$ref": "ListFunctionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "patch": {
+                                    "description": "Updates existing function.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}",
+                                    "httpMethod": "PATCH",
+                                    "id": "cloudfunctions.projects.locations.functions.patch",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "updateMask": {
+                                            "description": "The list of fields to be updated. If no field mask is provided, all provided fields in the request will be updated.",
+                                            "format": "google-fieldmask",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+name}",
+                                    "request": {
+                                        "$ref": "Function"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "setIamPolicy": {
+                                    "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:setIamPolicy",
+                                    "httpMethod": "POST",
+                                    "id": "cloudfunctions.projects.locations.functions.setIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+resource}:setIamPolicy",
+                                    "request": {
+                                        "$ref": "SetIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Policy"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "testIamPermissions": {
+                                    "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:testIamPermissions",
+                                    "httpMethod": "POST",
+                                    "id": "cloudfunctions.projects.locations.functions.testIamPermissions",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+resource}:testIamPermissions",
+                                    "request": {
+                                        "$ref": "TestIamPermissionsRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "TestIamPermissionsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "operations": {
+                            "methods": {
+                                "get": {
+                                    "description": "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.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                                    "httpMethod": "GET",
+                                    "id": "cloudfunctions.projects.locations.operations.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding allows API services to override the binding to use different resource name schemes, such as `users/*/operations`. To override the binding, API services can add a binding such as `\"/v1/{name=users/*}/operations\"` to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/operations",
+                                    "httpMethod": "GET",
+                                    "id": "cloudfunctions.projects.locations.operations.list",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "Required. A filter for matching the requested operations. The supported formats of *filter* are: To query for a specific function: project:*,location:*,function:* To query for all of the latest operations for a project: project:*,latest:true",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "Must not be set.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "The maximum number of records that should be returned. Requested page size cannot exceed 100. If not set, the default page size is 100. Pagination is only supported when querying for a specific function.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "Token identifying which result to start with, which is returned by a previous list call. Pagination is only supported when querying for a specific function.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+name}/operations",
+                                    "response": {
+                                        "$ref": "ListOperationsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "runtimes": {
+                            "methods": {
+                                "list": {
+                                    "description": "Returns a list of runtimes that are supported for the requested project.",
+                                    "flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/runtimes",
+                                    "httpMethod": "GET",
+                                    "id": "cloudfunctions.projects.locations.runtimes.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "The filter for Runtimes that match the filter expression, following the syntax outlined in https://google.aip.dev/160.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The project and location from which the runtimes should be listed, specified in the format `projects/*/locations/*`",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2beta/{+parent}/runtimes",
+                                    "response": {
+                                        "$ref": "ListRuntimesResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "20220203",
+    "rootUrl": "https://cloudfunctions.googleapis.com/",
+    "schemas": {
+        "AuditConfig": {
+            "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
+            "id": "AuditConfig",
+            "properties": {
+                "auditLogConfigs": {
+                    "description": "The configuration for logging of each type of permission.",
+                    "items": {
+                        "$ref": "AuditLogConfig"
+                    },
+                    "type": "array"
+                },
+                "service": {
+                    "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "AuditLogConfig": {
+            "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+            "id": "AuditLogConfig",
+            "properties": {
+                "exemptedMembers": {
+                    "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "logType": {
+                    "description": "The log type that this config enables.",
+                    "enum": [
+                        "LOG_TYPE_UNSPECIFIED",
+                        "ADMIN_READ",
+                        "DATA_WRITE",
+                        "DATA_READ"
+                    ],
+                    "enumDescriptions": [
+                        "Default case. Should never be this.",
+                        "Admin reads. Example: CloudIAM getIamPolicy",
+                        "Data writes. Example: CloudSQL Users create",
+                        "Data reads. Example: CloudSQL Users list"
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Binding": {
+            "description": "Associates `members`, or principals, with a `role`.",
+            "id": "Binding",
+            "properties": {
+                "condition": {
+                    "$ref": "Expr",
+                    "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+                },
+                "members": {
+                    "description": "Specifies the principals requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. ",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
+                "role": {
+                    "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "BuildConfig": {
+            "description": "Describes the Build step of the function that builds a container from the given source.",
+            "id": "BuildConfig",
+            "properties": {
+                "build": {
+                    "description": "Output only. The Cloud Build name of the latest successful deployment of the function.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "dockerRepository": {
+                    "description": "Optional. User managed repository created in Artifact Registry optionally with a customer managed encryption key. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. If unspecified, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'.",
+                    "type": "string"
+                },
+                "entryPoint": {
+                    "description": "The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix, if not specified. For backward compatibility, if function with given name is not found, then the system will try to use function named \"function\". For Node.js this is name of a function exported by the module specified in `source_location`.",
+                    "type": "string"
+                },
+                "environmentVariables": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "User-provided build-time environment variables for the function",
+                    "type": "object"
+                },
+                "runtime": {
+                    "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime).",
+                    "type": "string"
+                },
+                "source": {
+                    "$ref": "Source",
+                    "description": "The location of the function source code."
+                },
+                "sourceProvenance": {
+                    "$ref": "SourceProvenance",
+                    "description": "Output only. A permanent fixed identifier for source.",
+                    "readOnly": true
+                },
+                "workerPool": {
+                    "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the function. The format of this field is `projects/{project}/locations/{region}/workerPools/{workerPool}` where {project} and {region} are the project id and region respectively where the worker pool is defined and {workerPool} is the short name of the worker pool. If the project id is not the same as the function, then the Cloud Functions Service Agent (service-@gcf-admin-robot.iam.gserviceaccount.com) must be granted the role Cloud Build Custom Workers Builder (roles/cloudbuild.customworkers.builder) in the project.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EventFilter": {
+            "description": "Filters events based on exact matches on the CloudEvents attributes.",
+            "id": "EventFilter",
+            "properties": {
+                "attribute": {
+                    "description": "Required. The name of a CloudEvents attribute.",
+                    "type": "string"
+                },
+                "value": {
+                    "description": "Required. The value for the attribute.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "EventTrigger": {
+            "description": "Describes EventTrigger, used to request events to be sent from another service.",
+            "id": "EventTrigger",
+            "properties": {
+                "eventFilters": {
+                    "description": "Criteria used to filter events.",
+                    "items": {
+                        "$ref": "EventFilter"
+                    },
+                    "type": "array"
+                },
+                "eventType": {
+                    "description": "Required. The type of event to observe. For example: `google.cloud.audit.log.v1.written` or `google.cloud.pubsub.topic.v1.messagePublished`.",
+                    "type": "string"
+                },
+                "pubsubTopic": {
+                    "description": "Optional. The name of a Pub/Sub topic in the same project that will be used as the transport topic for the event delivery. Format: `projects/{project}/topics/{topic}`. This is only valid for events of type `google.cloud.pubsub.topic.v1.messagePublished`. The topic provided here will not be deleted at function deletion.",
+                    "type": "string"
+                },
+                "retryPolicy": {
+                    "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them).",
+                    "enum": [
+                        "RETRY_POLICY_UNSPECIFIED",
+                        "RETRY_POLICY_DO_NOT_RETRY",
+                        "RETRY_POLICY_RETRY"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "Do not retry.",
+                        "Retry on any failure, retry up to 7 days with an exponential backoff (capped at 10 seconds)."
+                    ],
+                    "type": "string"
+                },
+                "serviceAccountEmail": {
+                    "description": "Optional. The email of the trigger's service account. The service account must have permission to invoke Cloud Run services, the permission is `run.routes.invoke`. If empty, defaults to the Compute Engine default service account: `{project_number}-compute@developer.gserviceaccount.com`.",
+                    "type": "string"
+                },
+                "trigger": {
+                    "description": "Output only. The resource name of the Eventarc trigger. The format of this field is `projects/{project}/locations/{region}/triggers/{trigger}`.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "triggerRegion": {
+                    "description": "The region that the trigger will be in. The trigger will only receive events originating in this region. It can be the same region as the function, a different region or multi-region, or the global region. If not provided, defaults to the same region as the function.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Expr": {
+            "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+            "id": "Expr",
+            "properties": {
+                "description": {
+                    "description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+                    "type": "string"
+                },
+                "expression": {
+                    "description": "Textual representation of an expression in Common Expression Language syntax.",
+                    "type": "string"
+                },
+                "location": {
+                    "description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+                    "type": "string"
+                },
+                "title": {
+                    "description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Function": {
+            "description": "Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations.",
+            "id": "Function",
+            "properties": {
+                "buildConfig": {
+                    "$ref": "BuildConfig",
+                    "description": "Describes the Build step of the function that builds a container from the given source."
+                },
+                "description": {
+                    "description": "User-provided description of a function.",
+                    "type": "string"
+                },
+                "environment": {
+                    "description": "Describe whether the function is gen1 or gen2.",
+                    "enum": [
+                        "ENVIRONMENT_UNSPECIFIED",
+                        "GEN_1",
+                        "GEN_2"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified",
+                        "Gen 1",
+                        "Gen 2"
+                    ],
+                    "type": "string"
+                },
+                "eventTrigger": {
+                    "$ref": "EventTrigger",
+                    "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Labels associated with this Cloud Function.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`",
+                    "type": "string"
+                },
+                "serviceConfig": {
+                    "$ref": "ServiceConfig",
+                    "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
+                },
+                "state": {
+                    "description": "Output only. State of the function.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ACTIVE",
+                        "FAILED",
+                        "DEPLOYING",
+                        "DELETING",
+                        "UNKNOWN"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid state.",
+                        "Function has been successfully deployed and is serving.",
+                        "Function deployment failed and the function isn’t serving.",
+                        "Function is being created or updated.",
+                        "Function is being deleted.",
+                        "Function deployment failed and the function serving state is undefined. The function should be updated or deleted to move it out of this state."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "stateMessages": {
+                    "description": "Output only. State Messages for this Cloud Function.",
+                    "items": {
+                        "$ref": "GoogleCloudFunctionsV2betaStateMessage"
+                    },
+                    "readOnly": true,
+                    "type": "array"
+                },
+                "updateTime": {
+                    "description": "Output only. The last update timestamp of a Cloud Function.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GenerateDownloadUrlRequest": {
+            "description": "Request of `GenerateDownloadUrl` method.",
+            "id": "GenerateDownloadUrlRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "GenerateDownloadUrlResponse": {
+            "description": "Response of `GenerateDownloadUrl` method.",
+            "id": "GenerateDownloadUrlResponse",
+            "properties": {
+                "downloadUrl": {
+                    "description": "The generated Google Cloud Storage signed URL that should be used for function source code download.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GenerateUploadUrlRequest": {
+            "description": "Request of `GenerateSourceUploadUrl` method.",
+            "id": "GenerateUploadUrlRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "GenerateUploadUrlResponse": {
+            "description": "Response of `GenerateSourceUploadUrl` method.",
+            "id": "GenerateUploadUrlResponse",
+            "properties": {
+                "storageSource": {
+                    "$ref": "StorageSource",
+                    "description": "The location of the source code in the upload bucket. Once the archive is uploaded using the `upload_url` use this field to set the `function.build_config.source.storage_source` during CreateFunction and UpdateFunction. Generation defaults to 0, as Cloud Storage provides a new generation only upon uploading a new object or version of an object."
+                },
+                "uploadUrl": {
+                    "description": "The generated Google Cloud Storage signed URL that should be used for a function source code upload. The uploaded file should be a zip archive which contains a function.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2alphaOperationMetadata": {
+            "description": "Represents the metadata of the long-running operation.",
+            "id": "GoogleCloudFunctionsV2alphaOperationMetadata",
+            "properties": {
+                "apiVersion": {
+                    "description": "API version used to start the operation.",
+                    "type": "string"
+                },
+                "cancelRequested": {
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+                    "type": "boolean"
+                },
+                "createTime": {
+                    "description": "The time the operation was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "The time the operation finished running.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "requestResource": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The original request that started the operation.",
+                    "type": "object"
+                },
+                "stages": {
+                    "description": "Mechanism for reporting in-progress stages",
+                    "items": {
+                        "$ref": "GoogleCloudFunctionsV2alphaStage"
+                    },
+                    "type": "array"
+                },
+                "statusDetail": {
+                    "description": "Human-readable status of the operation, if any.",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Server-defined resource path for the target of the operation.",
+                    "type": "string"
+                },
+                "verb": {
+                    "description": "Name of the verb executed by the operation.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2alphaStage": {
+            "description": "Each Stage of the deployment process",
+            "id": "GoogleCloudFunctionsV2alphaStage",
+            "properties": {
+                "message": {
+                    "description": "Message describing the Stage",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the Stage. This will be unique for each Stage.",
+                    "enum": [
+                        "NAME_UNSPECIFIED",
+                        "ARTIFACT_REGISTRY",
+                        "BUILD",
+                        "SERVICE",
+                        "TRIGGER",
+                        "SERVICE_ROLLBACK",
+                        "TRIGGER_ROLLBACK"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid name.",
+                        "Artifact Regsitry Stage",
+                        "Build Stage",
+                        "Service Stage",
+                        "Trigger Stage",
+                        "Service Rollback Stage",
+                        "Trigger Rollback Stage"
+                    ],
+                    "type": "string"
+                },
+                "resource": {
+                    "description": "Resource of the Stage",
+                    "type": "string"
+                },
+                "resourceUri": {
+                    "description": "Link to the current Stage resource",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Current state of the Stage",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "NOT_STARTED",
+                        "IN_PROGRESS",
+                        "COMPLETE"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid state.",
+                        "Stage has not started.",
+                        "Stage is in progress.",
+                        "Stage has completed."
+                    ],
+                    "type": "string"
+                },
+                "stateMessages": {
+                    "description": "State messages from the current Stage.",
+                    "items": {
+                        "$ref": "GoogleCloudFunctionsV2alphaStateMessage"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2alphaStateMessage": {
+            "description": "Informational messages about the state of the Cloud Function or Operation.",
+            "id": "GoogleCloudFunctionsV2alphaStateMessage",
+            "properties": {
+                "message": {
+                    "description": "The message.",
+                    "type": "string"
+                },
+                "severity": {
+                    "description": "Severity of the state message.",
+                    "enum": [
+                        "SEVERITY_UNSPECIFIED",
+                        "ERROR",
+                        "WARNING",
+                        "INFO"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid severity.",
+                        "ERROR-level severity.",
+                        "WARNING-level severity.",
+                        "INFO-level severity."
+                    ],
+                    "type": "string"
+                },
+                "type": {
+                    "description": "One-word CamelCase type of the state message.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2betaOperationMetadata": {
+            "description": "Represents the metadata of the long-running operation.",
+            "id": "GoogleCloudFunctionsV2betaOperationMetadata",
+            "properties": {
+                "apiVersion": {
+                    "description": "API version used to start the operation.",
+                    "type": "string"
+                },
+                "cancelRequested": {
+                    "description": "Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+                    "type": "boolean"
+                },
+                "createTime": {
+                    "description": "The time the operation was created.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "The time the operation finished running.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "requestResource": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The original request that started the operation.",
+                    "type": "object"
+                },
+                "stages": {
+                    "description": "Mechanism for reporting in-progress stages",
+                    "items": {
+                        "$ref": "GoogleCloudFunctionsV2betaStage"
+                    },
+                    "type": "array"
+                },
+                "statusDetail": {
+                    "description": "Human-readable status of the operation, if any.",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Server-defined resource path for the target of the operation.",
+                    "type": "string"
+                },
+                "verb": {
+                    "description": "Name of the verb executed by the operation.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2betaStage": {
+            "description": "Each Stage of the deployment process",
+            "id": "GoogleCloudFunctionsV2betaStage",
+            "properties": {
+                "message": {
+                    "description": "Message describing the Stage",
+                    "type": "string"
+                },
+                "name": {
+                    "description": "Name of the Stage. This will be unique for each Stage.",
+                    "enum": [
+                        "NAME_UNSPECIFIED",
+                        "ARTIFACT_REGISTRY",
+                        "BUILD",
+                        "SERVICE",
+                        "TRIGGER",
+                        "SERVICE_ROLLBACK",
+                        "TRIGGER_ROLLBACK"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid name.",
+                        "Artifact Regsitry Stage",
+                        "Build Stage",
+                        "Service Stage",
+                        "Trigger Stage",
+                        "Service Rollback Stage",
+                        "Trigger Rollback Stage"
+                    ],
+                    "type": "string"
+                },
+                "resource": {
+                    "description": "Resource of the Stage",
+                    "type": "string"
+                },
+                "resourceUri": {
+                    "description": "Link to the current Stage resource",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "Current state of the Stage",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "NOT_STARTED",
+                        "IN_PROGRESS",
+                        "COMPLETE"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid state.",
+                        "Stage has not started.",
+                        "Stage is in progress.",
+                        "Stage has completed."
+                    ],
+                    "type": "string"
+                },
+                "stateMessages": {
+                    "description": "State messages from the current Stage.",
+                    "items": {
+                        "$ref": "GoogleCloudFunctionsV2betaStateMessage"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudFunctionsV2betaStateMessage": {
+            "description": "Informational messages about the state of the Cloud Function or Operation.",
+            "id": "GoogleCloudFunctionsV2betaStateMessage",
+            "properties": {
+                "message": {
+                    "description": "The message.",
+                    "type": "string"
+                },
+                "severity": {
+                    "description": "Severity of the state message.",
+                    "enum": [
+                        "SEVERITY_UNSPECIFIED",
+                        "ERROR",
+                        "WARNING",
+                        "INFO"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified. Invalid severity.",
+                        "ERROR-level severity.",
+                        "WARNING-level severity.",
+                        "INFO-level severity."
+                    ],
+                    "type": "string"
+                },
+                "type": {
+                    "description": "One-word CamelCase type of the state message.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListFunctionsResponse": {
+            "description": "Response for the `ListFunctions` method.",
+            "id": "ListFunctionsResponse",
+            "properties": {
+                "functions": {
+                    "description": "The functions that match the request.",
+                    "items": {
+                        "$ref": "Function"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+                    "type": "string"
+                },
+                "unreachable": {
+                    "description": "Locations that could not be reached. The response does not include any functions from these locations.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListLocationsResponse": {
+            "description": "The response message for Locations.ListLocations.",
+            "id": "ListLocationsResponse",
+            "properties": {
+                "locations": {
+                    "description": "A list of locations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Location"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ListRuntimesResponse": {
+            "description": "Response for the `ListRuntimes` method.",
+            "id": "ListRuntimesResponse",
+            "properties": {
+                "runtimes": {
+                    "description": "The runtimes that match the request.",
+                    "items": {
+                        "$ref": "Runtime"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Location": {
+            "description": "A resource that represents Google Cloud Platform location.",
+            "id": "Location",
+            "properties": {
+                "displayName": {
+                    "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+                    "type": "object"
+                },
+                "locationId": {
+                    "description": "The canonical id for this location. For example: `\"us-east1\"`.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata. For example the available capacity at the given location.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a network API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "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.",
+                    "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 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.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "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}`.",
+                    "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 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`.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadataV1": {
+            "description": "Metadata describing an Operation",
+            "id": "OperationMetadataV1",
+            "properties": {
+                "buildId": {
+                    "description": "The Cloud Build ID of the function created or updated by an API call. This field is only populated for Create and Update operations.",
+                    "type": "string"
+                },
+                "buildName": {
+                    "description": "The Cloud Build Name of the function deployment. This field is only populated for Create and Update operations. `projects//locations//builds/`.",
+                    "type": "string"
+                },
+                "request": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "The original request that started the operation.",
+                    "type": "object"
+                },
+                "sourceToken": {
+                    "description": "An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments.",
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Target of the operation - for example `projects/project-1/locations/region-1/functions/function-1`",
+                    "type": "string"
+                },
+                "type": {
+                    "description": "Type of operation.",
+                    "enum": [
+                        "OPERATION_UNSPECIFIED",
+                        "CREATE_FUNCTION",
+                        "UPDATE_FUNCTION",
+                        "DELETE_FUNCTION"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown operation type.",
+                        "Triggered by CreateFunction call",
+                        "Triggered by UpdateFunction call",
+                        "Triggered by DeleteFunction call."
+                    ],
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "The last update timestamp of the operation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "versionId": {
+                    "description": "Version id of the function created or updated by an API call. This field is only populated for Create and Update operations.",
+                    "format": "int64",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Policy": {
+            "description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+            "id": "Policy",
+            "properties": {
+                "auditConfigs": {
+                    "description": "Specifies cloud audit logging configuration for this policy.",
+                    "items": {
+                        "$ref": "AuditConfig"
+                    },
+                    "type": "array"
+                },
+                "bindings": {
+                    "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+                    "items": {
+                        "$ref": "Binding"
+                    },
+                    "type": "array"
+                },
+                "etag": {
+                    "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+                    "format": "byte",
+                    "type": "string"
+                },
+                "version": {
+                    "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+                    "format": "int32",
+                    "type": "integer"
+                }
+            },
+            "type": "object"
+        },
+        "RepoSource": {
+            "description": "Location of the source in a Google Cloud Source Repository.",
+            "id": "RepoSource",
+            "properties": {
+                "branchName": {
+                    "description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax",
+                    "type": "string"
+                },
+                "commitSha": {
+                    "description": "Explicit commit SHA to build.",
+                    "type": "string"
+                },
+                "dir": {
+                    "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution. eg. helloworld (no leading slash allowed)",
+                    "type": "string"
+                },
+                "invertRegex": {
+                    "description": "Only trigger a build if the revision regex does NOT match the revision regex.",
+                    "type": "boolean"
+                },
+                "projectId": {
+                    "description": "ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.",
+                    "type": "string"
+                },
+                "repoName": {
+                    "description": "Name of the Cloud Source Repository.",
+                    "type": "string"
+                },
+                "tagName": {
+                    "description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Runtime": {
+            "description": "Describes a runtime and any special information (e.g., deprecation status) related to it.",
+            "id": "Runtime",
+            "properties": {
+                "displayName": {
+                    "description": "The user facing name, eg 'Go 1.13', 'Node.js 12', etc.",
+                    "type": "string"
+                },
+                "environment": {
+                    "description": "The environment for the runtime.",
+                    "enum": [
+                        "ENVIRONMENT_UNSPECIFIED",
+                        "GEN_1",
+                        "GEN_2"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified",
+                        "Gen 1",
+                        "Gen 2"
+                    ],
+                    "type": "string"
+                },
+                "name": {
+                    "description": "The name of the runtime, e.g., 'go113', 'nodejs12', etc.",
+                    "type": "string"
+                },
+                "stage": {
+                    "description": "The stage of life this runtime is in, e.g., BETA, GA, etc.",
+                    "enum": [
+                        "RUNTIME_STAGE_UNSPECIFIED",
+                        "DEVELOPMENT",
+                        "ALPHA",
+                        "BETA",
+                        "GA",
+                        "DEPRECATED",
+                        "DECOMMISSIONED"
+                    ],
+                    "enumDescriptions": [
+                        "Not specified.",
+                        "The runtime is in development.",
+                        "The runtime is in the Alpha stage.",
+                        "The runtime is in the Beta stage.",
+                        "The runtime is generally available.",
+                        "The runtime is deprecated.",
+                        "The runtime is no longer supported."
+                    ],
+                    "type": "string"
+                },
+                "warnings": {
+                    "description": "Warning messages, e.g., a deprecation warning.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "ServiceConfig": {
+            "description": "Describes the Service being deployed. Currently Supported : Cloud Run (fully managed).",
+            "id": "ServiceConfig",
+            "properties": {
+                "allTrafficOnLatestRevision": {
+                    "description": "Whether 100% of traffic is routed to the latest revision. On CreateFunction and UpdateFunction, when set to true, the revision being deployed will serve 100% of traffic, ignoring any traffic split settings, if any. On GetFunction, true will be returned if the latest revision is serving 100% of traffic.",
+                    "type": "boolean"
+                },
+                "availableMemory": {
+                    "description": "The amount of memory available for a function. Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is supplied the value is interpreted as bytes. See https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go a full description.",
+                    "type": "string"
+                },
+                "environmentVariables": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Environment variables that shall be available during function execution.",
+                    "type": "object"
+                },
+                "ingressSettings": {
+                    "description": "The ingress settings for the function, controlling what traffic can reach it.",
+                    "enum": [
+                        "INGRESS_SETTINGS_UNSPECIFIED",
+                        "ALLOW_ALL",
+                        "ALLOW_INTERNAL_ONLY",
+                        "ALLOW_INTERNAL_AND_GCLB"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Allow HTTP traffic from public and private sources.",
+                        "Allow HTTP traffic from only private VPC sources.",
+                        "Allow HTTP traffic from private VPC sources and through GCLB."
+                    ],
+                    "type": "string"
+                },
+                "maxInstanceCount": {
+                    "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "minInstanceCount": {
+                    "description": "The limit on the minimum number of function instances that may coexist at a given time. Function instances are kept in idle state for a short period after they finished executing the request to reduce cold start time for subsequent requests. Setting a minimum instance count will ensure that the given number of instances are kept running in idle state always. This can help with cold start times when jump in incoming request count occurs after the idle instance would have been stopped in the default case.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "service": {
+                    "description": "Output only. Name of the service associated with a Function. The format of this field is `projects/{project}/locations/{region}/services/{service}`",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "serviceAccountEmail": {
+                    "description": "The email of the service's service account. If empty, defaults to `{project_number}-compute@developer.gserviceaccount.com`.",
+                    "type": "string"
+                },
+                "timeoutSeconds": {
+                    "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds.",
+                    "format": "int32",
+                    "type": "integer"
+                },
+                "uri": {
+                    "description": "Output only. URI of the Service deployed.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "vpcConnector": {
+                    "description": "The Serverless VPC Access connector that this cloud function can connect to. The format of this field is `projects/*/locations/*/connectors/*`.",
+                    "type": "string"
+                },
+                "vpcConnectorEgressSettings": {
+                    "description": "The egress settings for the connector, controlling what traffic is diverted through it.",
+                    "enum": [
+                        "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED",
+                        "PRIVATE_RANGES_ONLY",
+                        "ALL_TRAFFIC"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified.",
+                        "Use the VPC Access Connector only for private IP space from RFC1918.",
+                        "Force the use of VPC Access Connector for all egress traffic from the function."
+                    ],
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "SetIamPolicyRequest": {
+            "description": "Request message for `SetIamPolicy` method.",
+            "id": "SetIamPolicyRequest",
+            "properties": {
+                "policy": {
+                    "$ref": "Policy",
+                    "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them."
+                },
+                "updateMask": {
+                    "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+                    "format": "google-fieldmask",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Source": {
+            "description": "The location of the function source code.",
+            "id": "Source",
+            "properties": {
+                "repoSource": {
+                    "$ref": "RepoSource",
+                    "description": "If provided, get the source from this location in a Cloud Source Repository."
+                },
+                "storageSource": {
+                    "$ref": "StorageSource",
+                    "description": "If provided, get the source from this location in Google Cloud Storage."
+                }
+            },
+            "type": "object"
+        },
+        "SourceProvenance": {
+            "description": "Provenance of the source. Ways to find the original source, or verify that some source was used for this build.",
+            "id": "SourceProvenance",
+            "properties": {
+                "resolvedRepoSource": {
+                    "$ref": "RepoSource",
+                    "description": "A copy of the build's `source.repo_source`, if exists, with any revisions resolved."
+                },
+                "resolvedStorageSource": {
+                    "$ref": "StorageSource",
+                    "description": "A copy of the build's `source.storage_source`, if exists, with any generations resolved."
+                }
+            },
+            "type": "object"
+        },
+        "Status": {
+            "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). 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).",
+            "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 message 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 user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "StorageSource": {
+            "description": "Location of the source in an archive file in Google Cloud Storage.",
+            "id": "StorageSource",
+            "properties": {
+                "bucket": {
+                    "description": "Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).",
+                    "type": "string"
+                },
+                "generation": {
+                    "description": "Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.",
+                    "format": "int64",
+                    "type": "string"
+                },
+                "object": {
+                    "description": "Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsRequest": {
+            "description": "Request message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsRequest",
+            "properties": {
+                "permissions": {
+                    "description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "TestIamPermissionsResponse": {
+            "description": "Response message for `TestIamPermissions` method.",
+            "id": "TestIamPermissionsResponse",
+            "properties": {
+                "permissions": {
+                    "description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "Cloud Functions API",
+    "version": "v2beta",
+    "version_module": true
+}
\ No newline at end of file
diff --git a/discovery/googleapis_beta/cloudsupport__v2beta.json b/discovery/googleapis_beta/cloudsupport__v2beta.json
index f4e187d..557543f 100644
--- a/discovery/googleapis_beta/cloudsupport__v2beta.json
+++ b/discovery/googleapis_beta/cloudsupport__v2beta.json
@@ -296,11 +296,6 @@
                             "location": "query",
                             "type": "string"
                         },
-                        "orderBy": {
-                            "description": "A comma separated list of fields to order by, followed by `asc` or `desc` postfix. This list is case-insensitive, default sorting order is ascending, redundant space characters are insignificant. Example: `name asc,update_time, create_time desc`",
-                            "location": "query",
-                            "type": "string"
-                        },
                         "pageSize": {
                             "description": "The maximum number of cases fetched with each request. Defaults to 10.",
                             "format": "int32",
@@ -329,7 +324,7 @@
                     ]
                 },
                 "patch": {
-                    "description": "Update the specified case. Only a subset of fields (display_name, description, time_zone, subscriber_email_addresses, related_resources, severity, primary_contact, and labels) can be updated.",
+                    "description": "Update the specified case. Only a subset of fields (display_name, description, time_zone, subscriber_email_addresses, related_resources, severity, priority, primary_contact, and labels) can be updated.",
                     "flatPath": "v2beta/{v2betaId}/{v2betaId1}/cases/{casesId}",
                     "httpMethod": "PATCH",
                     "id": "cloudsupport.cases.patch",
@@ -578,7 +573,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://cloudsupport.googleapis.com/",
     "schemas": {
         "Actor": {
@@ -708,8 +703,28 @@
                     "description": "The resource name for the case.",
                     "type": "string"
                 },
+                "priority": {
+                    "description": "The priority of this case. If this is set, do not set severity.",
+                    "enum": [
+                        "PRIORITY_UNSPECIFIED",
+                        "P0",
+                        "P1",
+                        "P2",
+                        "P3",
+                        "P4"
+                    ],
+                    "enumDescriptions": [
+                        "Severity is undefined or has not been set yet.",
+                        "Extreme impact on a production service. Service is hard down.",
+                        "Critical impact on a production service. Service is currently unusable.",
+                        "Severe impact on a production service. Service is usable but greatly impaired.",
+                        "Medium impact on a production service. Service is available, but moderately impaired.",
+                        "General questions or minor issues. Production service is fully available."
+                    ],
+                    "type": "string"
+                },
                 "severity": {
-                    "description": "The severity of this case.",
+                    "description": "The severity of this case. Deprecated. Use priority instead.",
                     "enum": [
                         "SEVERITY_UNSPECIFIED",
                         "S0",
diff --git a/discovery/googleapis_beta/containeranalysis__v1beta1.json b/discovery/googleapis_beta/containeranalysis__v1beta1.json
index df38f70..620548c 100644
--- a/discovery/googleapis_beta/containeranalysis__v1beta1.json
+++ b/discovery/googleapis_beta/containeranalysis__v1beta1.json
@@ -851,7 +851,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220211",
     "rootUrl": "https://containeranalysis.googleapis.com/",
     "schemas": {
         "AliasContext": {
@@ -1868,32 +1868,6 @@
                 "name": {
                     "description": "The `WorkerPool` resource to execute the build on. You must have `cloudbuild.workerpools.use` on the project hosting the WorkerPool. Format projects/{project}/locations/{location}/workerPools/{workerPoolId}",
                     "type": "string"
-                },
-                "workerConfig": {
-                    "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOptionWorkerConfig",
-                    "description": "Configuration per workload."
-                }
-            },
-            "type": "object"
-        },
-        "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOptionWorkerConfig": {
-            "description": "Configuration per workload for both Private Pools and Hybrid Pools.",
-            "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOptionWorkerConfig",
-            "properties": {
-                "diskSizeGb": {
-                    "description": "The disk size (in GB) which is requested for the build container. If unset, a value of 10 GB will be used.",
-                    "format": "int64",
-                    "type": "string"
-                },
-                "memoryGb": {
-                    "description": "The memory (in GB) which is requested for the build container. If unset, a value of 4 GB will be used.",
-                    "format": "float",
-                    "type": "number"
-                },
-                "vcpuCount": {
-                    "description": "The number of vCPUs which are requested for the build container. If unset, a value of 1 will be used.",
-                    "format": "float",
-                    "type": "number"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis_beta/datacatalog__v1beta1.json b/discovery/googleapis_beta/datacatalog__v1beta1.json
index 72275df..8a3656f 100644
--- a/discovery/googleapis_beta/datacatalog__v1beta1.json
+++ b/discovery/googleapis_beta/datacatalog__v1beta1.json
@@ -1806,7 +1806,7 @@
             }
         }
     },
-    "revision": "20220117",
+    "revision": "20220209",
     "rootUrl": "https://datacatalog.googleapis.com/",
     "schemas": {
         "Binding": {
diff --git a/discovery/googleapis_beta/datalabeling__v1beta1.json b/discovery/googleapis_beta/datalabeling__v1beta1.json
index a241d9b..ea29dec 100644
--- a/discovery/googleapis_beta/datalabeling__v1beta1.json
+++ b/discovery/googleapis_beta/datalabeling__v1beta1.json
@@ -1594,7 +1594,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220207",
     "rootUrl": "https://datalabeling.googleapis.com/",
     "schemas": {
         "GoogleCloudDatalabelingV1alpha1CreateInstructionMetadata": {
diff --git a/discovery/googleapis_beta/datastream__v1alpha1.json b/discovery/googleapis_beta/datastream__v1alpha1.json
index 053e7f6..d96e58d 100644
--- a/discovery/googleapis_beta/datastream__v1alpha1.json
+++ b/discovery/googleapis_beta/datastream__v1alpha1.json
@@ -1194,7 +1194,7 @@
             }
         }
     },
-    "revision": "20220112",
+    "revision": "20220126",
     "rootUrl": "https://datastream.googleapis.com/",
     "schemas": {
         "AvroFileFormat": {
diff --git a/discovery/googleapis_beta/documentai__v1beta3.json b/discovery/googleapis_beta/documentai__v1beta3.json
index 8278986..e5982bd 100644
--- a/discovery/googleapis_beta/documentai__v1beta3.json
+++ b/discovery/googleapis_beta/documentai__v1beta3.json
@@ -794,7 +794,7 @@
             }
         }
     },
-    "revision": "20220114",
+    "revision": "20220205",
     "rootUrl": "https://documentai.googleapis.com/",
     "schemas": {
         "GoogleCloudDocumentaiUiv1beta3BatchDeleteDocumentsMetadata": {
@@ -1569,6 +1569,62 @@
             "properties": {},
             "type": "object"
         },
+        "GoogleCloudDocumentaiV1alpha1AnalyzeHitlDataMetadata": {
+            "description": "The long running operation metadata for AnalyzeHitlData.",
+            "id": "GoogleCloudDocumentaiV1alpha1AnalyzeHitlDataMetadata",
+            "properties": {
+                "commonMetadata": {
+                    "$ref": "GoogleCloudDocumentaiV1alpha1CommonOperationMetadata",
+                    "description": "The basic metadata of the long running operation."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleCloudDocumentaiV1alpha1CommonOperationMetadata": {
+            "description": "The common metadata for long running operations.",
+            "id": "GoogleCloudDocumentaiV1alpha1CommonOperationMetadata",
+            "properties": {
+                "createTime": {
+                    "description": "The creation time of the operation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                },
+                "resource": {
+                    "description": "A related resource to this operation.",
+                    "type": "string"
+                },
+                "state": {
+                    "description": "The state of the operation.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "RUNNING",
+                        "CANCELLING",
+                        "SUCCEEDED",
+                        "FAILED",
+                        "CANCELLED"
+                    ],
+                    "enumDescriptions": [
+                        "Unspecified state.",
+                        "Operation is still running.",
+                        "Operation is being cancelled.",
+                        "Operation succeeded.",
+                        "Operation failed.",
+                        "Operation is cancelled."
+                    ],
+                    "type": "string"
+                },
+                "stateMessage": {
+                    "description": "A message providing more details about the current state of processing.",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "The last update time of the operation.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
         "GoogleCloudDocumentaiV1beta1BatchProcessDocumentsResponse": {
             "description": "Response to an batch document processing request. This is returned in the LRO Operation after the operation is complete.",
             "id": "GoogleCloudDocumentaiV1beta1BatchProcessDocumentsResponse",
@@ -5520,10 +5576,10 @@
                         "The feature is not yet implemented. Users can not use it.",
                         "Prelaunch features are hidden from users and are only visible internally.",
                         "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
-                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don’t have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+                        "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
                         "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
                         "GA features are open to all developers and are considered stable and fully qualified for production use.",
-                        "Deprecated features are scheduled to be shut down and removed. For more information, see the “Deprecation Policy” section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+                        "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
                     ],
                     "type": "string"
                 },
@@ -5934,7 +5990,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis_beta/domains__v1beta1.json b/discovery/googleapis_beta/domains__v1beta1.json
index e5a66ee..b8374ef 100644
--- a/discovery/googleapis_beta/domains__v1beta1.json
+++ b/discovery/googleapis_beta/domains__v1beta1.json
@@ -777,7 +777,7 @@
             }
         }
     },
-    "revision": "20211210",
+    "revision": "20220128",
     "rootUrl": "https://domains.googleapis.com/",
     "schemas": {
         "AuditConfig": {
diff --git a/discovery/googleapis_beta/factchecktools__v1alpha1.json b/discovery/googleapis_beta/factchecktools__v1alpha1.json
index a4bbd97..b84a9e1 100644
--- a/discovery/googleapis_beta/factchecktools__v1alpha1.json
+++ b/discovery/googleapis_beta/factchecktools__v1alpha1.json
@@ -302,7 +302,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://factchecktools.googleapis.com/",
     "schemas": {
         "GoogleFactcheckingFactchecktoolsV1alpha1Claim": {
diff --git a/discovery/googleapis_beta/fcmdata__v1beta1.json b/discovery/googleapis_beta/fcmdata__v1beta1.json
index 01e91e7..4a86e30 100644
--- a/discovery/googleapis_beta/fcmdata__v1beta1.json
+++ b/discovery/googleapis_beta/fcmdata__v1beta1.json
@@ -152,7 +152,7 @@
             }
         }
     },
-    "revision": "20220124",
+    "revision": "20220215",
     "rootUrl": "https://fcmdata.googleapis.com/",
     "schemas": {
         "GoogleFirebaseFcmDataV1beta1AndroidDeliveryData": {
@@ -297,7 +297,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis_beta/firebase__v1beta1.json b/discovery/googleapis_beta/firebase__v1beta1.json
index 6a84b2e..460102d 100644
--- a/discovery/googleapis_beta/firebase__v1beta1.json
+++ b/discovery/googleapis_beta/firebase__v1beta1.json
@@ -1119,7 +1119,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220215",
     "rootUrl": "https://firebase.googleapis.com/",
     "schemas": {
         "AddFirebaseRequest": {
diff --git a/discovery/googleapis_beta/firebaseappcheck__v1beta.json b/discovery/googleapis_beta/firebaseappcheck__v1beta.json
index 41f5e57..35a12cf 100644
--- a/discovery/googleapis_beta/firebaseappcheck__v1beta.json
+++ b/discovery/googleapis_beta/firebaseappcheck__v1beta.json
@@ -1181,7 +1181,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220211",
     "rootUrl": "https://firebaseappcheck.googleapis.com/",
     "schemas": {
         "GoogleFirebaseAppcheckV1betaAppAttestChallengeResponse": {
diff --git a/discovery/googleapis_beta/firebasedatabase__v1beta.json b/discovery/googleapis_beta/firebasedatabase__v1beta.json
index 141576f..601387f 100644
--- a/discovery/googleapis_beta/firebasedatabase__v1beta.json
+++ b/discovery/googleapis_beta/firebasedatabase__v1beta.json
@@ -315,7 +315,7 @@
             }
         }
     },
-    "revision": "20220121",
+    "revision": "20220215",
     "rootUrl": "https://firebasedatabase.googleapis.com/",
     "schemas": {
         "DatabaseInstance": {
diff --git a/discovery/googleapis_beta/firebasestorage__v1beta.json b/discovery/googleapis_beta/firebasestorage__v1beta.json
index 54272ec..b4c0b86 100644
--- a/discovery/googleapis_beta/firebasestorage__v1beta.json
+++ b/discovery/googleapis_beta/firebasestorage__v1beta.json
@@ -236,7 +236,7 @@
             }
         }
     },
-    "revision": "20211213",
+    "revision": "20220204",
     "rootUrl": "https://firebasestorage.googleapis.com/",
     "schemas": {
         "AddFirebaseRequest": {
diff --git a/discovery/googleapis_beta/gkehub__v2alpha.json b/discovery/googleapis_beta/gkehub__v2alpha.json
new file mode 100644
index 0000000..106722b
--- /dev/null
+++ b/discovery/googleapis_beta/gkehub__v2alpha.json
@@ -0,0 +1,1065 @@
+{
+    "auth": {
+        "oauth2": {
+            "scopes": {
+                "https://www.googleapis.com/auth/cloud-platform": {
+                    "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+                }
+            }
+        }
+    },
+    "basePath": "",
+    "baseUrl": "https://gkehub.googleapis.com/",
+    "batchPath": "batch",
+    "canonicalName": "GKE Hub",
+    "description": "",
+    "discoveryVersion": "v1",
+    "documentationLink": "https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster",
+    "icons": {
+        "x16": "http://www.google.com/images/icons/product/search-16.gif",
+        "x32": "http://www.google.com/images/icons/product/search-32.gif"
+    },
+    "id": "gkehub:v2alpha",
+    "kind": "discovery#restDescription",
+    "name": "gkehub",
+    "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": {
+        "projects": {
+            "resources": {
+                "locations": {
+                    "methods": {
+                        "get": {
+                            "description": "Gets information about a location.",
+                            "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}",
+                            "httpMethod": "GET",
+                            "id": "gkehub.projects.locations.get",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "name": {
+                                    "description": "Resource name for the location.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2alpha/{+name}",
+                            "response": {
+                                "$ref": "Location"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        },
+                        "list": {
+                            "description": "Lists information about the supported locations for this service.",
+                            "flatPath": "v2alpha/projects/{projectsId}/locations",
+                            "httpMethod": "GET",
+                            "id": "gkehub.projects.locations.list",
+                            "parameterOrder": [
+                                "name"
+                            ],
+                            "parameters": {
+                                "filter": {
+                                    "description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like \"displayName=tokyo\", and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+                                    "location": "query",
+                                    "type": "string"
+                                },
+                                "name": {
+                                    "description": "The resource that owns the locations collection, if applicable.",
+                                    "location": "path",
+                                    "pattern": "^projects/[^/]+$",
+                                    "required": true,
+                                    "type": "string"
+                                },
+                                "pageSize": {
+                                    "description": "The maximum number of results to return. If not set, the service selects a default.",
+                                    "format": "int32",
+                                    "location": "query",
+                                    "type": "integer"
+                                },
+                                "pageToken": {
+                                    "description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+                                    "location": "query",
+                                    "type": "string"
+                                }
+                            },
+                            "path": "v2alpha/{+name}/locations",
+                            "response": {
+                                "$ref": "ListLocationsResponse"
+                            },
+                            "scopes": [
+                                "https://www.googleapis.com/auth/cloud-platform"
+                            ]
+                        }
+                    },
+                    "resources": {
+                        "featureConfigs": {
+                            "methods": {
+                                "create": {
+                                    "description": "Creates FeatureConfig under a given parent.",
+                                    "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/featureConfigs",
+                                    "httpMethod": "POST",
+                                    "id": "gkehub.projects.locations.featureConfigs.create",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "featureConfigId": {
+                                            "description": "The ID of the feature config to create.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The name of parent where the FeatureConfig will be created. Specified in the format `projects/{project}/locations/global/featureConfigs/{feature_type}/{feature_config}/`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "requestId": {
+                                            "description": "Idempotent request UUID.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2alpha/{+parent}/featureConfigs",
+                                    "request": {
+                                        "$ref": "FeatureConfig"
+                                    },
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "delete": {
+                                    "description": "Removes a FeatureConfig.",
+                                    "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/featureConfigs/{featureConfigsId}",
+                                    "httpMethod": "DELETE",
+                                    "id": "gkehub.projects.locations.featureConfigs.delete",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The name of the membershipFeature to be deleted. Specified in the format `projects/*/locations/*/featureConfigs/**`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/featureConfigs/.*$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "requestId": {
+                                            "description": "Idempotent request UUID.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2alpha/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "========= FeatureConfig Services ========= Gets details of a featureConfig.",
+                                    "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/featureConfigs/{featureConfigsId}",
+                                    "httpMethod": "GET",
+                                    "id": "gkehub.projects.locations.featureConfigs.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "Required. The FeatureConfig resource name in the format `projects/*/locations/*/featureConfigs/**`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/featureConfigs/.*$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2alpha/{+name}",
+                                    "response": {
+                                        "$ref": "FeatureConfig"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists all FeatureConfigs in a given project and location.",
+                                    "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/featureConfigs",
+                                    "httpMethod": "GET",
+                                    "id": "gkehub.projects.locations.featureConfigs.list",
+                                    "parameterOrder": [
+                                        "parent"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "Lists FeatureConfigs that match the filter expression, following the syntax outlined in https://google.aip.dev/160.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "orderBy": {
+                                            "description": "One or more fields to compare and use to sort the output. See https://google.aip.dev/132#ordering.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "When requesting a 'page' of resources, `page_size` specifies number of resources to return. If unspecified or set to 0, all resources will be returned.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "Token returned by previous call to `ListFeatures` which specifies the position in the list from where to continue listing the resources.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "parent": {
+                                            "description": "Required. The parent where the FeatureConfigs will be listed. In the format: `projects/*/locations/*`.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2alpha/{+parent}/featureConfigs",
+                                    "response": {
+                                        "$ref": "ListFeatureConfigsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        },
+                        "memberships": {
+                            "resources": {
+                                "features": {
+                                    "methods": {
+                                        "create": {
+                                            "description": "Creates membershipFeature under a given parent.",
+                                            "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features",
+                                            "httpMethod": "POST",
+                                            "id": "gkehub.projects.locations.memberships.features.create",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "parent": {
+                                                    "description": "Required. The name of parent where the MembershipFeature will be created. Specified in the format `projects/*/locations/*/memberships/*/features/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "requestId": {
+                                                    "description": "Idempotent request UUID.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2alpha/{+parent}/features",
+                                            "request": {
+                                                "$ref": "MembershipFeature"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "delete": {
+                                            "description": "Removes a membershipFeature.",
+                                            "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features/{featuresId}",
+                                            "httpMethod": "DELETE",
+                                            "id": "gkehub.projects.locations.memberships.features.delete",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The name of the membershipFeature to be deleted. Specified in the format `projects/*/locations/*/memberships/*/features/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+/features/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "requestId": {
+                                                    "description": "Idempotent request UUID.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2alpha/{+name}",
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "get": {
+                                            "description": "========= MembershipFeature Services ========= Gets details of a membershipFeature.",
+                                            "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features/{featuresId}",
+                                            "httpMethod": "GET",
+                                            "id": "gkehub.projects.locations.memberships.features.get",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Required. The MembershipFeature resource name in the format `projects/*/locations/*/memberships/*/features/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+/features/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2alpha/{+name}",
+                                            "response": {
+                                                "$ref": "MembershipFeature"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "list": {
+                                            "description": "Lists MembershipFeatures in a given project and location.",
+                                            "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features",
+                                            "httpMethod": "GET",
+                                            "id": "gkehub.projects.locations.memberships.features.list",
+                                            "parameterOrder": [
+                                                "parent"
+                                            ],
+                                            "parameters": {
+                                                "filter": {
+                                                    "description": "Lists MembershipFeatures that match the filter expression, following the syntax outlined in https://google.aip.dev/160. Examples: - Feature with the name \"helloworld\" in project \"foo-proj\" and membership \"member-bar\": name = \"projects/foo-proj/locations/global/memberships/member-bar/features/helloworld\" - Features that have a label called `foo`: labels.foo:* - Features that have a label called `foo` whose value is `bar`: labels.foo = bar",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "orderBy": {
+                                                    "description": "One or more fields to compare and use to sort the output. See https://google.aip.dev/132#ordering.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "pageSize": {
+                                                    "description": "When requesting a 'page' of resources, `page_size` specifies number of resources to return. If unspecified or set to 0, all resources will be returned.",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "pageToken": {
+                                                    "description": "Token returned by previous call to `ListFeatures` which specifies the position in the list from where to continue listing the resources.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "parent": {
+                                                    "description": "Required. The parent where the MembershipFeature will be listed. In the format: `projects/*/locations/*/memberships/*`.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2alpha/{+parent}/features",
+                                            "response": {
+                                                "$ref": "ListMembershipFeaturesResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "patch": {
+                                            "description": "Updates an existing MembershipFeature.",
+                                            "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features/{featuresId}",
+                                            "httpMethod": "PATCH",
+                                            "id": "gkehub.projects.locations.memberships.features.patch",
+                                            "parameterOrder": [
+                                                "name"
+                                            ],
+                                            "parameters": {
+                                                "name": {
+                                                    "description": "Output only. The resource name of the membershipFeature, in the format: `projects/{project}/locations/{location}/memberships/{membership}/features/{feature}`. Note that `membershipFeatures` is shortened to `features` in the resource name. (see http://go/aip/122#collection-identifiers)",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+/features/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                },
+                                                "requestId": {
+                                                    "description": "Idempotent request UUID.",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                },
+                                                "updateMask": {
+                                                    "description": "Required. Mask of fields to update.",
+                                                    "format": "google-fieldmask",
+                                                    "location": "query",
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v2alpha/{+name}",
+                                            "request": {
+                                                "$ref": "MembershipFeature"
+                                            },
+                                            "response": {
+                                                "$ref": "Operation"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    }
+                                }
+                            }
+                        },
+                        "operations": {
+                            "methods": {
+                                "cancel": {
+                                    "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+                                    "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+                                    "httpMethod": "POST",
+                                    "id": "gkehub.projects.locations.operations.cancel",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource to be cancelled.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2alpha/{+name}:cancel",
+                                    "request": {
+                                        "$ref": "CancelOperationRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "Empty"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "get": {
+                                    "description": "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.",
+                                    "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                                    "httpMethod": "GET",
+                                    "id": "gkehub.projects.locations.operations.get",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "name": {
+                                            "description": "The name of the operation resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2alpha/{+name}",
+                                    "response": {
+                                        "$ref": "Operation"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
+                                "list": {
+                                    "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding allows API services to override the binding to use different resource name schemes, such as `users/*/operations`. To override the binding, API services can add a binding such as `\"/v1/{name=users/*}/operations\"` to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
+                                    "flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/operations",
+                                    "httpMethod": "GET",
+                                    "id": "gkehub.projects.locations.operations.list",
+                                    "parameterOrder": [
+                                        "name"
+                                    ],
+                                    "parameters": {
+                                        "filter": {
+                                            "description": "The standard list filter.",
+                                            "location": "query",
+                                            "type": "string"
+                                        },
+                                        "name": {
+                                            "description": "The name of the operation's parent resource.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
+                                            "required": true,
+                                            "type": "string"
+                                        },
+                                        "pageSize": {
+                                            "description": "The standard list page size.",
+                                            "format": "int32",
+                                            "location": "query",
+                                            "type": "integer"
+                                        },
+                                        "pageToken": {
+                                            "description": "The standard list page token.",
+                                            "location": "query",
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v2alpha/{+name}/operations",
+                                    "response": {
+                                        "$ref": "ListOperationsResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "revision": "20220204",
+    "rootUrl": "https://gkehub.googleapis.com/",
+    "schemas": {
+        "CancelOperationRequest": {
+            "description": "The request message for Operations.CancelOperation.",
+            "id": "CancelOperationRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "Empty": {
+            "description": "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 `{}`.",
+            "id": "Empty",
+            "properties": {},
+            "type": "object"
+        },
+        "FeatureConfig": {
+            "description": "FeatureConfig contains configurations for a Fleet feature. FeatureConfig can be applied to MembershipFeature(s) to setup per-membership FeatureSpec.",
+            "id": "FeatureConfig",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. When the FeatureConfig resource was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "deleteTime": {
+                    "description": "Output only. When the FeatureConfig resource was deleted.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "GCP labels for this FeatureConfig.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. Resource name of this FeatureConfig, in the format: `projects/{project}/locations/global/FeatureConfigs/{feature_type}/{feature_config}`",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "spec": {
+                    "$ref": "FeatureSpec",
+                    "description": "Input only. Immutable. User input of feature spec. Note that this field is immutable. Must create a new FeatureConfig if a new feature spec is needed."
+                },
+                "state": {
+                    "$ref": "FeatureConfigState",
+                    "description": "Lifecycle information of the FeatureConfig."
+                },
+                "uniqueId": {
+                    "description": "Output only. Google-generated UUID for this resource. This is unique across all FeatureConfig resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "Output only. When the FeatureConfig resource was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FeatureConfigRef": {
+            "description": "Information of the FeatureConfig applied on the MembershipFeature.",
+            "id": "FeatureConfigRef",
+            "properties": {
+                "config": {
+                    "description": "Input only. Resource name of FeatureConfig, in the format: `projects/{project}/locations/global/featureConfigs/{feature_config}`.",
+                    "type": "string"
+                },
+                "configUpdateTime": {
+                    "description": "Output only. When the FeatureConfig was last applied and copied to FeatureSpec.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "uuid": {
+                    "description": "Output only. An id that uniquely identify a FeatureConfig object.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FeatureConfigState": {
+            "description": "FeatureConfigState describes the state of a FeatureConfig resource.",
+            "id": "FeatureConfigState",
+            "properties": {
+                "state": {
+                    "description": "Output only. The current state of the FeatureConfig resource.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "CREATING",
+                        "ACTIVE",
+                        "DELETING"
+                    ],
+                    "enumDescriptions": [
+                        "The code is not set.",
+                        "The FeatureConfig is being created.",
+                        "The FeatureConfig has been created.",
+                        "The FeatureConfig is being deleted."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "FeatureSpec": {
+            "description": "FeatureSpec contains user input per-feature spec information.",
+            "id": "FeatureSpec",
+            "properties": {},
+            "type": "object"
+        },
+        "FeatureState": {
+            "description": "FeatureState contains high-level state information and per-feature state information for this MembershipFeature.",
+            "id": "FeatureState",
+            "properties": {
+                "state": {
+                    "$ref": "State",
+                    "description": "The high-level state of this MembershipFeature."
+                }
+            },
+            "type": "object"
+        },
+        "GoogleRpcStatus": {
+            "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. 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).",
+            "id": "GoogleRpcStatus",
+            "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 message 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 user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListFeatureConfigsResponse": {
+            "description": "Response message for the `GkeHubFeature.ListFeatureConfigs` method.",
+            "id": "ListFeatureConfigsResponse",
+            "properties": {
+                "featureConfigs": {
+                    "description": "The list of FeatureConfig(s).",
+                    "items": {
+                        "$ref": "FeatureConfig"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to request the next page of resources from the `ListFeatureConfigs` method. The value of an empty string means that there are no more resources to return.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListLocationsResponse": {
+            "description": "The response message for Locations.ListLocations.",
+            "id": "ListLocationsResponse",
+            "properties": {
+                "locations": {
+                    "description": "A list of locations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Location"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListMembershipFeaturesResponse": {
+            "description": "Response message for the `GkeHubFeature.ListMembershipFeatures` method.",
+            "id": "ListMembershipFeaturesResponse",
+            "properties": {
+                "membershipFeatures": {
+                    "description": "The list of matching MembershipFeatures.",
+                    "items": {
+                        "$ref": "MembershipFeature"
+                    },
+                    "type": "array"
+                },
+                "nextPageToken": {
+                    "description": "A token to request the next page of resources from the `ListMembershipFeatures` method. The value of an empty string means that there are no more resources to return.",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ListOperationsResponse": {
+            "description": "The response message for Operations.ListOperations.",
+            "id": "ListOperationsResponse",
+            "properties": {
+                "nextPageToken": {
+                    "description": "The standard List next-page token.",
+                    "type": "string"
+                },
+                "operations": {
+                    "description": "A list of operations that matches the specified filter in the request.",
+                    "items": {
+                        "$ref": "Operation"
+                    },
+                    "type": "array"
+                }
+            },
+            "type": "object"
+        },
+        "Location": {
+            "description": "A resource that represents Google Cloud Platform location.",
+            "id": "Location",
+            "properties": {
+                "displayName": {
+                    "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+                    "type": "string"
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+                    "type": "object"
+                },
+                "locationId": {
+                    "description": "The canonical id for this location. For example: `\"us-east1\"`.",
+                    "type": "string"
+                },
+                "metadata": {
+                    "additionalProperties": {
+                        "description": "Properties of the object. Contains field @type with type URL.",
+                        "type": "any"
+                    },
+                    "description": "Service-specific metadata. For example the available capacity at the given location.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "MembershipFeature": {
+            "description": "MembershipFeature represents the settings and status of a Fleet Feature enabled on a single Fleet Membership.",
+            "id": "MembershipFeature",
+            "properties": {
+                "createTime": {
+                    "description": "Output only. When the MembershipFeature resource was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "deleteTime": {
+                    "description": "Output only. When the MembershipFeature resource was deleted.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "featureConfigRef": {
+                    "$ref": "FeatureConfigRef",
+                    "description": "Reference information for a FeatureConfig applied on the MembershipFeature."
+                },
+                "labels": {
+                    "additionalProperties": {
+                        "type": "string"
+                    },
+                    "description": "GCP labels for this MembershipFeature.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "Output only. The resource name of the membershipFeature, in the format: `projects/{project}/locations/{location}/memberships/{membership}/features/{feature}`. Note that `membershipFeatures` is shortened to `features` in the resource name. (see http://go/aip/122#collection-identifiers)",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "resourceState": {
+                    "$ref": "ResourceState",
+                    "description": "Lifecycle information of the resource itself."
+                },
+                "spec": {
+                    "$ref": "FeatureSpec",
+                    "description": "Output only. Spec of this membershipFeature.",
+                    "readOnly": true
+                },
+                "state": {
+                    "$ref": "FeatureState",
+                    "description": "Output only. State of the this membershipFeature.",
+                    "readOnly": true
+                },
+                "updateTime": {
+                    "description": "Output only. When the MembershipFeature resource was last updated.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "Operation": {
+            "description": "This resource represents a long-running operation that is the result of a network API call.",
+            "id": "Operation",
+            "properties": {
+                "done": {
+                    "description": "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.",
+                    "type": "boolean"
+                },
+                "error": {
+                    "$ref": "GoogleRpcStatus",
+                    "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 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.",
+                    "type": "object"
+                },
+                "name": {
+                    "description": "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}`.",
+                    "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 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`.",
+                    "type": "object"
+                }
+            },
+            "type": "object"
+        },
+        "OperationMetadata": {
+            "description": "Metadata of the long-running operation.",
+            "id": "OperationMetadata",
+            "properties": {
+                "apiVersion": {
+                    "description": "Output only. API version used to start the operation.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "cancelRequested": {
+                    "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
+                "createTime": {
+                    "description": "Output only. The time the operation was created.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "endTime": {
+                    "description": "Output only. The time the operation finished running.",
+                    "format": "google-datetime",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "statusDetail": {
+                    "description": "Output only. Human-readable status of the operation, if any.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "target": {
+                    "description": "Output only. Server-defined resource path for the target of the operation.",
+                    "readOnly": true,
+                    "type": "string"
+                },
+                "verb": {
+                    "description": "Output only. Name of the verb executed by the operation.",
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "ResourceState": {
+            "description": "ResourceState describes the state of a MembershipFeature *resource* in the GkeHub API. See `FeatureState` for the \"running state\" of the MembershipFeature.",
+            "id": "ResourceState",
+            "properties": {
+                "state": {
+                    "description": "Output only. The current state of the Feature resource in the Hub API.",
+                    "enum": [
+                        "STATE_UNSPECIFIED",
+                        "ENABLING",
+                        "ACTIVE",
+                        "DISABLING",
+                        "UPDATING",
+                        "SERVICE_UPDATING"
+                    ],
+                    "enumDescriptions": [
+                        "State is unknown or not set.",
+                        "The MembershipFeature is being enabled, and the MembershipFeature resource is being created. Once complete, the corresponding MembershipFeature will be enabled in this Hub.",
+                        "The MembershipFeature is enabled in this Hub, and the MembershipFeature resource is fully available.",
+                        "The MembershipFeature is being disabled in this Hub, and the MembershipFeature resource is being deleted.",
+                        "The MembershipFeature resource is being updated.",
+                        "The MembershipFeature resource is being updated by the Hub Service."
+                    ],
+                    "readOnly": true,
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        },
+        "State": {
+            "description": "High-level state of a MembershipFeature.",
+            "id": "State",
+            "properties": {
+                "code": {
+                    "description": "The high-level, machine-readable status of this MembershipFeature.",
+                    "enum": [
+                        "CODE_UNSPECIFIED",
+                        "OK",
+                        "WARNING",
+                        "ERROR"
+                    ],
+                    "enumDescriptions": [
+                        "Unknown or not set.",
+                        "The MembershipFeature is operating normally.",
+                        "The MembershipFeature has encountered an issue, and is operating in a degraded state. The MembershipFeature may need intervention to return to normal operation. See the description and any associated MembershipFeature-specific details for more information.",
+                        "The MembershipFeature is not operating or is in a severely degraded state. The MembershipFeature may need intervention to return to normal operation. See the description and any associated MembershipFeature-specific details for more information."
+                    ],
+                    "type": "string"
+                },
+                "description": {
+                    "description": "A human-readable description of the current status.",
+                    "type": "string"
+                },
+                "updateTime": {
+                    "description": "The time this status and any related Feature-specific details were updated.",
+                    "format": "google-datetime",
+                    "type": "string"
+                }
+            },
+            "type": "object"
+        }
+    },
+    "servicePath": "",
+    "title": "GKE Hub API",
+    "version": "v2alpha",
+    "version_module": true
+}
\ No newline at end of file
diff --git a/discovery/googleapis_beta/ideahub__v1beta.json b/discovery/googleapis_beta/ideahub__v1beta.json
index 45723e6..edafb25 100644
--- a/discovery/googleapis_beta/ideahub__v1beta.json
+++ b/discovery/googleapis_beta/ideahub__v1beta.json
@@ -286,7 +286,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://ideahub.googleapis.com/",
     "schemas": {
         "GoogleSearchIdeahubV1betaAvailableLocale": {
diff --git a/discovery/googleapis_beta/lifesciences__v2beta.json b/discovery/googleapis_beta/lifesciences__v2beta.json
index 4f1731a..4748af3 100644
--- a/discovery/googleapis_beta/lifesciences__v2beta.json
+++ b/discovery/googleapis_beta/lifesciences__v2beta.json
@@ -310,7 +310,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220204",
     "rootUrl": "https://lifesciences.googleapis.com/",
     "schemas": {
         "Accelerator": {
diff --git a/discovery/googleapis_beta/metastore__v1beta.json b/discovery/googleapis_beta/metastore__v1beta.json
index c87a918..8221613 100644
--- a/discovery/googleapis_beta/metastore__v1beta.json
+++ b/discovery/googleapis_beta/metastore__v1beta.json
@@ -509,6 +509,34 @@
                                         "https://www.googleapis.com/auth/cloud-platform"
                                     ]
                                 },
+                                "removeIamPolicy": {
+                                    "description": "Removes the attached IAM policies for a resource",
+                                    "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/{servicesId1}:removeIamPolicy",
+                                    "httpMethod": "POST",
+                                    "id": "metastore.projects.locations.services.removeIamPolicy",
+                                    "parameterOrder": [
+                                        "resource"
+                                    ],
+                                    "parameters": {
+                                        "resource": {
+                                            "description": "Required. The relative resource name of the dataplane resource to remove IAM policy, in the following form:projects/{project_id}/locations/{location_id}/services/{service_id}/databases/{database_id} or projects/{project_id}/locations/{location_id}/services/{service_id}/databases/{database_id}/tables/{table_id}.",
+                                            "location": "path",
+                                            "pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/.*$",
+                                            "required": true,
+                                            "type": "string"
+                                        }
+                                    },
+                                    "path": "v1beta/{+resource}:removeIamPolicy",
+                                    "request": {
+                                        "$ref": "RemoveIamPolicyRequest"
+                                    },
+                                    "response": {
+                                        "$ref": "RemoveIamPolicyResponse"
+                                    },
+                                    "scopes": [
+                                        "https://www.googleapis.com/auth/cloud-platform"
+                                    ]
+                                },
                                 "restore": {
                                     "description": "Restores a service from a backup.",
                                     "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:restore",
@@ -825,6 +853,190 @@
                                         }
                                     }
                                 },
+                                "databases": {
+                                    "methods": {
+                                        "getIamPolicy": {
+                                            "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+                                            "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/databases/{databasesId}:getIamPolicy",
+                                            "httpMethod": "GET",
+                                            "id": "metastore.projects.locations.services.databases.getIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "options.requestedPolicyVersion": {
+                                                    "description": "Optional. The maximum policy version that will be used to format the policy.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset.The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                                    "format": "int32",
+                                                    "location": "query",
+                                                    "type": "integer"
+                                                },
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/databases/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1beta/{+resource}:getIamPolicy",
+                                            "response": {
+                                                "$ref": "Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "setIamPolicy": {
+                                            "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
+                                            "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/databases/{databasesId}:setIamPolicy",
+                                            "httpMethod": "POST",
+                                            "id": "metastore.projects.locations.services.databases.setIamPolicy",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/databases/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1beta/{+resource}:setIamPolicy",
+                                            "request": {
+                                                "$ref": "SetIamPolicyRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "Policy"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        },
+                                        "testIamPermissions": {
+                                            "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+                                            "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/databases/{databasesId}:testIamPermissions",
+                                            "httpMethod": "POST",
+                                            "id": "metastore.projects.locations.services.databases.testIamPermissions",
+                                            "parameterOrder": [
+                                                "resource"
+                                            ],
+                                            "parameters": {
+                                                "resource": {
+                                                    "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                                    "location": "path",
+                                                    "pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/databases/[^/]+$",
+                                                    "required": true,
+                                                    "type": "string"
+                                                }
+                                            },
+                                            "path": "v1beta/{+resource}:testIamPermissions",
+                                            "request": {
+                                                "$ref": "TestIamPermissionsRequest"
+                                            },
+                                            "response": {
+                                                "$ref": "TestIamPermissionsResponse"
+                                            },
+                                            "scopes": [
+                                                "https://www.googleapis.com/auth/cloud-platform"
+                                            ]
+                                        }
+                                    },
+                                    "resources": {
+                                        "tables": {
+                                            "methods": {
+                                                "getIamPolicy": {
+                                                    "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+                                                    "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/databases/{databasesId}/tables/{tablesId}:getIamPolicy",
+                                                    "httpMethod": "GET",
+                                                    "id": "metastore.projects.locations.services.databases.tables.getIamPolicy",
+                                                    "parameterOrder": [
+                                                        "resource"
+                                                    ],
+                                                    "parameters": {
+                                                        "options.requestedPolicyVersion": {
+                                                            "description": "Optional. The maximum policy version that will be used to format the policy.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset.The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
+                                                            "format": "int32",
+                                                            "location": "query",
+                                                            "type": "integer"
+                                                        },
+                                                        "resource": {
+                                                            "description": "REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/databases/[^/]+/tables/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1beta/{+resource}:getIamPolicy",
+                                                    "response": {
+                                                        "$ref": "Policy"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "setIamPolicy": {
+                                                    "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
+                                                    "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/databases/{databasesId}/tables/{tablesId}:setIamPolicy",
+                                                    "httpMethod": "POST",
+                                                    "id": "metastore.projects.locations.services.databases.tables.setIamPolicy",
+                                                    "parameterOrder": [
+                                                        "resource"
+                                                    ],
+                                                    "parameters": {
+                                                        "resource": {
+                                                            "description": "REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/databases/[^/]+/tables/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1beta/{+resource}:setIamPolicy",
+                                                    "request": {
+                                                        "$ref": "SetIamPolicyRequest"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "Policy"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                },
+                                                "testIamPermissions": {
+                                                    "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+                                                    "flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/databases/{databasesId}/tables/{tablesId}:testIamPermissions",
+                                                    "httpMethod": "POST",
+                                                    "id": "metastore.projects.locations.services.databases.tables.testIamPermissions",
+                                                    "parameterOrder": [
+                                                        "resource"
+                                                    ],
+                                                    "parameters": {
+                                                        "resource": {
+                                                            "description": "REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.",
+                                                            "location": "path",
+                                                            "pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/databases/[^/]+/tables/[^/]+$",
+                                                            "required": true,
+                                                            "type": "string"
+                                                        }
+                                                    },
+                                                    "path": "v1beta/{+resource}:testIamPermissions",
+                                                    "request": {
+                                                        "$ref": "TestIamPermissionsRequest"
+                                                    },
+                                                    "response": {
+                                                        "$ref": "TestIamPermissionsResponse"
+                                                    },
+                                                    "scopes": [
+                                                        "https://www.googleapis.com/auth/cloud-platform"
+                                                    ]
+                                                }
+                                            }
+                                        }
+                                    }
+                                },
                                 "metadataImports": {
                                     "methods": {
                                         "create": {
@@ -984,7 +1196,7 @@
             }
         }
     },
-    "revision": "20220118",
+    "revision": "20220205",
     "rootUrl": "https://metastore.googleapis.com/",
     "schemas": {
         "AuditConfig": {
@@ -1851,6 +2063,23 @@
             },
             "type": "object"
         },
+        "RemoveIamPolicyRequest": {
+            "description": "Request message for DataprocMetastore.RemoveIamPolicy.",
+            "id": "RemoveIamPolicyRequest",
+            "properties": {},
+            "type": "object"
+        },
+        "RemoveIamPolicyResponse": {
+            "description": "Response message for DataprocMetastore.RemoveIamPolicy.",
+            "id": "RemoveIamPolicyResponse",
+            "properties": {
+                "success": {
+                    "description": "whether related policies are removed",
+                    "type": "boolean"
+                }
+            },
+            "type": "object"
+        },
         "Restore": {
             "description": "The details of a metadata restore operation.",
             "id": "Restore",
diff --git a/discovery/googleapis_beta/networkconnectivity__v1alpha1.json b/discovery/googleapis_beta/networkconnectivity__v1alpha1.json
index 19e5ad5..fbb2d25 100644
--- a/discovery/googleapis_beta/networkconnectivity__v1alpha1.json
+++ b/discovery/googleapis_beta/networkconnectivity__v1alpha1.json
@@ -936,7 +936,7 @@
             }
         }
     },
-    "revision": "20220104",
+    "revision": "20220210",
     "rootUrl": "https://networkconnectivity.googleapis.com/",
     "schemas": {
         "AuditConfig": {
diff --git a/discovery/googleapis_beta/networksecurity__v1beta1.json b/discovery/googleapis_beta/networksecurity__v1beta1.json
index fcd0ae6..a4341cc 100644
--- a/discovery/googleapis_beta/networksecurity__v1beta1.json
+++ b/discovery/googleapis_beta/networksecurity__v1beta1.json
@@ -1035,7 +1035,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220128",
     "rootUrl": "https://networksecurity.googleapis.com/",
     "schemas": {
         "AuthorizationPolicy": {
@@ -1646,7 +1646,7 @@
             "type": "object"
         },
         "ServerTlsPolicy": {
-            "description": "ServerTlsPolicy is a resource that specifies how a server should authenticate incoming requests. This resource itself does not affect configuration unless it is attached to a target https proxy or endpoint config selector resource. ",
+            "description": "ServerTlsPolicy is a resource that specifies how a server should authenticate incoming requests. This resource itself does not affect configuration unless it is attached to a target https proxy or endpoint config selector resource.",
             "id": "ServerTlsPolicy",
             "properties": {
                 "allowOpen": {
diff --git a/discovery/googleapis_beta/ondemandscanning__v1beta1.json b/discovery/googleapis_beta/ondemandscanning__v1beta1.json
index 02f8fea..e6edcb3 100644
--- a/discovery/googleapis_beta/ondemandscanning__v1beta1.json
+++ b/discovery/googleapis_beta/ondemandscanning__v1beta1.json
@@ -337,7 +337,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220212",
     "rootUrl": "https://ondemandscanning.googleapis.com/",
     "schemas": {
         "AliasContext": {
diff --git a/discovery/googleapis_beta/osconfig__v1alpha.json b/discovery/googleapis_beta/osconfig__v1alpha.json
index 4fe9180..c6fc185 100644
--- a/discovery/googleapis_beta/osconfig__v1alpha.json
+++ b/discovery/googleapis_beta/osconfig__v1alpha.json
@@ -682,7 +682,7 @@
             }
         }
     },
-    "revision": "20220115",
+    "revision": "20220205",
     "rootUrl": "https://osconfig.googleapis.com/",
     "schemas": {
         "CVSSv3": {
@@ -838,7 +838,7 @@
             "type": "object"
         },
         "Date": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "Date",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis_beta/policysimulator__v1beta1.json b/discovery/googleapis_beta/policysimulator__v1beta1.json
index 4760053..6ba6b70 100644
--- a/discovery/googleapis_beta/policysimulator__v1beta1.json
+++ b/discovery/googleapis_beta/policysimulator__v1beta1.json
@@ -491,7 +491,7 @@
             }
         }
     },
-    "revision": "20211211",
+    "revision": "20220212",
     "rootUrl": "https://policysimulator.googleapis.com/",
     "schemas": {
         "GoogleCloudPolicysimulatorV1Replay": {
@@ -1234,7 +1234,7 @@
             "type": "object"
         },
         "GoogleTypeDate": {
-            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.",
+            "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
             "id": "GoogleTypeDate",
             "properties": {
                 "day": {
diff --git a/discovery/googleapis_beta/privateca__v1beta1.json b/discovery/googleapis_beta/privateca__v1beta1.json
index e716ab9..e0b53ae 100644
--- a/discovery/googleapis_beta/privateca__v1beta1.json
+++ b/discovery/googleapis_beta/privateca__v1beta1.json
@@ -1252,7 +1252,7 @@
             }
         }
     },
-    "revision": "20220107",
+    "revision": "20220202",
     "rootUrl": "https://privateca.googleapis.com/",
     "schemas": {
         "AccessUrls": {
diff --git a/discovery/googleapis_beta/prod_tt_sasportal__v1alpha1.json b/discovery/googleapis_beta/prod_tt_sasportal__v1alpha1.json
index 1c141d9..1751d14 100644
--- a/discovery/googleapis_beta/prod_tt_sasportal__v1alpha1.json
+++ b/discovery/googleapis_beta/prod_tt_sasportal__v1alpha1.json
@@ -2525,7 +2525,7 @@
             }
         }
     },
-    "revision": "20220120",
+    "revision": "20220215",
     "rootUrl": "https://prod-tt-sasportal.googleapis.com/",
     "schemas": {
         "SasPortalAssignment": {
@@ -2909,6 +2909,16 @@
                 "interferenceCoordinationGroup": {
                     "description": "ICG. A group of CBSDs that manage their own interference with the group. See CBRSA-TS-2001 V3.0.0 for more details.",
                     "type": "string"
+                },
+                "nrqzValidated": {
+                    "description": "Output only. Whether a CPI has validated to have coordinated with the National Quiet Zone office.",
+                    "readOnly": true,
+                    "type": "boolean"
+                },
+                "nrqzValidation": {
+                    "$ref": "SasPortalNrqzValidation",
+                    "description": "Output only. National Radio Quiet Zone validation info.",
+                    "readOnly": true
                 }
             },
             "type": "object"
@@ -3216,6 +3226,31 @@
             },
             "type": "object"
         },
+        "SasPortalNrqzValidation": {
+            "description": "Information about National Radio Quiet Zone validation. The presence of the field indicates the device has been validated.",
+            "id": "SasPortalNrqzValidation",
+            "properties": {
+                "caseId": {
+                    "description": "Validation case id.",
+                    "type": "string"
+                },
+                "cpiId": {
+                    "description": "CPI who signed the validation.",
+                    "type": "string"
+                },
+                "latitude": {
+                    "description": "Device latitude associated with the validation.",
+                    "format": "double",
+                    "type": "number"
+                },
+                "longitude": {
+                    "description": "Device longitude associated with the validation.",
+                    "format": "double",
+                    "type": "number"
+                }
+            },
+            "type": "object"
+        },
         "SasPortalOperation": {
             "description": "This resource represents a long-running operation that is the result of a network API call.",
             "id": "SasPortalOperation",
diff --git a/discovery/googleapis_beta/recommendationengine__v1beta1.json b/discovery/googleapis_beta/recommendationengine__v1beta1.json
index dc3785c..554977c 100644
--- a/discovery/googleapis_beta/recommendationengine__v1beta1.json
+++ b/discovery/googleapis_beta/recommendationengine__v1beta1.json
@@ -840,7 +840,7 @@
             }
         }
     },
-    "revision": "20220105",
+    "revision": "20220210",
     "rootUrl": "https://recommendationengine.googleapis.com/",
     "schemas": {
         "GoogleApiHttpBody": {
diff --git a/discovery/googleapis_beta/sasportal__v1alpha1.json b/discovery/googleapis_beta/sasportal__v1alpha1.json
index 33ec040..12b1304 100644
--- a/discovery/googleapis_beta/sasportal__v1alpha1.json
+++ b/discovery/googleapis_beta/sasportal__v1alpha1.json
@@ -2481,7 +2481,7 @@
             }
         }
     },
-    "revision": "20220110",
+    "revision": "20220214",
     "rootUrl": "https://sasportal.googleapis.com/",
     "schemas": {
         "SasPortalAssignment": {
@@ -2865,6 +2865,11 @@
                 "interferenceCoordinationGroup": {
                     "description": "ICG. A group of CBSDs that manage their own interference with the group. See CBRSA-TS-2001 V3.0.0 for more details.",
                     "type": "string"
+                },
+                "nrqzValidated": {
+                    "description": "Output only. Whether a CPI has validated to have coordinated with the National Quiet Zone office.",
+                    "readOnly": true,
+                    "type": "boolean"
                 }
             },
             "type": "object"
diff --git a/discovery/googleapis_beta/sqladmin__v1beta4.json b/discovery/googleapis_beta/sqladmin__v1beta4.json
index 91f577f..3a9e925 100644
--- a/discovery/googleapis_beta/sqladmin__v1beta4.json
+++ b/discovery/googleapis_beta/sqladmin__v1beta4.json
@@ -1875,7 +1875,7 @@
             }
         }
     },
-    "revision": "20220117",
+    "revision": "20220127",
     "rootUrl": "https://sqladmin.googleapis.com/",
     "schemas": {
         "AclEntry": {
@@ -2363,6 +2363,13 @@
             "description": "A Cloud SQL instance resource.",
             "id": "DatabaseInstance",
             "properties": {
+                "availableMaintenanceVersions": {
+                    "description": "List all maintenance versions applicable on the instance",
+                    "items": {
+                        "type": "string"
+                    },
+                    "type": "array"
+                },
                 "backendType": {
                     "description": "The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.",
                     "enum": [
@@ -2512,6 +2519,10 @@
                     "description": "This is always `sql#instance`.",
                     "type": "string"
                 },
+                "maintenanceVersion": {
+                    "description": "The current software version on the instance.",
+                    "type": "string"
+                },
                 "masterInstanceName": {
                     "description": "The name of the instance which will act as primary in the replication setup.",
                     "type": "string"
diff --git a/discovery/googleapis_beta/toolresults__v1beta3.json b/discovery/googleapis_beta/toolresults__v1beta3.json
index 55b986c..e55d4a7 100644
--- a/discovery/googleapis_beta/toolresults__v1beta3.json
+++ b/discovery/googleapis_beta/toolresults__v1beta3.json
@@ -1462,7 +1462,7 @@
             }
         }
     },
-    "revision": "20220122",
+    "revision": "20220215",
     "rootUrl": "https://toolresults.googleapis.com/",
     "schemas": {
         "ANR": {
diff --git a/discovery/googleapis_beta/transcoder__v1beta1.json b/discovery/googleapis_beta/transcoder__v1beta1.json
deleted file mode 100644
index daaa603..0000000
--- a/discovery/googleapis_beta/transcoder__v1beta1.json
+++ /dev/null
@@ -1,1504 +0,0 @@
-{
-    "auth": {
-        "oauth2": {
-            "scopes": {
-                "https://www.googleapis.com/auth/cloud-platform": {
-                    "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
-                }
-            }
-        }
-    },
-    "basePath": "",
-    "baseUrl": "https://transcoder.googleapis.com/",
-    "batchPath": "batch",
-    "canonicalName": "Transcoder",
-    "description": "This API converts video files into formats suitable for consumer distribution. ",
-    "discoveryVersion": "v1",
-    "documentationLink": "https://cloud.google.com/transcoder/docs/",
-    "icons": {
-        "x16": "http://www.google.com/images/icons/product/search-16.gif",
-        "x32": "http://www.google.com/images/icons/product/search-32.gif"
-    },
-    "id": "transcoder:v1beta1",
-    "kind": "discovery#restDescription",
-    "name": "transcoder",
-    "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": {
-        "projects": {
-            "resources": {
-                "locations": {
-                    "resources": {
-                        "jobTemplates": {
-                            "methods": {
-                                "create": {
-                                    "description": "Creates a job template in the specified region.",
-                                    "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/jobTemplates",
-                                    "httpMethod": "POST",
-                                    "id": "transcoder.projects.locations.jobTemplates.create",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "jobTemplateId": {
-                                            "description": "Required. The ID to use for the job template, which will become the final component of the job template's resource name. This value should be 4-63 characters, and valid characters must match the regular expression `a-zA-Z*`.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "parent": {
-                                            "description": "Required. The parent location to create this job template. Format: `projects/{project}/locations/{location}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+parent}/jobTemplates",
-                                    "request": {
-                                        "$ref": "JobTemplate"
-                                    },
-                                    "response": {
-                                        "$ref": "JobTemplate"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "delete": {
-                                    "description": "Deletes a job template.",
-                                    "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/jobTemplates/{jobTemplatesId}",
-                                    "httpMethod": "DELETE",
-                                    "id": "transcoder.projects.locations.jobTemplates.delete",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "Required. The name of the job template to delete. `projects/{project}/locations/{location}/jobTemplates/{job_template}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/jobTemplates/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+name}",
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Returns the job template data.",
-                                    "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/jobTemplates/{jobTemplatesId}",
-                                    "httpMethod": "GET",
-                                    "id": "transcoder.projects.locations.jobTemplates.get",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "Required. The name of the job template to retrieve. Format: `projects/{project}/locations/{location}/jobTemplates/{job_template}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/jobTemplates/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+name}",
-                                    "response": {
-                                        "$ref": "JobTemplate"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "list": {
-                                    "description": "Lists job templates in the specified region.",
-                                    "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/jobTemplates",
-                                    "httpMethod": "GET",
-                                    "id": "transcoder.projects.locations.jobTemplates.list",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "pageSize": {
-                                            "description": "The maximum number of items to return.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "pageToken": {
-                                            "description": "The `next_page_token` value returned from a previous List request, if any.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "parent": {
-                                            "description": "Required. The parent location from which to retrieve the collection of job templates. Format: `projects/{project}/locations/{location}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+parent}/jobTemplates",
-                                    "response": {
-                                        "$ref": "ListJobTemplatesResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                }
-                            }
-                        },
-                        "jobs": {
-                            "methods": {
-                                "create": {
-                                    "description": "Creates a job in the specified region.",
-                                    "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/jobs",
-                                    "httpMethod": "POST",
-                                    "id": "transcoder.projects.locations.jobs.create",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "parent": {
-                                            "description": "Required. The parent location to create and process this job. Format: `projects/{project}/locations/{location}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+parent}/jobs",
-                                    "request": {
-                                        "$ref": "Job"
-                                    },
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "delete": {
-                                    "description": "Deletes a job.",
-                                    "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/jobs/{jobsId}",
-                                    "httpMethod": "DELETE",
-                                    "id": "transcoder.projects.locations.jobs.delete",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "Required. The name of the job to delete. Format: `projects/{project}/locations/{location}/jobs/{job}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/jobs/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+name}",
-                                    "response": {
-                                        "$ref": "Empty"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "get": {
-                                    "description": "Returns the job data.",
-                                    "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/jobs/{jobsId}",
-                                    "httpMethod": "GET",
-                                    "id": "transcoder.projects.locations.jobs.get",
-                                    "parameterOrder": [
-                                        "name"
-                                    ],
-                                    "parameters": {
-                                        "name": {
-                                            "description": "Required. The name of the job to retrieve. Format: `projects/{project}/locations/{location}/jobs/{job}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+/jobs/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+name}",
-                                    "response": {
-                                        "$ref": "Job"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                },
-                                "list": {
-                                    "description": "Lists jobs in the specified region.",
-                                    "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/jobs",
-                                    "httpMethod": "GET",
-                                    "id": "transcoder.projects.locations.jobs.list",
-                                    "parameterOrder": [
-                                        "parent"
-                                    ],
-                                    "parameters": {
-                                        "pageSize": {
-                                            "description": "The maximum number of items to return.",
-                                            "format": "int32",
-                                            "location": "query",
-                                            "type": "integer"
-                                        },
-                                        "pageToken": {
-                                            "description": "The `next_page_token` value returned from a previous List request, if any.",
-                                            "location": "query",
-                                            "type": "string"
-                                        },
-                                        "parent": {
-                                            "description": "Required. Format: `projects/{project}/locations/{location}`",
-                                            "location": "path",
-                                            "pattern": "^projects/[^/]+/locations/[^/]+$",
-                                            "required": true,
-                                            "type": "string"
-                                        }
-                                    },
-                                    "path": "v1beta1/{+parent}/jobs",
-                                    "response": {
-                                        "$ref": "ListJobsResponse"
-                                    },
-                                    "scopes": [
-                                        "https://www.googleapis.com/auth/cloud-platform"
-                                    ]
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    },
-    "revision": "20211108",
-    "rootUrl": "https://transcoder.googleapis.com/",
-    "schemas": {
-        "AdBreak": {
-            "description": "Ad break.",
-            "id": "AdBreak",
-            "properties": {
-                "startTimeOffset": {
-                    "description": "Start time in seconds for the ad break, relative to the output file timeline. The default is `0s`.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Aes128Encryption": {
-            "description": "Configuration for AES-128 encryption.",
-            "id": "Aes128Encryption",
-            "properties": {
-                "keyUri": {
-                    "description": "Required. URI of the key delivery service. This URI is inserted into the M3U8 header.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Animation": {
-            "description": "Animation types.",
-            "id": "Animation",
-            "properties": {
-                "animationEnd": {
-                    "$ref": "AnimationEnd",
-                    "description": "End previous animation."
-                },
-                "animationFade": {
-                    "$ref": "AnimationFade",
-                    "description": "Display overlay object with fade animation."
-                },
-                "animationStatic": {
-                    "$ref": "AnimationStatic",
-                    "description": "Display static overlay object."
-                }
-            },
-            "type": "object"
-        },
-        "AnimationEnd": {
-            "description": "End previous overlay animation from the video. Without AnimationEnd, the overlay object will keep the state of previous animation until the end of the video.",
-            "id": "AnimationEnd",
-            "properties": {
-                "startTimeOffset": {
-                    "description": "The time to end overlay object, in seconds. Default: 0",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AnimationFade": {
-            "description": "Display overlay object with fade animation.",
-            "id": "AnimationFade",
-            "properties": {
-                "endTimeOffset": {
-                    "description": "The time to end the fade animation, in seconds. Default: `start_time_offset` + 1s",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "fadeType": {
-                    "description": "Required. Type of fade animation: `FADE_IN` or `FADE_OUT`.",
-                    "enum": [
-                        "FADE_TYPE_UNSPECIFIED",
-                        "FADE_IN",
-                        "FADE_OUT"
-                    ],
-                    "enumDescriptions": [
-                        "The fade type is not specified.",
-                        "Fade the overlay object into view.",
-                        "Fade the overlay object out of view."
-                    ],
-                    "type": "string"
-                },
-                "startTimeOffset": {
-                    "description": "The time to start the fade animation, in seconds. Default: 0",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "xy": {
-                    "$ref": "NormalizedCoordinate",
-                    "description": "Normalized coordinates based on output video resolution. Valid values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the overlay object. For example, use the x and y coordinates {0,0} to position the top-left corner of the overlay animation in the top-left corner of the output video."
-                }
-            },
-            "type": "object"
-        },
-        "AnimationStatic": {
-            "description": "Display static overlay object.",
-            "id": "AnimationStatic",
-            "properties": {
-                "startTimeOffset": {
-                    "description": "The time to start displaying the overlay object, in seconds. Default: 0",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "xy": {
-                    "$ref": "NormalizedCoordinate",
-                    "description": "Normalized coordinates based on output video resolution. Valid values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the overlay object. For example, use the x and y coordinates {0,0} to position the top-left corner of the overlay animation in the top-left corner of the output video."
-                }
-            },
-            "type": "object"
-        },
-        "Audio": {
-            "description": "Audio preprocessing configuration.",
-            "id": "Audio",
-            "properties": {
-                "highBoost": {
-                    "description": "Enable boosting high frequency components. The default is `false`.",
-                    "type": "boolean"
-                },
-                "lowBoost": {
-                    "description": "Enable boosting low frequency components. The default is `false`.",
-                    "type": "boolean"
-                },
-                "lufs": {
-                    "description": "Specify audio loudness normalization in loudness units relative to full scale (LUFS). Enter a value between -24 and 0 (the default), where: * -24 is the Advanced Television Systems Committee (ATSC A/85) standard * -23 is the EU R128 broadcast standard * -19 is the prior standard for online mono audio * -18 is the ReplayGain standard * -16 is the prior standard for stereo audio * -14 is the new online audio standard recommended by Spotify, as well as Amazon Echo * 0 disables normalization",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "AudioAtom": {
-            "description": "The mapping for the `Job.edit_list` atoms with audio `EditAtom.inputs`.",
-            "id": "AudioAtom",
-            "properties": {
-                "channels": {
-                    "description": "List of `Channel`s for this audio stream. for in-depth explanation.",
-                    "items": {
-                        "$ref": "AudioChannel"
-                    },
-                    "type": "array"
-                },
-                "key": {
-                    "description": "Required. The `EditAtom.key` that references the atom with audio inputs in the `Job.edit_list`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "AudioChannel": {
-            "description": "The audio channel.",
-            "id": "AudioChannel",
-            "properties": {
-                "inputs": {
-                    "description": "List of `Job.inputs` for this audio channel.",
-                    "items": {
-                        "$ref": "AudioChannelInput"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "AudioChannelInput": {
-            "description": "Identifies which input file, track, and channel should be used.",
-            "id": "AudioChannelInput",
-            "properties": {
-                "channel": {
-                    "description": "Required. The zero-based index of the channel in the input file.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "gainDb": {
-                    "description": "Audio volume control in dB. Negative values decrease volume, positive values increase. The default is 0.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "key": {
-                    "description": "Required. The `Input.key` that identifies the input file.",
-                    "type": "string"
-                },
-                "track": {
-                    "description": "Required. The zero-based index of the track in the input file.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "AudioStream": {
-            "description": "Audio stream resource.",
-            "id": "AudioStream",
-            "properties": {
-                "bitrateBps": {
-                    "description": "Required. Audio bitrate in bits per second. Must be between 1 and 10,000,000.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "channelCount": {
-                    "description": "Number of audio channels. Must be between 1 and 6. The default is 2.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "channelLayout": {
-                    "description": "A list of channel names specifying layout of the audio channels. This only affects the metadata embedded in the container headers, if supported by the specified format. The default is `[\"fl\", \"fr\"]`. Supported channel names: - 'fl' - Front left channel - 'fr' - Front right channel - 'sl' - Side left channel - 'sr' - Side right channel - 'fc' - Front center channel - 'lfe' - Low frequency",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "codec": {
-                    "description": "The codec for this audio stream. The default is `\"aac\"`. Supported audio codecs: - 'aac' - 'aac-he' - 'aac-he-v2' - 'mp3' - 'ac3' - 'eac3'",
-                    "type": "string"
-                },
-                "mapping": {
-                    "description": "The mapping for the `Job.edit_list` atoms with audio `EditAtom.inputs`.",
-                    "items": {
-                        "$ref": "AudioAtom"
-                    },
-                    "type": "array"
-                },
-                "sampleRateHertz": {
-                    "description": "The audio sample rate in Hertz. The default is 48000 Hertz.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Color": {
-            "description": "Color preprocessing configuration.",
-            "id": "Color",
-            "properties": {
-                "brightness": {
-                    "description": "Control brightness of the video. Enter a value between -1 and 1, where -1 is minimum brightness and 1 is maximum brightness. 0 is no change. The default is 0.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "contrast": {
-                    "description": "Control black and white contrast of the video. Enter a value between -1 and 1, where -1 is minimum contrast and 1 is maximum contrast. 0 is no change. The default is 0.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "saturation": {
-                    "description": "Control color saturation of the video. Enter a value between -1 and 1, where -1 is fully desaturated and 1 is maximum saturation. 0 is no change. The default is 0.",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "Crop": {
-            "description": "Video cropping configuration for the input video. The cropped input video is scaled to match the output resolution.",
-            "id": "Crop",
-            "properties": {
-                "bottomPixels": {
-                    "description": "The number of pixels to crop from the bottom. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "leftPixels": {
-                    "description": "The number of pixels to crop from the left. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "rightPixels": {
-                    "description": "The number of pixels to crop from the right. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "topPixels": {
-                    "description": "The number of pixels to crop from the top. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "Deblock": {
-            "description": "Deblock preprocessing configuration.",
-            "id": "Deblock",
-            "properties": {
-                "enabled": {
-                    "description": "Enable deblocker. The default is `false`.",
-                    "type": "boolean"
-                },
-                "strength": {
-                    "description": "Set strength of the deblocker. Enter a value between 0 and 1. The higher the value, the stronger the block removal. 0 is no deblocking. The default is 0.",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "Denoise": {
-            "description": "Denoise preprocessing configuration.",
-            "id": "Denoise",
-            "properties": {
-                "strength": {
-                    "description": "Set strength of the denoise. Enter a value between 0 and 1. The higher the value, the smoother the image. 0 is no denoising. The default is 0.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "tune": {
-                    "description": "Set the denoiser mode. The default is `\"standard\"`. Supported denoiser modes: - 'standard' - 'grain'",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "EditAtom": {
-            "description": "Edit atom.",
-            "id": "EditAtom",
-            "properties": {
-                "endTimeOffset": {
-                    "description": "End time in seconds for the atom, relative to the input file timeline. When `end_time_offset` is not specified, the `inputs` are used until the end of the atom.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "inputs": {
-                    "description": "List of `Input.key`s identifying files that should be used in this atom. The listed `inputs` must have the same timeline.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "key": {
-                    "description": "A unique key for this atom. Must be specified when using advanced mapping.",
-                    "type": "string"
-                },
-                "startTimeOffset": {
-                    "description": "Start time in seconds for the atom, relative to the input file timeline. The default is `0s`.",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ElementaryStream": {
-            "description": "Encoding of an input file such as an audio, video, or text track. Elementary streams must be packaged before mapping and sharing between different output formats.",
-            "id": "ElementaryStream",
-            "properties": {
-                "audioStream": {
-                    "$ref": "AudioStream",
-                    "description": "Encoding of an audio stream."
-                },
-                "key": {
-                    "description": "A unique key for this elementary stream.",
-                    "type": "string"
-                },
-                "textStream": {
-                    "$ref": "TextStream",
-                    "description": "Encoding of a text stream. For example, closed captions or subtitles."
-                },
-                "videoStream": {
-                    "$ref": "VideoStream",
-                    "description": "Encoding of a video stream."
-                }
-            },
-            "type": "object"
-        },
-        "Empty": {
-            "description": "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 `{}`.",
-            "id": "Empty",
-            "properties": {},
-            "type": "object"
-        },
-        "Encryption": {
-            "description": "Encryption settings.",
-            "id": "Encryption",
-            "properties": {
-                "aes128": {
-                    "$ref": "Aes128Encryption",
-                    "description": "Configuration for AES-128 encryption."
-                },
-                "iv": {
-                    "description": "Required. 128 bit Initialization Vector (IV) represented as lowercase hexadecimal digits.",
-                    "type": "string"
-                },
-                "key": {
-                    "description": "Required. 128 bit encryption key represented as lowercase hexadecimal digits.",
-                    "type": "string"
-                },
-                "mpegCenc": {
-                    "$ref": "MpegCommonEncryption",
-                    "description": "Configuration for MPEG Common Encryption (MPEG-CENC)."
-                },
-                "sampleAes": {
-                    "$ref": "SampleAesEncryption",
-                    "description": "Configuration for SAMPLE-AES encryption."
-                }
-            },
-            "type": "object"
-        },
-        "FailureDetail": {
-            "description": "Additional information about the reasons for the failure.",
-            "id": "FailureDetail",
-            "properties": {
-                "description": {
-                    "description": "A description of the failure.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Image": {
-            "description": "Overlaid jpeg image.",
-            "id": "Image",
-            "properties": {
-                "alpha": {
-                    "description": "Target image opacity. Valid values are from `1.0` (solid, default) to `0.0` (transparent), exclusive. Set this to a value greater than `0.0`.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "resolution": {
-                    "$ref": "NormalizedCoordinate",
-                    "description": "Normalized image resolution, based on output video resolution. Valid values: `0.0`–`1.0`. To respect the original image aspect ratio, set either `x` or `y` to `0.0`. To use the original image resolution, set both `x` and `y` to `0.0`."
-                },
-                "uri": {
-                    "description": "Required. URI of the JPEG image in Cloud Storage. For example, `gs://bucket/inputs/image.jpeg`. JPEG is the only supported image type.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Input": {
-            "description": "Input asset.",
-            "id": "Input",
-            "properties": {
-                "key": {
-                    "description": "A unique key for this input. Must be specified when using advanced mapping and edit lists.",
-                    "type": "string"
-                },
-                "preprocessingConfig": {
-                    "$ref": "PreprocessingConfig",
-                    "description": "Preprocessing configurations."
-                },
-                "uri": {
-                    "description": "URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`). If empty, the value will be populated from `Job.input_uri`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Job": {
-            "description": "Transcoding job resource.",
-            "id": "Job",
-            "properties": {
-                "config": {
-                    "$ref": "JobConfig",
-                    "description": "The configuration for this job."
-                },
-                "createTime": {
-                    "description": "Output only. The time the job was created.",
-                    "format": "google-datetime",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "endTime": {
-                    "description": "Output only. The time the transcoding finished.",
-                    "format": "google-datetime",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "failureDetails": {
-                    "description": "Output only. List of failure details. This property may contain additional information about the failure when `failure_reason` is present. *Note*: This feature is not yet available.",
-                    "items": {
-                        "$ref": "FailureDetail"
-                    },
-                    "readOnly": true,
-                    "type": "array"
-                },
-                "failureReason": {
-                    "description": "Output only. A description of the reason for the failure. This property is always present when `state` is `FAILED`.",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "inputUri": {
-                    "description": "Input only. Specify the `input_uri` to populate empty `uri` fields in each element of `Job.config.inputs` or `JobTemplate.config.inputs` when using template. URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`).",
-                    "type": "string"
-                },
-                "name": {
-                    "description": "The resource name of the job. Format: `projects/{project}/locations/{location}/jobs/{job}`",
-                    "type": "string"
-                },
-                "originUri": {
-                    "$ref": "OriginUri",
-                    "description": "Output only. The origin URI. *Note*: This feature is not yet available.",
-                    "readOnly": true
-                },
-                "outputUri": {
-                    "description": "Input only. Specify the `output_uri` to populate an empty `Job.config.output.uri` or `JobTemplate.config.output.uri` when using template. URI for the output file(s). For example, `gs://my-bucket/outputs/`.",
-                    "type": "string"
-                },
-                "priority": {
-                    "description": "Specify the priority of the job. Enter a value between 0 and 100, where 0 is the lowest priority and 100 is the highest priority. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "progress": {
-                    "$ref": "Progress",
-                    "description": "Output only. Estimated fractional progress, from `0` to `1` for each step. *Note*: This feature is not yet available.",
-                    "readOnly": true
-                },
-                "startTime": {
-                    "description": "Output only. The time the transcoding started.",
-                    "format": "google-datetime",
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "state": {
-                    "description": "Output only. The current state of the job.",
-                    "enum": [
-                        "PROCESSING_STATE_UNSPECIFIED",
-                        "PENDING",
-                        "RUNNING",
-                        "SUCCEEDED",
-                        "FAILED"
-                    ],
-                    "enumDescriptions": [
-                        "The processing state is not specified.",
-                        "The job is enqueued and will be picked up for processing soon.",
-                        "The job is being processed.",
-                        "The job has been completed successfully.",
-                        "The job has failed. For additional information, see `failure_reason` and `failure_details`"
-                    ],
-                    "readOnly": true,
-                    "type": "string"
-                },
-                "templateId": {
-                    "description": "Input only. Specify the `template_id` to use for populating `Job.config`. The default is `preset/web-hd`. Preset Transcoder templates: - `preset/{preset_id}` - User defined JobTemplate: `{job_template_id}`",
-                    "type": "string"
-                },
-                "ttlAfterCompletionDays": {
-                    "description": "Job time to live value in days, which will be effective after job completion. Job should be deleted automatically after the given TTL. Enter a value between 1 and 90. The default is 30.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "JobConfig": {
-            "description": "Job configuration",
-            "id": "JobConfig",
-            "properties": {
-                "adBreaks": {
-                    "description": "List of ad breaks. Specifies where to insert ad break tags in the output manifests.",
-                    "items": {
-                        "$ref": "AdBreak"
-                    },
-                    "type": "array"
-                },
-                "editList": {
-                    "description": "List of `Edit atom`s. Defines the ultimate timeline of the resulting file or manifest.",
-                    "items": {
-                        "$ref": "EditAtom"
-                    },
-                    "type": "array"
-                },
-                "elementaryStreams": {
-                    "description": "List of elementary streams.",
-                    "items": {
-                        "$ref": "ElementaryStream"
-                    },
-                    "type": "array"
-                },
-                "inputs": {
-                    "description": "List of input assets stored in Cloud Storage.",
-                    "items": {
-                        "$ref": "Input"
-                    },
-                    "type": "array"
-                },
-                "manifests": {
-                    "description": "List of output manifests.",
-                    "items": {
-                        "$ref": "Manifest"
-                    },
-                    "type": "array"
-                },
-                "muxStreams": {
-                    "description": "List of multiplexing settings for output streams.",
-                    "items": {
-                        "$ref": "MuxStream"
-                    },
-                    "type": "array"
-                },
-                "output": {
-                    "$ref": "Output",
-                    "description": "Output configuration."
-                },
-                "overlays": {
-                    "description": "List of overlays on the output video, in descending Z-order.",
-                    "items": {
-                        "$ref": "Overlay"
-                    },
-                    "type": "array"
-                },
-                "pubsubDestination": {
-                    "$ref": "PubsubDestination",
-                    "description": "Destination on Pub/Sub."
-                },
-                "spriteSheets": {
-                    "description": "List of output sprite sheets.",
-                    "items": {
-                        "$ref": "SpriteSheet"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "JobTemplate": {
-            "description": "Transcoding job template resource.",
-            "id": "JobTemplate",
-            "properties": {
-                "config": {
-                    "$ref": "JobConfig",
-                    "description": "The configuration for this template."
-                },
-                "name": {
-                    "description": "The resource name of the job template. Format: `projects/{project}/locations/{location}/jobTemplates/{job_template}`",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListJobTemplatesResponse": {
-            "description": "Response message for `TranscoderService.ListJobTemplates`.",
-            "id": "ListJobTemplatesResponse",
-            "properties": {
-                "jobTemplates": {
-                    "description": "List of job templates in the specified region.",
-                    "items": {
-                        "$ref": "JobTemplate"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The pagination token.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "ListJobsResponse": {
-            "description": "Response message for `TranscoderService.ListJobs`.",
-            "id": "ListJobsResponse",
-            "properties": {
-                "jobs": {
-                    "description": "List of jobs in the specified region.",
-                    "items": {
-                        "$ref": "Job"
-                    },
-                    "type": "array"
-                },
-                "nextPageToken": {
-                    "description": "The pagination token.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Manifest": {
-            "description": "Manifest configuration.",
-            "id": "Manifest",
-            "properties": {
-                "fileName": {
-                    "description": "The name of the generated file. The default is `\"manifest\"` with the extension suffix corresponding to the `Manifest.type`.",
-                    "type": "string"
-                },
-                "muxStreams": {
-                    "description": "Required. List of user given `MuxStream.key`s that should appear in this manifest. When `Manifest.type` is `HLS`, a media manifest with name `MuxStream.key` and `.m3u8` extension is generated for each element of the `Manifest.mux_streams`.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "type": {
-                    "description": "Required. Type of the manifest, can be \"HLS\" or \"DASH\".",
-                    "enum": [
-                        "MANIFEST_TYPE_UNSPECIFIED",
-                        "HLS",
-                        "DASH"
-                    ],
-                    "enumDescriptions": [
-                        "The manifest type is not specified.",
-                        "Create `\"HLS\"` manifest. The corresponding file extension is `\".m3u8\"`.",
-                        "Create `\"DASH\"` manifest. The corresponding file extension is `\".mpd\"`."
-                    ],
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MpegCommonEncryption": {
-            "description": "Configuration for MPEG Common Encryption (MPEG-CENC).",
-            "id": "MpegCommonEncryption",
-            "properties": {
-                "keyId": {
-                    "description": "Required. 128 bit Key ID represented as lowercase hexadecimal digits for use with common encryption.",
-                    "type": "string"
-                },
-                "scheme": {
-                    "description": "Required. Specify the encryption scheme. Supported encryption schemes: - 'cenc' - 'cbcs'",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "MuxStream": {
-            "description": "Multiplexing settings for output stream.",
-            "id": "MuxStream",
-            "properties": {
-                "container": {
-                    "description": "The container format. The default is `\"mp4\"` Supported container formats: - 'ts' - 'fmp4'- the corresponding file extension is `\".m4s\"` - 'mp4' - 'vtt'",
-                    "type": "string"
-                },
-                "elementaryStreams": {
-                    "description": "List of `ElementaryStream.key`s multiplexed in this stream.",
-                    "items": {
-                        "type": "string"
-                    },
-                    "type": "array"
-                },
-                "encryption": {
-                    "$ref": "Encryption",
-                    "description": "Encryption settings."
-                },
-                "fileName": {
-                    "description": "The name of the generated file. The default is `MuxStream.key` with the extension suffix corresponding to the `MuxStream.container`. Individual segments also have an incremental 10-digit zero-padded suffix starting from 0 before the extension, such as `\"mux_stream0000000123.ts\"`.",
-                    "type": "string"
-                },
-                "key": {
-                    "description": "A unique key for this multiplexed stream. HLS media manifests will be named `MuxStream.key` with the `\".m3u8\"` extension suffix.",
-                    "type": "string"
-                },
-                "segmentSettings": {
-                    "$ref": "SegmentSettings",
-                    "description": "Segment settings for `\"ts\"`, `\"fmp4\"` and `\"vtt\"`."
-                }
-            },
-            "type": "object"
-        },
-        "NormalizedCoordinate": {
-            "description": "2D normalized coordinates. Default: `{0.0, 0.0}`",
-            "id": "NormalizedCoordinate",
-            "properties": {
-                "x": {
-                    "description": "Normalized x coordinate.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "y": {
-                    "description": "Normalized y coordinate.",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "OriginUri": {
-            "description": "The origin URI.",
-            "id": "OriginUri",
-            "properties": {
-                "dash": {
-                    "description": "Dash manifest URI. If multiple Dash manifests are created, only the first one is listed.",
-                    "type": "string"
-                },
-                "hls": {
-                    "description": "HLS manifest URI per https://tools.ietf.org/html/rfc8216#section-4.3.4. If multiple HLS manifests are created, only the first one is listed.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Output": {
-            "description": "Location of output file(s) in a Cloud Storage bucket.",
-            "id": "Output",
-            "properties": {
-                "uri": {
-                    "description": "URI for the output file(s). For example, `gs://my-bucket/outputs/`. If empty the value is populated from `Job.output_uri`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "Overlay": {
-            "description": "Overlay configuration.",
-            "id": "Overlay",
-            "properties": {
-                "animations": {
-                    "description": "List of Animations. The list should be chronological, without any time overlap.",
-                    "items": {
-                        "$ref": "Animation"
-                    },
-                    "type": "array"
-                },
-                "image": {
-                    "$ref": "Image",
-                    "description": "Image overlay."
-                }
-            },
-            "type": "object"
-        },
-        "Pad": {
-            "description": "Pad filter configuration for the input video. The padded input video is scaled after padding with black to match the output resolution.",
-            "id": "Pad",
-            "properties": {
-                "bottomPixels": {
-                    "description": "The number of pixels to add to the bottom. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "leftPixels": {
-                    "description": "The number of pixels to add to the left. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "rightPixels": {
-                    "description": "The number of pixels to add to the right. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "topPixels": {
-                    "description": "The number of pixels to add to the top. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "PreprocessingConfig": {
-            "description": "Preprocessing configurations.",
-            "id": "PreprocessingConfig",
-            "properties": {
-                "audio": {
-                    "$ref": "Audio",
-                    "description": "Audio preprocessing configuration."
-                },
-                "color": {
-                    "$ref": "Color",
-                    "description": "Color preprocessing configuration."
-                },
-                "crop": {
-                    "$ref": "Crop",
-                    "description": "Specify the video cropping configuration."
-                },
-                "deblock": {
-                    "$ref": "Deblock",
-                    "description": "Deblock preprocessing configuration."
-                },
-                "denoise": {
-                    "$ref": "Denoise",
-                    "description": "Denoise preprocessing configuration."
-                },
-                "pad": {
-                    "$ref": "Pad",
-                    "description": "Specify the video pad filter configuration."
-                }
-            },
-            "type": "object"
-        },
-        "Progress": {
-            "description": "Estimated fractional progress for each step, from `0` to `1`.",
-            "id": "Progress",
-            "properties": {
-                "analyzed": {
-                    "description": "Estimated fractional progress for `analyzing` step.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "encoded": {
-                    "description": "Estimated fractional progress for `encoding` step.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "notified": {
-                    "description": "Estimated fractional progress for `notifying` step.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "uploaded": {
-                    "description": "Estimated fractional progress for `uploading` step.",
-                    "format": "double",
-                    "type": "number"
-                }
-            },
-            "type": "object"
-        },
-        "PubsubDestination": {
-            "description": "A Pub/Sub destination.",
-            "id": "PubsubDestination",
-            "properties": {
-                "topic": {
-                    "description": "The name of the Pub/Sub topic to publish job completion notification to. For example: `projects/{project}/topics/{topic}`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SampleAesEncryption": {
-            "description": "Configuration for SAMPLE-AES encryption.",
-            "id": "SampleAesEncryption",
-            "properties": {
-                "keyUri": {
-                    "description": "Required. URI of the key delivery service. This URI is inserted into the M3U8 header.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SegmentSettings": {
-            "description": "Segment settings for `\"ts\"`, `\"fmp4\"` and `\"vtt\"`.",
-            "id": "SegmentSettings",
-            "properties": {
-                "individualSegments": {
-                    "description": "Required. Create an individual segment file. The default is `false`.",
-                    "type": "boolean"
-                },
-                "segmentDuration": {
-                    "description": "Duration of the segments in seconds. The default is `\"6.0s\"`. Note that `segmentDuration` must be greater than or equal to [`gopDuration`](#videostream), and `segmentDuration` must be divisible by [`gopDuration`](#videostream).",
-                    "format": "google-duration",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "SpriteSheet": {
-            "description": "Sprite sheet configuration.",
-            "id": "SpriteSheet",
-            "properties": {
-                "columnCount": {
-                    "description": "The maximum number of sprites per row in a sprite sheet. The default is 0, which indicates no maximum limit.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "endTimeOffset": {
-                    "description": "End time in seconds, relative to the output file timeline. When `end_time_offset` is not specified, the sprites are generated until the end of the output file.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "filePrefix": {
-                    "description": "Required. File name prefix for the generated sprite sheets. Each sprite sheet has an incremental 10-digit zero-padded suffix starting from 0 before the extension, such as `\"sprite_sheet0000000123.jpeg\"`.",
-                    "type": "string"
-                },
-                "format": {
-                    "description": "Format type. The default is `\"jpeg\"`. Supported formats: - 'jpeg'",
-                    "type": "string"
-                },
-                "interval": {
-                    "description": "Starting from `0s`, create sprites at regular intervals. Specify the interval value in seconds.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "quality": {
-                    "description": "The quality of the generated sprite sheet. Enter a value between 1 and 100, where 1 is the lowest quality and 100 is the highest quality. The default is 100. A high quality value corresponds to a low image data compression ratio.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "rowCount": {
-                    "description": "The maximum number of rows per sprite sheet. When the sprite sheet is full, a new sprite sheet is created. The default is 0, which indicates no maximum limit.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "spriteHeightPixels": {
-                    "description": "Required. The height of sprite in pixels. Must be an even integer. To preserve the source aspect ratio, set the SpriteSheet.sprite_height_pixels field or the SpriteSheet.sprite_width_pixels field, but not both (the API will automatically calculate the missing field).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "spriteWidthPixels": {
-                    "description": "Required. The width of sprite in pixels. Must be an even integer. To preserve the source aspect ratio, set the SpriteSheet.sprite_width_pixels field or the SpriteSheet.sprite_height_pixels field, but not both (the API will automatically calculate the missing field).",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "startTimeOffset": {
-                    "description": "Start time in seconds, relative to the output file timeline. Determines the first sprite to pick. The default is `0s`.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "totalCount": {
-                    "description": "Total number of sprites. Create the specified number of sprites distributed evenly across the timeline of the output media. The default is 100.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "TextAtom": {
-            "description": "The mapping for the `Job.edit_list` atoms with text `EditAtom.inputs`.",
-            "id": "TextAtom",
-            "properties": {
-                "inputs": {
-                    "description": "List of `Job.inputs` that should be embedded in this atom. Only one input is supported.",
-                    "items": {
-                        "$ref": "TextInput"
-                    },
-                    "type": "array"
-                },
-                "key": {
-                    "description": "Required. The `EditAtom.key` that references atom with text inputs in the `Job.edit_list`.",
-                    "type": "string"
-                }
-            },
-            "type": "object"
-        },
-        "TextInput": {
-            "description": "Identifies which input file and track should be used.",
-            "id": "TextInput",
-            "properties": {
-                "key": {
-                    "description": "Required. The `Input.key` that identifies the input file.",
-                    "type": "string"
-                },
-                "track": {
-                    "description": "Required. The zero-based index of the track in the input file.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        },
-        "TextStream": {
-            "description": "Encoding of a text stream. For example, closed captions or subtitles.",
-            "id": "TextStream",
-            "properties": {
-                "codec": {
-                    "description": "The codec for this text stream. The default is `\"webvtt\"`. Supported text codecs: - 'srt' - 'ttml' - 'cea608' - 'cea708' - 'webvtt'",
-                    "type": "string"
-                },
-                "languageCode": {
-                    "description": "Required. The BCP-47 language code, such as `\"en-US\"` or `\"sr-Latn\"`. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
-                    "type": "string"
-                },
-                "mapping": {
-                    "description": "The mapping for the `Job.edit_list` atoms with text `EditAtom.inputs`.",
-                    "items": {
-                        "$ref": "TextAtom"
-                    },
-                    "type": "array"
-                }
-            },
-            "type": "object"
-        },
-        "VideoStream": {
-            "description": "Video stream resource.",
-            "id": "VideoStream",
-            "properties": {
-                "allowOpenGop": {
-                    "description": "Specifies whether an open Group of Pictures (GOP) structure should be allowed or not. The default is `false`.",
-                    "type": "boolean"
-                },
-                "aqStrength": {
-                    "description": "Specify the intensity of the adaptive quantizer (AQ). Must be between 0 and 1, where 0 disables the quantizer and 1 maximizes the quantizer. A higher value equals a lower bitrate but smoother image. The default is 0.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "bFrameCount": {
-                    "description": "The number of consecutive B-frames. Must be greater than or equal to zero. Must be less than `VideoStream.gop_frame_count` if set. The default is 0.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "bPyramid": {
-                    "description": "Allow B-pyramid for reference frame selection. This may not be supported on all decoders. The default is `false`.",
-                    "type": "boolean"
-                },
-                "bitrateBps": {
-                    "description": "Required. The video bitrate in bits per second. The minimum value is 1,000. The maximum value for H264/H265 is 800,000,000. The maximum value for VP9 is 480,000,000.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "codec": {
-                    "description": "Codec type. The following codecs are supported: * `h264` (default) * `h265` * `vp9`",
-                    "type": "string"
-                },
-                "crfLevel": {
-                    "description": "Target CRF level. Must be between 10 and 36, where 10 is the highest quality and 36 is the most efficient compression. The default is 21.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "enableTwoPass": {
-                    "description": "Use two-pass encoding strategy to achieve better video quality. `VideoStream.rate_control_mode` must be `\"vbr\"`. The default is `false`.",
-                    "type": "boolean"
-                },
-                "entropyCoder": {
-                    "description": "The entropy coder to use. The default is `\"cabac\"`. Supported entropy coders: - 'cavlc' - 'cabac'",
-                    "type": "string"
-                },
-                "frameRate": {
-                    "description": "Required. The target video frame rate in frames per second (FPS). Must be less than or equal to 120. Will default to the input frame rate if larger than the input frame rate. The API will generate an output FPS that is divisible by the input FPS, and smaller or equal to the target FPS. See [Calculate frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for more information.",
-                    "format": "double",
-                    "type": "number"
-                },
-                "gopDuration": {
-                    "description": "Select the GOP size based on the specified duration. The default is `\"3s\"`. Note that `gopDuration` must be less than or equal to [`segmentDuration`](#SegmentSettings), and [`segmentDuration`](#SegmentSettings) must be divisible by `gopDuration`.",
-                    "format": "google-duration",
-                    "type": "string"
-                },
-                "gopFrameCount": {
-                    "description": "Select the GOP size based on the specified frame count. Must be greater than zero.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "heightPixels": {
-                    "description": "The height of the video in pixels. Must be an even integer. When not specified, the height is adjusted to match the specified width and input aspect ratio. If both are omitted, the input height is used.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "pixelFormat": {
-                    "description": "Pixel format to use. The default is `\"yuv420p\"`. Supported pixel formats: - 'yuv420p' pixel format. - 'yuv422p' pixel format. - 'yuv444p' pixel format. - 'yuv420p10' 10-bit HDR pixel format. - 'yuv422p10' 10-bit HDR pixel format. - 'yuv444p10' 10-bit HDR pixel format. - 'yuv420p12' 12-bit HDR pixel format. - 'yuv422p12' 12-bit HDR pixel format. - 'yuv444p12' 12-bit HDR pixel format.",
-                    "type": "string"
-                },
-                "preset": {
-                    "description": "Enforces the specified codec preset. The default is `veryfast`. The available options are FFmpeg-compatible. Note that certain values for this field may cause the transcoder to override other fields you set in the `VideoStream` message.",
-                    "type": "string"
-                },
-                "profile": {
-                    "description": "Enforces the specified codec profile. The following profiles are supported: * `baseline` * `main` * `high` (default) The available options are FFmpeg-compatible. Note that certain values for this field may cause the transcoder to override other fields you set in the `VideoStream` message.",
-                    "type": "string"
-                },
-                "rateControlMode": {
-                    "description": "Specify the `rate_control_mode`. The default is `\"vbr\"`. Supported rate control modes: - 'vbr' - variable bitrate - 'crf' - constant rate factor",
-                    "type": "string"
-                },
-                "tune": {
-                    "description": "Enforces the specified codec tune. The available options are FFmpeg-compatible. Note that certain values for this field may cause the transcoder to override other fields you set in the `VideoStream` message.",
-                    "type": "string"
-                },
-                "vbvFullnessBits": {
-                    "description": "Initial fullness of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to 90% of `VideoStream.vbv_size_bits`.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "vbvSizeBits": {
-                    "description": "Size of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to `VideoStream.bitrate_bps`.",
-                    "format": "int32",
-                    "type": "integer"
-                },
-                "widthPixels": {
-                    "description": "The width of the video in pixels. Must be an even integer. When not specified, the width is adjusted to match the specified height and input aspect ratio. If both are omitted, the input width is used.",
-                    "format": "int32",
-                    "type": "integer"
-                }
-            },
-            "type": "object"
-        }
-    },
-    "servicePath": "",
-    "title": "Transcoder API",
-    "version": "v1beta1",
-    "version_module": true
-}
\ No newline at end of file
diff --git a/discoveryapis_generator/CHANGELOG.md b/discoveryapis_generator/CHANGELOG.md
index 6f9ddf0..e0860d5 100644
--- a/discoveryapis_generator/CHANGELOG.md
+++ b/discoveryapis_generator/CHANGELOG.md
@@ -1,6 +1,7 @@
 ## 1.1.0-dev
 
 - Add positional parameters to all schema types.
+- Added `Function` to the set of reserved names.
 
 ## 1.0.0
 
diff --git a/discoveryapis_generator/lib/src/namer.dart b/discoveryapis_generator/lib/src/namer.dart
index f17e7c9..7689bbf 100644
--- a/discoveryapis_generator/lib/src/namer.dart
+++ b/discoveryapis_generator/lib/src/namer.dart
@@ -372,4 +372,7 @@
 
   // Can't override "runtimeType" from [Object.runtimeType]
   'runtimeType',
+
+  // deprecated_function_class_declaration
+  'Function',
 };
diff --git a/generated/googleapis/CHANGELOG.md b/generated/googleapis/CHANGELOG.md
index dd77d6a..bf54073 100644
--- a/generated/googleapis/CHANGELOG.md
+++ b/generated/googleapis/CHANGELOG.md
@@ -1,10 +1,15 @@
-## 8.0.0-dev
+## 8.0.0
 
 - `adsense` - **removed v1.4**
+- `baremetalsolution` - new v2
+- `certificatemanager` - new!
 - `clouddeploy` - new!
+- `dataplex` - new!
 - `datastream` - new!
 - `ids` - new!
+- `mybusinessbusinesscalls` - new!
 - `mybusinessqanda` - new!
+- `playintegrity`
 - `run` - new v2
 - `transcoder` - new!
 - `webmasters` - **removed!**
diff --git a/generated/googleapis/README.md b/generated/googleapis/README.md
index 9456b0d..c6b544a 100644
--- a/generated/googleapis/README.md
+++ b/generated/googleapis/README.md
@@ -18,1475 +18,1508 @@
 Views Abusive Experience Report data, and gets a list of sites that have a significant number of abusive experiences.
 
 - [Documentation](https://developers.google.com/abusive-experience-report/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/abusiveexperiencereport.v1/abusiveexperiencereport.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/abusiveexperiencereport.v1/abusiveexperiencereport.v1-library.html)
 
 #### Accelerated Mobile Pages (AMP) URL API - `acceleratedmobilepageurl.v1`
 
 Retrieves the list of AMP URLs (and equivalent AMP Cache URLs) for a given list of public URL(s). 
 
 - [Documentation](https://developers.google.com/amp/cache/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/acceleratedmobilepageurl.v1/acceleratedmobilepageurl.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/acceleratedmobilepageurl.v1/acceleratedmobilepageurl.v1-library.html)
 
 #### Access Approval API - `accessapproval.v1`
 
 An API for controlling access to data by Google personnel.
 
 - [Documentation](https://cloud.google.com/cloud-provider-access-management/access-approval/docs)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/accessapproval.v1/accessapproval.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/accessapproval.v1/accessapproval.v1-library.html)
 
 #### Access Context Manager API - `accesscontextmanager.v1`
 
 An API for setting attribute based access control to requests to GCP services.
 
 - [Documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/accesscontextmanager.v1/accesscontextmanager.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/accesscontextmanager.v1/accesscontextmanager.v1-library.html)
 
 #### Ad Experience Report API - `adexperiencereport.v1`
 
 Views Ad Experience Report data, and gets a list of sites that have a significant number of annoying ads.
 
 - [Documentation](https://developers.google.com/ad-experience-report/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/adexperiencereport.v1/adexperiencereport.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/adexperiencereport.v1/adexperiencereport.v1-library.html)
 
 #### Admin SDK API - `admin.datatransfer_v1`
 
 Admin SDK lets administrators of enterprise domains to view and manage resources like user, groups etc. It also provides audit and usage reports of domain.
 
 - [Documentation](https://developers.google.com/admin-sdk/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/admin.datatransfer_v1/admin.datatransfer_v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/admin.datatransfer_v1/admin.datatransfer_v1-library.html)
 
 #### Admin SDK API - `admin.directory_v1`
 
 Admin SDK lets administrators of enterprise domains to view and manage resources like user, groups etc. It also provides audit and usage reports of domain.
 
 - [Documentation](https://developers.google.com/admin-sdk/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/admin.directory_v1/admin.directory_v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/admin.directory_v1/admin.directory_v1-library.html)
 
 #### Admin SDK API - `admin.reports_v1`
 
 Admin SDK lets administrators of enterprise domains to view and manage resources like user, groups etc. It also provides audit and usage reports of domain.
 
 - [Documentation](https://developers.google.com/admin-sdk/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/admin.reports_v1/admin.reports_v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/admin.reports_v1/admin.reports_v1-library.html)
 
 #### AdMob API - `admob.v1`
 
 The AdMob API allows publishers to programmatically get information about their AdMob account. 
 
 - [Documentation](https://developers.google.com/admob/api/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/admob.v1/admob.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/admob.v1/admob.v1-library.html)
 
 #### AdSense Management API - `adsense.v2`
 
 The AdSense Management API allows publishers to access their inventory and run earnings and performance reports.
 
 - [Documentation](https://developers.google.com/adsense/management/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/adsense.v2/adsense.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/adsense.v2/adsense.v2-library.html)
 
 #### ![Logo](https://www.google.com/images/icons/product/adsense-16.png) AdSense Host API - `adsensehost.v4_1`
 
 Generates performance reports, generates ad codes, and provides publisher management capabilities for AdSense Hosts.
 
 - [Documentation](https://developers.google.com/adsense/host/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/adsensehost.v4_1/adsensehost.v4_1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/adsensehost.v4_1/adsensehost.v4_1-library.html)
 
 #### ![Logo](https://www.google.com/images/icons/product/analytics-16.png) Google Analytics API - `analytics.v3`
 
 Views and manages your Google Analytics data.
 
 - [Documentation](https://developers.google.com/analytics/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/analytics.v3/analytics.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/analytics.v3/analytics.v3-library.html)
 
 #### Analytics Reporting API - `analyticsreporting.v4`
 
 Accesses Analytics report data.
 
 - [Documentation](https://developers.google.com/analytics/devguides/reporting/core/v4/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/analyticsreporting.v4/analyticsreporting.v4-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/analyticsreporting.v4/analyticsreporting.v4-library.html)
 
 #### Android Device Provisioning Partner API - `androiddeviceprovisioning.v1`
 
 Automates Android zero-touch enrollment for device resellers, customers, and EMMs.
 
 - [Documentation](https://developers.google.com/zero-touch/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/androiddeviceprovisioning.v1/androiddeviceprovisioning.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/androiddeviceprovisioning.v1/androiddeviceprovisioning.v1-library.html)
 
 #### Google Play EMM API - `androidenterprise.v1`
 
 Manages the deployment of apps to Android Enterprise devices.
 
 - [Documentation](https://developers.google.com/android/work/play/emm-api)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/androidenterprise.v1/androidenterprise.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/androidenterprise.v1/androidenterprise.v1-library.html)
 
 #### Android Management API - `androidmanagement.v1`
 
 The Android Management API provides remote enterprise management of Android devices and apps.
 
 - [Documentation](https://developers.google.com/android/management)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/androidmanagement.v1/androidmanagement.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/androidmanagement.v1/androidmanagement.v1-library.html)
 
 #### Google Play Android Developer API - `androidpublisher.v3`
 
 Lets Android application developers access their Google Play accounts.
 
 - [Documentation](https://developers.google.com/android-publisher)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/androidpublisher.v3/androidpublisher.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/androidpublisher.v3/androidpublisher.v3-library.html)
 
 #### API Gateway API - `apigateway.v1`
 
 - [Documentation](https://cloud.google.com/api-gateway/docs)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/apigateway.v1/apigateway.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/apigateway.v1/apigateway.v1-library.html)
 
 #### Apigee API - `apigee.v1`
 
 Use the Apigee API to programmatically develop and manage APIs with a set of RESTful operations. Develop and secure API proxies, deploy and undeploy API proxy revisions, monitor APIs, configure environments, manage users, and more. Note: This product is available as a free trial for a time period of 60 days.
 
 - [Documentation](https://cloud.google.com/apigee-api-management/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/apigee.v1/apigee.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/apigee.v1/apigee.v1-library.html)
 
 #### API Keys API - `apikeys.v2`
 
 Manages the API keys associated with developer projects.
 
 - [Documentation](https://cloud.google.com/api-keys/docs)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/apikeys.v2/apikeys.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/apikeys.v2/apikeys.v2-library.html)
 
 #### App Engine Admin API - `appengine.v1`
 
 Provisions and manages developers' App Engine applications.
 
 - [Documentation](https://cloud.google.com/appengine/docs/admin-api/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/appengine.v1/appengine.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/appengine.v1/appengine.v1-library.html)
 
 #### Artifact Registry API - `artifactregistry.v1`
 
 Store and manage build artifacts in a scalable and integrated service built on Google infrastructure.
 
 - [Documentation](https://cloud.google.com/artifacts/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/artifactregistry.v1/artifactregistry.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/artifactregistry.v1/artifactregistry.v1-library.html)
 
 #### Assured Workloads API - `assuredworkloads.v1`
 
 - [Documentation](https://cloud.google.com)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/assuredworkloads.v1/assuredworkloads.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/assuredworkloads.v1/assuredworkloads.v1-library.html)
 
 #### Authorized Buyers Marketplace API - `authorizedbuyersmarketplace.v1`
 
 The Authorized Buyers Marketplace API allows buyers programmatically discover inventory; propose, retrieve and negotiate deals with publishers.
 
 - [Documentation](https://developers.google.com/authorized-buyers/apis/marketplace/reference/rest/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/authorizedbuyersmarketplace.v1/authorizedbuyersmarketplace.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/authorizedbuyersmarketplace.v1/authorizedbuyersmarketplace.v1-library.html)
 
 #### Bare Metal Solution API - `baremetalsolution.v1`
 
 Provides ways to manage Bare Metal Solution hardware installed in a regional extension located near a Google Cloud data center.
 
 - [Documentation](https://cloud.google.com/bare-metal)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/baremetalsolution.v1/baremetalsolution.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/baremetalsolution.v1/baremetalsolution.v1-library.html)
+
+#### Bare Metal Solution API - `baremetalsolution.v2`
+
+Provides ways to manage Bare Metal Solution hardware installed in a regional extension located near a Google Cloud data center.
+
+- [Documentation](https://cloud.google.com/bare-metal)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/baremetalsolution.v2/baremetalsolution.v2-library.html)
 
 #### ![Logo](https://www.google.com/images/icons/product/search-16.gif) BigQuery API - `bigquery.v2`
 
 A data platform for customers to create, manage, share and query data.
 
 - [Documentation](https://cloud.google.com/bigquery/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/bigquery.v2/bigquery.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/bigquery.v2/bigquery.v2-library.html)
 
 #### BigQuery Data Transfer API - `bigquerydatatransfer.v1`
 
 Schedule queries or transfer external data from SaaS applications to Google BigQuery on a regular basis.
 
 - [Documentation](https://cloud.google.com/bigquery-transfer/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/bigquerydatatransfer.v1/bigquerydatatransfer.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/bigquerydatatransfer.v1/bigquerydatatransfer.v1-library.html)
 
 #### BigQuery Reservation API - `bigqueryreservation.v1`
 
 A service to modify your BigQuery flat-rate reservations.
 
 - [Documentation](https://cloud.google.com/bigquery/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/bigqueryreservation.v1/bigqueryreservation.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/bigqueryreservation.v1/bigqueryreservation.v1-library.html)
 
 #### Cloud Bigtable Admin API - `bigtableadmin.v2`
 
 Administer your Cloud Bigtable tables and instances.
 
 - [Documentation](https://cloud.google.com/bigtable/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/bigtableadmin.v2/bigtableadmin.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/bigtableadmin.v2/bigtableadmin.v2-library.html)
 
 #### Cloud Billing Budget API - `billingbudgets.v1`
 
 The Cloud Billing Budget API stores Cloud Billing budgets, which define a budget plan and the rules to execute as spend is tracked against that plan.
 
 - [Documentation](https://cloud.google.com/billing/docs/how-to/budget-api-overview)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/billingbudgets.v1/billingbudgets.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/billingbudgets.v1/billingbudgets.v1-library.html)
 
 #### Binary Authorization API - `binaryauthorization.v1`
 
 The management interface for Binary Authorization, a service that provides policy-based deployment validation and control for images deployed to Google Kubernetes Engine (GKE), Anthos Service Mesh, Anthos Clusters, and Cloud Run. 
 
 - [Documentation](https://cloud.google.com/binary-authorization/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/binaryauthorization.v1/binaryauthorization.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/binaryauthorization.v1/binaryauthorization.v1-library.html)
 
 #### Blogger API v3 - `blogger.v3`
 
 The Blogger API provides access to posts, comments and pages of a Blogger blog.
 
 - [Documentation](https://developers.google.com/blogger/docs/3.0/getting_started)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/blogger.v3/blogger.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/blogger.v3/blogger.v3-library.html)
 
 #### Books API - `books.v1`
 
 The Google Books API allows clients to access the Google Books repository.
 
 - [Documentation](https://code.google.com/apis/books/docs/v1/getting_started.html)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/books.v1/books.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/books.v1/books.v1-library.html)
 
 #### Calendar API - `calendar.v3`
 
 Manipulates events and other calendar data.
 
 - [Documentation](https://developers.google.com/google-apps/calendar/firstapp)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/calendar.v3/calendar.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/calendar.v3/calendar.v3-library.html)
+
+#### Certificate Manager API - `certificatemanager.v1`
+
+- [Documentation](https://cloud.google.com/certificate-manager)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/certificatemanager.v1/certificatemanager.v1-library.html)
 
 #### Google Chat API - `chat.v1`
 
 Enables bots to fetch information and perform actions in Google Chat. Authentication using a service account is a prerequisite for using the Google Chat REST API.
 
 - [Documentation](https://developers.google.com/hangouts/chat)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/chat.v1/chat.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/chat.v1/chat.v1-library.html)
 
 #### Chrome Management API - `chromemanagement.v1`
 
 The Chrome Management API is a suite of services that allows Chrome administrators to view, manage and gain insights on their Chrome OS and Chrome Browser devices.
 
 - [Documentation](https://developers.google.com/chrome/management/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/chromemanagement.v1/chromemanagement.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/chromemanagement.v1/chromemanagement.v1-library.html)
 
 #### Chrome Policy API - `chromepolicy.v1`
 
 The Chrome Policy API is a suite of services that allows Chrome administrators to control the policies applied to their managed Chrome OS devices and Chrome browsers.
 
 - [Documentation](http://developers.google.com/chrome/policy)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/chromepolicy.v1/chromepolicy.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/chromepolicy.v1/chromepolicy.v1-library.html)
 
 #### Chrome UX Report API - `chromeuxreport.v1`
 
 The Chrome UX Report API lets you view real user experience data for millions of websites. 
 
 - [Documentation](https://developers.google.com/web/tools/chrome-user-experience-report/api/reference)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/chromeuxreport.v1/chromeuxreport.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/chromeuxreport.v1/chromeuxreport.v1-library.html)
 
 #### Google Civic Information API - `civicinfo.v2`
 
 Provides polling places, early vote locations, contest data, election officials, and government representatives for U.S. residential addresses.
 
 - [Documentation](https://developers.google.com/civic-information/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/civicinfo.v2/civicinfo.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/civicinfo.v2/civicinfo.v2-library.html)
 
 #### Google Classroom API - `classroom.v1`
 
 Manages classes, rosters, and invitations in Google Classroom.
 
 - [Documentation](https://developers.google.com/classroom/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/classroom.v1/classroom.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/classroom.v1/classroom.v1-library.html)
 
 #### Cloud Asset API - `cloudasset.v1`
 
 The cloud asset API manages the history and inventory of cloud resources.
 
 - [Documentation](https://cloud.google.com/asset-inventory/docs/quickstart)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudasset.v1/cloudasset.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudasset.v1/cloudasset.v1-library.html)
 
 #### Cloud Billing API - `cloudbilling.v1`
 
 Allows developers to manage billing for their Google Cloud Platform projects programmatically.
 
 - [Documentation](https://cloud.google.com/billing/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudbilling.v1/cloudbilling.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudbilling.v1/cloudbilling.v1-library.html)
 
 #### Cloud Build API - `cloudbuild.v1`
 
 Creates and manages builds on Google Cloud Platform.
 
 - [Documentation](https://cloud.google.com/cloud-build/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudbuild.v1/cloudbuild.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudbuild.v1/cloudbuild.v1-library.html)
 
 #### Cloud Channel API - `cloudchannel.v1`
 
 The Cloud Channel API enables Google Cloud partners to have a single unified resale platform and APIs across all of Google Cloud including GCP, Workspace, Maps and Chrome.
 
 - [Documentation](https://cloud.google.com/channel)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudchannel.v1/cloudchannel.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudchannel.v1/cloudchannel.v1-library.html)
 
 #### Cloud Debugger API - `clouddebugger.v2`
 
 Examines the call stack and variables of a running application without stopping or slowing it down. 
 
 - [Documentation](https://cloud.google.com/debugger)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/clouddebugger.v2/clouddebugger.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/clouddebugger.v2/clouddebugger.v2-library.html)
 
 #### Google Cloud Deploy API - `clouddeploy.v1`
 
 - [Documentation](https://cloud.google.com/deploy/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/clouddeploy.v1/clouddeploy.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/clouddeploy.v1/clouddeploy.v1-library.html)
 
 #### Cloud Functions API - `cloudfunctions.v1`
 
 Manages lightweight user-provided functions executed in response to events.
 
 - [Documentation](https://cloud.google.com/functions)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudfunctions.v1/cloudfunctions.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudfunctions.v1/cloudfunctions.v1-library.html)
 
 #### Cloud Identity API - `cloudidentity.v1`
 
 API for provisioning and managing identity resources.
 
 - [Documentation](https://cloud.google.com/identity/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudidentity.v1/cloudidentity.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudidentity.v1/cloudidentity.v1-library.html)
 
 #### Cloud IoT API - `cloudiot.v1`
 
 Registers and manages IoT (Internet of Things) devices that connect to the Google Cloud Platform. 
 
 - [Documentation](https://cloud.google.com/iot)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudiot.v1/cloudiot.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudiot.v1/cloudiot.v1-library.html)
 
 #### Cloud Key Management Service (KMS) API - `cloudkms.v1`
 
 Manages keys and performs cryptographic operations in a central cloud service, for direct use by other cloud resources and applications. 
 
 - [Documentation](https://cloud.google.com/kms/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudkms.v1/cloudkms.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudkms.v1/cloudkms.v1-library.html)
 
 #### Stackdriver Profiler API - `cloudprofiler.v2`
 
 Manages continuous profiling information.
 
 - [Documentation](https://cloud.google.com/profiler/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudprofiler.v2/cloudprofiler.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudprofiler.v2/cloudprofiler.v2-library.html)
 
 #### Cloud Resource Manager API - `cloudresourcemanager.v1`
 
 Creates, reads, and updates metadata for Google Cloud Platform resource containers.
 
 - [Documentation](https://cloud.google.com/resource-manager)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudresourcemanager.v1/cloudresourcemanager.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudresourcemanager.v1/cloudresourcemanager.v1-library.html)
 
 #### Cloud Resource Manager API - `cloudresourcemanager.v2`
 
 Creates, reads, and updates metadata for Google Cloud Platform resource containers.
 
 - [Documentation](https://cloud.google.com/resource-manager)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudresourcemanager.v2/cloudresourcemanager.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudresourcemanager.v2/cloudresourcemanager.v2-library.html)
 
 #### Cloud Resource Manager API - `cloudresourcemanager.v3`
 
 Creates, reads, and updates metadata for Google Cloud Platform resource containers.
 
 - [Documentation](https://cloud.google.com/resource-manager)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudresourcemanager.v3/cloudresourcemanager.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudresourcemanager.v3/cloudresourcemanager.v3-library.html)
 
 #### Cloud Scheduler API - `cloudscheduler.v1`
 
 Creates and manages jobs run on a regular recurring schedule.
 
 - [Documentation](https://cloud.google.com/scheduler/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudscheduler.v1/cloudscheduler.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudscheduler.v1/cloudscheduler.v1-library.html)
 
 #### Cloud Search API - `cloudsearch.v1`
 
 Cloud Search provides cloud-based search capabilities over Google Workspace data. The Cloud Search API allows indexing of non-Google Workspace data into Cloud Search.
 
 - [Documentation](https://developers.google.com/cloud-search/docs/guides/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudsearch.v1/cloudsearch.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudsearch.v1/cloudsearch.v1-library.html)
 
 #### Cloud Shell API - `cloudshell.v1`
 
 Allows users to start, configure, and connect to interactive shell sessions running in the cloud. 
 
 - [Documentation](https://cloud.google.com/shell/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudshell.v1/cloudshell.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudshell.v1/cloudshell.v1-library.html)
 
 #### Cloud Tasks API - `cloudtasks.v2`
 
 Manages the execution of large numbers of distributed requests.
 
 - [Documentation](https://cloud.google.com/tasks/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudtasks.v2/cloudtasks.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudtasks.v2/cloudtasks.v2-library.html)
 
 #### Cloud Trace API - `cloudtrace.v2`
 
 Sends application trace data to Cloud Trace for viewing. Trace data is collected for all App Engine applications by default. Trace data from other applications can be provided using this API. This library is used to interact with the Cloud Trace API directly. If you are looking to instrument your application for Cloud Trace, we recommend using OpenCensus. 
 
 - [Documentation](https://cloud.google.com/trace)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/cloudtrace.v2/cloudtrace.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/cloudtrace.v2/cloudtrace.v2-library.html)
 
 #### Cloud Composer API - `composer.v1`
 
 Manages Apache Airflow environments on Google Cloud Platform.
 
 - [Documentation](https://cloud.google.com/composer/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/composer.v1/composer.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/composer.v1/composer.v1-library.html)
 
 #### ![Logo](https://www.google.com/images/icons/product/compute_engine-16.png) Compute Engine API - `compute.v1`
 
 Creates and runs virtual machines on Google Cloud Platform. 
 
 - [Documentation](https://cloud.google.com/compute/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/compute.v1/compute.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/compute.v1/compute.v1-library.html)
 
 #### Connectors API - `connectors.v1`
 
 Enables users to create and manage connections to Google Cloud services and third-party business applications using the Connectors interface.
 
 - [Documentation](https://cloud.google.com/apigee/docs/api-platform/connectors/about-connectors)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/connectors.v1/connectors.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/connectors.v1/connectors.v1-library.html)
 
 #### Contact Center AI Insights API - `contactcenterinsights.v1`
 
 - [Documentation](https://cloud.google.com/contact-center/insights/docs)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/contactcenterinsights.v1/contactcenterinsights.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/contactcenterinsights.v1/contactcenterinsights.v1-library.html)
 
 #### Kubernetes Engine API - `container.v1`
 
 Builds and manages container-based applications, powered by the open source Kubernetes technology.
 
 - [Documentation](https://cloud.google.com/container-engine/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/container.v1/container.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/container.v1/container.v1-library.html)
 
 #### Container Analysis API - `containeranalysis.v1`
 
 An implementation of the Grafeas API, which stores, and enables querying and retrieval of critical metadata about all of your software artifacts.
 
 - [Documentation](https://cloud.google.com/container-analysis/api/reference/rest/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/containeranalysis.v1/containeranalysis.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/containeranalysis.v1/containeranalysis.v1-library.html)
 
 #### Content API for Shopping - `content.v2_1`
 
 Manage your product listings and accounts for Google Shopping
 
 - [Documentation](https://developers.google.com/shopping-content/v2/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/content.v2_1/content.v2_1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/content.v2_1/content.v2_1-library.html)
 
 #### Custom Search API - `customsearch.v1`
 
 Searches over a website or collection of websites
 
 - [Documentation](https://developers.google.com/custom-search/v1/introduction)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/customsearch.v1/customsearch.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/customsearch.v1/customsearch.v1-library.html)
 
 #### Google Cloud Data Catalog API - `datacatalog.v1`
 
 A fully managed and highly scalable data discovery and metadata management service. 
 
 - [Documentation](https://cloud.google.com/data-catalog/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/datacatalog.v1/datacatalog.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/datacatalog.v1/datacatalog.v1-library.html)
 
 #### Cloud Data Fusion API - `datafusion.v1`
 
 Cloud Data Fusion is a fully-managed, cloud native, enterprise data integration service for quickly building and managing data pipelines. It provides a graphical interface to increase time efficiency and reduce complexity, and allows business users, developers, and data scientists to easily and reliably build scalable data integration solutions to cleanse, prepare, blend, transfer and transform data without having to wrestle with infrastructure.
 
 - [Documentation](https://cloud.google.com/data-fusion/docs)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/datafusion.v1/datafusion.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/datafusion.v1/datafusion.v1-library.html)
 
 #### Database Migration API - `datamigration.v1`
 
 Manage Cloud Database Migration Service resources on Google Cloud Platform.
 
 - [Documentation](https://cloud.google.com/database-migration/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/datamigration.v1/datamigration.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/datamigration.v1/datamigration.v1-library.html)
 
 #### Data pipelines API - `datapipelines.v1`
 
 Data Pipelines provides an interface for creating, updating, and managing recurring Data Analytics jobs.
 
 - [Documentation](https://cloud.google.com/dataflow/docs/guides/data-pipelines)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/datapipelines.v1/datapipelines.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/datapipelines.v1/datapipelines.v1-library.html)
+
+#### Cloud Dataplex API - `dataplex.v1`
+
+Dataplex API is used to manage the lifecycle of data lakes.
+
+- [Documentation](https://cloud.google.com/dataplex/docs)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/dataplex.v1/dataplex.v1-library.html)
 
 #### Cloud Dataproc API - `dataproc.v1`
 
 Manages Hadoop-based clusters and jobs on Google Cloud Platform.
 
 - [Documentation](https://cloud.google.com/dataproc/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/dataproc.v1/dataproc.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/dataproc.v1/dataproc.v1-library.html)
 
 #### Cloud Datastore API - `datastore.v1`
 
 Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application. 
 
 - [Documentation](https://cloud.google.com/datastore/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/datastore.v1/datastore.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/datastore.v1/datastore.v1-library.html)
 
 #### Datastream API - `datastream.v1`
 
 - [Documentation](https://cloud.google.com/datastream/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/datastream.v1/datastream.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/datastream.v1/datastream.v1-library.html)
 
 #### Cloud Deployment Manager V2 API - `deploymentmanager.v2`
 
 The Google Cloud Deployment Manager v2 API provides services for configuring, deploying, and viewing Google Cloud services and APIs via templates which specify deployments of Cloud resources.
 
 - [Documentation](https://cloud.google.com/deployment-manager)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/deploymentmanager.v2/deploymentmanager.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/deploymentmanager.v2/deploymentmanager.v2-library.html)
 
 #### Campaign Manager 360 API - `dfareporting.v3_4`
 
 Build applications to efficiently manage large or complex trafficking, reporting, and attribution workflows for Campaign Manager 360.
 
 - [Documentation](https://developers.google.com/doubleclick-advertisers/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/dfareporting.v3_4/dfareporting.v3_4-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/dfareporting.v3_4/dfareporting.v3_4-library.html)
 
 #### Campaign Manager 360 API - `dfareporting.v3_5`
 
 Build applications to efficiently manage large or complex trafficking, reporting, and attribution workflows for Campaign Manager 360.
 
 - [Documentation](https://developers.google.com/doubleclick-advertisers/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/dfareporting.v3_5/dfareporting.v3_5-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/dfareporting.v3_5/dfareporting.v3_5-library.html)
 
 #### Dialogflow API - `dialogflow.v2`
 
 Builds conversational interfaces (for example, chatbots, and voice-powered apps and devices).
 
 - [Documentation](https://cloud.google.com/dialogflow/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/dialogflow.v2/dialogflow.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/dialogflow.v2/dialogflow.v2-library.html)
 
 #### Dialogflow API - `dialogflow.v3`
 
 Builds conversational interfaces (for example, chatbots, and voice-powered apps and devices).
 
 - [Documentation](https://cloud.google.com/dialogflow/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/dialogflow.v3/dialogflow.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/dialogflow.v3/dialogflow.v3-library.html)
 
 #### Digital Asset Links API - `digitalassetlinks.v1`
 
 Discovers relationships between online assets such as websites or mobile apps.
 
 - [Documentation](https://developers.google.com/digital-asset-links/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/digitalassetlinks.v1/digitalassetlinks.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/digitalassetlinks.v1/digitalassetlinks.v1-library.html)
 
 #### API Discovery Service - `discovery.v1`
 
 Provides information about other Google APIs, such as what APIs are available, the resource, and method details for each API.
 
 - [Documentation](https://developers.google.com/discovery/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/discovery.v1/discovery.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/discovery.v1/discovery.v1-library.html)
 
 #### Display & Video 360 API - `displayvideo.v1`
 
 Display & Video 360 API allows users to automate complex Display & Video 360 workflows, such as creating insertion orders and setting targeting options for individual line items.
 
 - [Documentation](https://developers.google.com/display-video/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/displayvideo.v1/displayvideo.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/displayvideo.v1/displayvideo.v1-library.html)
 
 #### Cloud Data Loss Prevention (DLP) API - `dlp.v2`
 
 Provides methods for detection, risk analysis, and de-identification of privacy-sensitive fragments in text, images, and Google Cloud Platform storage repositories.
 
 - [Documentation](https://cloud.google.com/dlp/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/dlp.v2/dlp.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/dlp.v2/dlp.v2-library.html)
 
 #### Cloud DNS API - `dns.v1`
 
 - [Documentation](https://cloud.google.com/dns/docs)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/dns.v1/dns.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/dns.v1/dns.v1-library.html)
 
 #### Google Docs API - `docs.v1`
 
 Reads and writes Google Docs documents.
 
 - [Documentation](https://developers.google.com/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/docs.v1/docs.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/docs.v1/docs.v1-library.html)
 
 #### Cloud Document AI API - `documentai.v1`
 
 Service to parse structured information from unstructured or semi-structured documents using state-of-the-art Google AI such as natural language, computer vision, translation, and AutoML.
 
 - [Documentation](https://cloud.google.com/document-ai/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/documentai.v1/documentai.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/documentai.v1/documentai.v1-library.html)
 
 #### Cloud Domains API - `domains.v1`
 
 Enables management and configuration of domain names.
 
 - [Documentation](https://cloud.google.com/domains/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/domains.v1/domains.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/domains.v1/domains.v1-library.html)
 
 #### Domains RDAP API - `domainsrdap.v1`
 
 Read-only public API that lets users search for information about domain names.
 
 - [Documentation](https://developers.google.com/domains/rdap/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/domainsrdap.v1/domainsrdap.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/domainsrdap.v1/domainsrdap.v1-library.html)
 
 #### DoubleClick Bid Manager API - `doubleclickbidmanager.v1_1`
 
 DoubleClick Bid Manager API allows users to manage and create campaigns and reports.
 
 - [Documentation](https://developers.google.com/bid-manager/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/doubleclickbidmanager.v1_1/doubleclickbidmanager.v1_1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/doubleclickbidmanager.v1_1/doubleclickbidmanager.v1_1-library.html)
 
 #### Search Ads 360 API - `doubleclicksearch.v2`
 
 The Search Ads 360 API allows developers to automate uploading conversions and downloading reports from Search Ads 360.
 
 - [Documentation](https://developers.google.com/search-ads)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/doubleclicksearch.v2/doubleclicksearch.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/doubleclicksearch.v2/doubleclicksearch.v2-library.html)
 
 #### ![Logo](https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png) Drive API - `drive.v2`
 
 Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.
 
 - [Documentation](https://developers.google.com/drive/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/drive.v2/drive.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/drive.v2/drive.v2-library.html)
 
 #### ![Logo](https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png) Drive API - `drive.v3`
 
 Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.
 
 - [Documentation](https://developers.google.com/drive/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/drive.v3/drive.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/drive.v3/drive.v3-library.html)
 
 #### Drive Activity API - `driveactivity.v2`
 
 Provides a historical view of activity in Google Drive.
 
 - [Documentation](https://developers.google.com/drive/activity/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/driveactivity.v2/driveactivity.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/driveactivity.v2/driveactivity.v2-library.html)
 
 #### Essential Contacts API - `essentialcontacts.v1`
 
 - [Documentation](https://cloud.google.com/essentialcontacts/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/essentialcontacts.v1/essentialcontacts.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/essentialcontacts.v1/essentialcontacts.v1-library.html)
 
 #### Eventarc API - `eventarc.v1`
 
 - [Documentation](https://cloud.google.com/eventarc)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/eventarc.v1/eventarc.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/eventarc.v1/eventarc.v1-library.html)
 
 #### Firebase Cloud Messaging API - `fcm.v1`
 
 FCM send API that provides a cross-platform messaging solution to reliably deliver messages at no cost.
 
 - [Documentation](https://firebase.google.com/docs/cloud-messaging)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/fcm.v1/fcm.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/fcm.v1/fcm.v1-library.html)
 
 #### Cloud Filestore API - `file.v1`
 
 The Cloud Filestore API is used for creating and managing cloud file servers.
 
 - [Documentation](https://cloud.google.com/filestore/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/file.v1/file.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/file.v1/file.v1-library.html)
 
 #### Firebase Dynamic Links API - `firebasedynamiclinks.v1`
 
 Programmatically creates and manages Firebase Dynamic Links.
 
 - [Documentation](https://firebase.google.com/docs/dynamic-links/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/firebasedynamiclinks.v1/firebasedynamiclinks.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/firebasedynamiclinks.v1/firebasedynamiclinks.v1-library.html)
 
 #### Firebase Hosting API - `firebasehosting.v1`
 
 The Firebase Hosting REST API enables programmatic and customizable management and deployments to your Firebase-hosted sites. Use this REST API to create and manage channels and sites as well as to deploy new or updated hosting configurations and content files.
 
 - [Documentation](https://firebase.google.com/docs/hosting/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/firebasehosting.v1/firebasehosting.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/firebasehosting.v1/firebasehosting.v1-library.html)
 
 #### Firebase ML API - `firebaseml.v1`
 
 Access custom machine learning models hosted via Firebase ML.
 
 - [Documentation](https://firebase.google.com)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/firebaseml.v1/firebaseml.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/firebaseml.v1/firebaseml.v1-library.html)
 
 #### Firebase Rules API - `firebaserules.v1`
 
 Creates and manages rules that determine when a Firebase Rules-enabled service should permit a request. 
 
 - [Documentation](https://firebase.google.com/docs/storage/security)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/firebaserules.v1/firebaserules.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/firebaserules.v1/firebaserules.v1-library.html)
 
 #### Cloud Firestore API - `firestore.v1`
 
 Accesses the NoSQL document database built for automatic scaling, high performance, and ease of application development. 
 
 - [Documentation](https://cloud.google.com/firestore)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/firestore.v1/firestore.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/firestore.v1/firestore.v1-library.html)
 
 #### Fitness API - `fitness.v1`
 
 The Fitness API for managing users' fitness tracking data.
 
 - [Documentation](https://developers.google.com/fit/rest/v1/get-started)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/fitness.v1/fitness.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/fitness.v1/fitness.v1-library.html)
 
 #### Google Play Game Services - `games.v1`
 
 The Google Play games service allows developers to enhance games with social leaderboards, achievements, game state, sign-in with Google, and more.
 
 - [Documentation](https://developers.google.com/games/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/games.v1/games.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/games.v1/games.v1-library.html)
 
 #### Google Play Game Services Publishing API - `gamesConfiguration.v1configuration`
 
 The Google Play Game Services Publishing API allows developers to configure their games in Game Services.
 
 - [Documentation](https://developers.google.com/games/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/gamesConfiguration.v1configuration/gamesConfiguration.v1configuration-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/gamesConfiguration.v1configuration/gamesConfiguration.v1configuration-library.html)
 
 #### Google Play Game Management - `gamesManagement.v1management`
 
 The Google Play Game Management API allows developers to manage resources from the Google Play Game service.
 
 - [Documentation](https://developers.google.com/games/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/gamesManagement.v1management/gamesManagement.v1management-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/gamesManagement.v1management/gamesManagement.v1management-library.html)
 
 #### Game Services API - `gameservices.v1`
 
 Deploy and manage infrastructure for global multiplayer gaming experiences.
 
 - [Documentation](https://cloud.google.com/solutions/gaming/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/gameservices.v1/gameservices.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/gameservices.v1/gameservices.v1-library.html)
 
 #### GKE Hub API - `gkehub.v1`
 
 - [Documentation](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/gkehub.v1/gkehub.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/gkehub.v1/gkehub.v1-library.html)
 
 #### Gmail API - `gmail.v1`
 
 The Gmail API lets you view and manage Gmail mailbox data like threads, messages, and labels.
 
 - [Documentation](https://developers.google.com/gmail/api/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/gmail.v1/gmail.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/gmail.v1/gmail.v1-library.html)
 
 #### Gmail Postmaster Tools API - `gmailpostmastertools.v1`
 
 The Postmaster Tools API is a RESTful API that provides programmatic access to email traffic metrics (like spam reports, delivery errors etc) otherwise available through the Gmail Postmaster Tools UI currently.
 
 - [Documentation](https://developers.google.com/gmail/postmaster)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/gmailpostmastertools.v1/gmailpostmastertools.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/gmailpostmastertools.v1/gmailpostmastertools.v1-library.html)
 
 #### Groups Migration API - `groupsmigration.v1`
 
 The Groups Migration API allows domain administrators to archive emails into Google groups.
 
 - [Documentation](https://developers.google.com/google-apps/groups-migration/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/groupsmigration.v1/groupsmigration.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/groupsmigration.v1/groupsmigration.v1-library.html)
 
 #### ![Logo](https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png) Groups Settings API - `groupssettings.v1`
 
 Manages permission levels and related settings of a group.
 
 - [Documentation](https://developers.google.com/google-apps/groups-settings/get_started)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/groupssettings.v1/groupssettings.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/groupssettings.v1/groupssettings.v1-library.html)
 
 #### Cloud Healthcare API - `healthcare.v1`
 
 Manage, store, and access healthcare data in Google Cloud Platform.
 
 - [Documentation](https://cloud.google.com/healthcare)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/healthcare.v1/healthcare.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/healthcare.v1/healthcare.v1-library.html)
 
 #### HomeGraph API - `homegraph.v1`
 
 - [Documentation](https://developers.google.com/actions/smarthome/create-app#request-sync)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/homegraph.v1/homegraph.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/homegraph.v1/homegraph.v1-library.html)
 
 #### Identity and Access Management (IAM) API - `iam.v1`
 
 Manages identity and access control for Google Cloud Platform resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls. 
 
 - [Documentation](https://cloud.google.com/iam/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/iam.v1/iam.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/iam.v1/iam.v1-library.html)
 
 #### IAM Service Account Credentials API - `iamcredentials.v1`
 
 Creates short-lived credentials for impersonating IAM service accounts. To enable this API, you must enable the IAM API (iam.googleapis.com). 
 
 - [Documentation](https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/iamcredentials.v1/iamcredentials.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/iamcredentials.v1/iamcredentials.v1-library.html)
 
 #### Cloud Identity-Aware Proxy API - `iap.v1`
 
 Controls access to cloud applications running on Google Cloud Platform.
 
 - [Documentation](https://cloud.google.com/iap)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/iap.v1/iap.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/iap.v1/iap.v1-library.html)
 
 #### ![Logo](https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png) Google Identity Toolkit API - `identitytoolkit.v3`
 
 Help the third party sites to implement federated login.
 
 - [Documentation](https://developers.google.com/identity-toolkit/v3/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/identitytoolkit.v3/identitytoolkit.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/identitytoolkit.v3/identitytoolkit.v3-library.html)
 
 #### Cloud IDS API - `ids.v1`
 
 Cloud IDS (Cloud Intrusion Detection System) detects malware, spyware, command-and-control attacks, and other network-based threats. Its security efficacy is industry leading, built with Palo Alto Networks technologies. When you use this product, your organization name and consumption levels will be shared with Palo Alto Networks.
 
 - [Documentation](https://cloud.google.com/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/ids.v1/ids.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/ids.v1/ids.v1-library.html)
 
 #### Indexing API - `indexing.v3`
 
 Notifies Google when your web pages change.
 
 - [Documentation](https://developers.google.com/search/apis/indexing-api/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/indexing.v3/indexing.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/indexing.v3/indexing.v3-library.html)
 
 #### Cloud Talent Solution API - `jobs.v3`
 
 Cloud Talent Solution provides the capability to create, read, update, and delete job postings, as well as search jobs based on keywords and filters. 
 
 - [Documentation](https://cloud.google.com/talent-solution/job-search/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/jobs.v3/jobs.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/jobs.v3/jobs.v3-library.html)
 
 #### Cloud Talent Solution API - `jobs.v4`
 
 Cloud Talent Solution provides the capability to create, read, update, and delete job postings, as well as search jobs based on keywords and filters. 
 
 - [Documentation](https://cloud.google.com/talent-solution/job-search/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/jobs.v4/jobs.v4-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/jobs.v4/jobs.v4-library.html)
 
 #### Google Keep API - `keep.v1`
 
 This API is an enterprise-only API used to create and manage the Keep notes within your domain, including resolving issues identified by CASB software.
 
 - [Documentation](https://developers.google.com/keep/api)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/keep.v1/keep.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/keep.v1/keep.v1-library.html)
 
 #### Knowledge Graph Search API - `kgsearch.v1`
 
 Searches the Google Knowledge Graph for entities.
 
 - [Documentation](https://developers.google.com/knowledge-graph/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/kgsearch.v1/kgsearch.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/kgsearch.v1/kgsearch.v1-library.html)
 
 #### Cloud Natural Language API - `language.v1`
 
 Provides natural language understanding technologies, such as sentiment analysis, entity recognition, entity sentiment analysis, and other text annotations, to developers.
 
 - [Documentation](https://cloud.google.com/natural-language/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/language.v1/language.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/language.v1/language.v1-library.html)
 
 #### Library Agent API - `libraryagent.v1`
 
 A simple Google Example Library API.
 
 - [Documentation](https://cloud.google.com/docs/quota)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/libraryagent.v1/libraryagent.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/libraryagent.v1/libraryagent.v1-library.html)
 
 #### Enterprise License Manager API - `licensing.v1`
 
 The Google Enterprise License Manager API's allows you to license apps for all the users of a domain managed by you.
 
 - [Documentation](https://developers.google.com/admin-sdk/licensing/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/licensing.v1/licensing.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/licensing.v1/licensing.v1-library.html)
 
 #### Local Services API - `localservices.v1`
 
 - [Documentation](https://ads.google.com/local-services-ads/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/localservices.v1/localservices.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/localservices.v1/localservices.v1-library.html)
 
 #### Cloud Logging API - `logging.v2`
 
 Writes log entries and manages your Cloud Logging configuration.
 
 - [Documentation](https://cloud.google.com/logging/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/logging.v2/logging.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/logging.v2/logging.v2-library.html)
 
 #### Managed Service for Microsoft Active Directory API - `managedidentities.v1`
 
 The Managed Service for Microsoft Active Directory API is used for managing a highly available, hardened service running Microsoft Active Directory (AD).
 
 - [Documentation](https://cloud.google.com/managed-microsoft-ad/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/managedidentities.v1/managedidentities.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/managedidentities.v1/managedidentities.v1-library.html)
 
 #### Manufacturer Center API - `manufacturers.v1`
 
 Public API for managing Manufacturer Center related data.
 
 - [Documentation](https://developers.google.com/manufacturers/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/manufacturers.v1/manufacturers.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/manufacturers.v1/manufacturers.v1-library.html)
 
 #### Cloud Memorystore for Memcached API - `memcache.v1`
 
 Google Cloud Memorystore for Memcached API is used for creating and managing Memcached instances in GCP.
 
 - [Documentation](https://cloud.google.com/memorystore/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/memcache.v1/memcache.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/memcache.v1/memcache.v1-library.html)
 
 #### AI Platform Training & Prediction API - `ml.v1`
 
 An API to enable creating and using machine learning models.
 
 - [Documentation](https://cloud.google.com/ml/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/ml.v1/ml.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/ml.v1/ml.v1-library.html)
 
 #### Cloud Monitoring API - `monitoring.v3`
 
 Manages your Cloud Monitoring data and configurations.
 
 - [Documentation](https://cloud.google.com/monitoring/api/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/monitoring.v3/monitoring.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/monitoring.v3/monitoring.v3-library.html)
 
 #### My Business Account Management API - `mybusinessaccountmanagement.v1`
 
 The My Business Account Management API provides an interface for managing access to a location on Google.
 
 - [Documentation](https://developers.google.com/my-business/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/mybusinessaccountmanagement.v1/mybusinessaccountmanagement.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/mybusinessaccountmanagement.v1/mybusinessaccountmanagement.v1-library.html)
+
+#### My Business Business Calls API - `mybusinessbusinesscalls.v1`
+
+The My Business Business Calls API manages business calls information of a location on Google.
+
+- [Documentation](https://developers.google.com/my-business/)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/mybusinessbusinesscalls.v1/mybusinessbusinesscalls.v1-library.html)
 
 #### My Business Business Information API - `mybusinessbusinessinformation.v1`
 
 The My Business Business Information API provides an interface for managing business information on Google.
 
 - [Documentation](https://developers.google.com/my-business/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/mybusinessbusinessinformation.v1/mybusinessbusinessinformation.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/mybusinessbusinessinformation.v1/mybusinessbusinessinformation.v1-library.html)
 
 #### My Business Lodging API - `mybusinesslodging.v1`
 
 The My Business Lodging API enables managing lodging business information on Google.
 
 - [Documentation](https://developers.google.com/my-business/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/mybusinesslodging.v1/mybusinesslodging.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/mybusinesslodging.v1/mybusinesslodging.v1-library.html)
 
 #### My Business Notifications API - `mybusinessnotifications.v1`
 
 The My Business Notification Settings API enables managing notification settings for business accounts.
 
 - [Documentation](https://developers.google.com/my-business/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/mybusinessnotifications.v1/mybusinessnotifications.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/mybusinessnotifications.v1/mybusinessnotifications.v1-library.html)
 
 #### My Business Place Actions API - `mybusinessplaceactions.v1`
 
 The My Business Place Actions API provides an interface for managing place action links of a location on Google.
 
 - [Documentation](https://developers.google.com/my-business/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/mybusinessplaceactions.v1/mybusinessplaceactions.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/mybusinessplaceactions.v1/mybusinessplaceactions.v1-library.html)
 
 #### My Business Q&A API - `mybusinessqanda.v1`
 
 The My Business Q&A API allows questions and answers to be posted for specific listings.
 
 - [Documentation](https://developers.google.com/my-business/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/mybusinessqanda.v1/mybusinessqanda.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/mybusinessqanda.v1/mybusinessqanda.v1-library.html)
 
 #### My Business Verifications API - `mybusinessverifications.v1`
 
 The My Business Verifications API provides an interface for taking verifications related actions for locations.
 
 - [Documentation](https://developers.google.com/my-business/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/mybusinessverifications.v1/mybusinessverifications.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/mybusinessverifications.v1/mybusinessverifications.v1-library.html)
 
 #### Network Connectivity API - `networkconnectivity.v1`
 
 The Network Connectivity API provides access to Network Connectivity Center.
 
 - [Documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/networkconnectivity.v1/networkconnectivity.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/networkconnectivity.v1/networkconnectivity.v1-library.html)
 
 #### Network Management API - `networkmanagement.v1`
 
 The Network Management API provides a collection of network performance monitoring and diagnostic capabilities.
 
 - [Documentation](https://cloud.google.com/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/networkmanagement.v1/networkmanagement.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/networkmanagement.v1/networkmanagement.v1-library.html)
 
 #### Network Security API - `networksecurity.v1`
 
 - [Documentation](https://cloud.google.com/networking)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/networksecurity.v1/networksecurity.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/networksecurity.v1/networksecurity.v1-library.html)
 
 #### Network Services API - `networkservices.v1`
 
 - [Documentation](https://cloud.google.com/networking)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/networkservices.v1/networkservices.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/networkservices.v1/networkservices.v1-library.html)
 
 #### Notebooks API - `notebooks.v1`
 
 Notebooks API is used to manage notebook resources in Google Cloud.
 
 - [Documentation](https://cloud.google.com/notebooks/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/notebooks.v1/notebooks.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/notebooks.v1/notebooks.v1-library.html)
 
 #### ![Logo](https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png) Google OAuth2 API - `oauth2.v2`
 
 Obtains end-user authorization grants for use with other Google APIs.
 
 - [Documentation](https://developers.google.com/identity/protocols/oauth2/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/oauth2.v2/oauth2.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/oauth2.v2/oauth2.v2-library.html)
 
 #### On-Demand Scanning API - `ondemandscanning.v1`
 
 A service to scan container images for vulnerabilities.
 
 - [Documentation](https://cloud.google.com/container-analysis/docs/on-demand-scanning/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/ondemandscanning.v1/ondemandscanning.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/ondemandscanning.v1/ondemandscanning.v1-library.html)
 
 #### Organization Policy API - `orgpolicy.v2`
 
 The Org Policy API allows users to configure governance rules on their GCP resources across the Cloud Resource Hierarchy.
 
 - [Documentation](https://cloud.google.com/orgpolicy/docs/reference/rest/index.html)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/orgpolicy.v2/orgpolicy.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/orgpolicy.v2/orgpolicy.v2-library.html)
 
 #### OS Config API - `osconfig.v1`
 
 OS management tools that can be used for patch management, patch compliance, and configuration management on VM instances.
 
 - [Documentation](https://cloud.google.com/compute/docs/osconfig/rest)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/osconfig.v1/osconfig.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/osconfig.v1/osconfig.v1-library.html)
 
 #### Cloud OS Login API - `oslogin.v1`
 
 You can use OS Login to manage access to your VM instances using IAM roles.
 
 - [Documentation](https://cloud.google.com/compute/docs/oslogin/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/oslogin.v1/oslogin.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/oslogin.v1/oslogin.v1-library.html)
 
 #### PageSpeed Insights API - `pagespeedonline.v5`
 
 The PageSpeed Insights API lets you analyze the performance of your website with a simple API. It offers tailored suggestions for how you can optimize your site, and lets you easily integrate PageSpeed Insights analysis into your development tools and workflow. 
 
 - [Documentation](https://developers.google.com/speed/docs/insights/v5/about)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/pagespeedonline.v5/pagespeedonline.v5-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/pagespeedonline.v5/pagespeedonline.v5-library.html)
 
 #### Payments Reseller Subscription API - `paymentsresellersubscription.v1`
 
 - [Documentation](https://developers.google.com/payments/reseller/subscription/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/paymentsresellersubscription.v1/paymentsresellersubscription.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/paymentsresellersubscription.v1/paymentsresellersubscription.v1-library.html)
 
 #### People API - `people.v1`
 
 Provides access to information about profiles and contacts.
 
 - [Documentation](https://developers.google.com/people/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/people.v1/people.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/people.v1/people.v1-library.html)
 
 #### Google Play Custom App Publishing API - `playcustomapp.v1`
 
 API to create and publish custom Android apps
 
 - [Documentation](https://developers.google.com/android/work/play/custom-app-api/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/playcustomapp.v1/playcustomapp.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/playcustomapp.v1/playcustomapp.v1-library.html)
+
+#### Google Play Integrity API - `playintegrity.v1`
+
+Play Integrity
+
+- [Documentation](https://developer.android.com/google/play/integrity)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/playintegrity.v1/playintegrity.v1-library.html)
 
 #### Policy Analyzer API - `policyanalyzer.v1`
 
 - [Documentation](https://www.google.com)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/policyanalyzer.v1/policyanalyzer.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/policyanalyzer.v1/policyanalyzer.v1-library.html)
 
 #### Policy Simulator API - `policysimulator.v1`
 
  Policy Simulator is a collection of endpoints for creating, running, and viewing a Replay. A `Replay` is a type of simulation that lets you see how your members' access to resources might change if you changed your IAM policy. During a `Replay`, Policy Simulator re-evaluates, or replays, past access attempts under both the current policy and your proposed policy, and compares those results to determine how your members' access might change under the proposed policy.
 
 - [Documentation](https://cloud.google.com/iam/docs/simulating-access)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/policysimulator.v1/policysimulator.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/policysimulator.v1/policysimulator.v1-library.html)
 
 #### Policy Troubleshooter API - `policytroubleshooter.v1`
 
 - [Documentation](https://cloud.google.com/iam/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/policytroubleshooter.v1/policytroubleshooter.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/policytroubleshooter.v1/policytroubleshooter.v1-library.html)
 
 #### Certificate Authority API - `privateca.v1`
 
 The Certificate Authority Service API is a highly-available, scalable service that enables you to simplify and automate the management of private certificate authorities (CAs) while staying in control of your private keys. 
 
 - [Documentation](https://cloud.google.com/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/privateca.v1/privateca.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/privateca.v1/privateca.v1-library.html)
 
 #### Cloud Pub/Sub API - `pubsub.v1`
 
 Provides reliable, many-to-many, asynchronous messaging between applications. 
 
 - [Documentation](https://cloud.google.com/pubsub/docs)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/pubsub.v1/pubsub.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/pubsub.v1/pubsub.v1-library.html)
 
 #### Pub/Sub Lite API - `pubsublite.v1`
 
 - [Documentation](https://cloud.google.com/pubsub/lite/docs)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/pubsublite.v1/pubsublite.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/pubsublite.v1/pubsublite.v1-library.html)
 
 #### Real-time Bidding API - `realtimebidding.v1`
 
 Allows external bidders to manage their RTB integration with Google. This includes managing bidder endpoints, QPS quotas, configuring what ad inventory to receive via pretargeting, submitting creatives for verification, and accessing creative metadata such as approval status.
 
 - [Documentation](https://developers.google.com/authorized-buyers/apis/realtimebidding/reference/rest/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/realtimebidding.v1/realtimebidding.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/realtimebidding.v1/realtimebidding.v1-library.html)
 
 #### reCAPTCHA Enterprise API - `recaptchaenterprise.v1`
 
 - [Documentation](https://cloud.google.com/recaptcha-enterprise/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/recaptchaenterprise.v1/recaptchaenterprise.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/recaptchaenterprise.v1/recaptchaenterprise.v1-library.html)
 
 #### Recommender API - `recommender.v1`
 
 - [Documentation](https://cloud.google.com/recommender/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/recommender.v1/recommender.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/recommender.v1/recommender.v1-library.html)
 
 #### Google Cloud Memorystore for Redis API - `redis.v1`
 
 Creates and manages Redis instances on the Google Cloud Platform.
 
 - [Documentation](https://cloud.google.com/memorystore/docs/redis/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/redis.v1/redis.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/redis.v1/redis.v1-library.html)
 
 #### Google Workspace Reseller API - `reseller.v1`
 
 Perform common functions that are available on the Channel Services console at scale, like placing orders and viewing customer information
 
 - [Documentation](https://developers.google.com/google-apps/reseller/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/reseller.v1/reseller.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/reseller.v1/reseller.v1-library.html)
 
 #### Resource Settings API - `resourcesettings.v1`
 
 The Resource Settings API allows users to control and modify the behavior of their GCP resources (e.g., VM, firewall, Project, etc.) across the Cloud Resource Hierarchy.
 
 - [Documentation](https://cloud.google.com/resource-manager/docs/resource-settings/overview)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/resourcesettings.v1/resourcesettings.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/resourcesettings.v1/resourcesettings.v1-library.html)
 
 #### Retail API - `retail.v2`
 
 Cloud Retail service enables customers to build end-to-end personalized recommendation systems without requiring a high level of expertise in machine learning, recommendation system, or Google Cloud.
 
 - [Documentation](https://cloud.google.com/recommendations)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/retail.v2/retail.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/retail.v2/retail.v2-library.html)
 
 #### Cloud Run Admin API - `run.v1`
 
-Deploy and manage user provided container images that scale automatically based on incoming requests. The Cloud Run Admin API follows the Knative Serving API specification.
+Deploy and manage user provided container images that scale automatically based on incoming requests. The Cloud Run Admin API v1 follows the Knative Serving API specification, while v2 is aligned with Google Cloud AIP-based API standards, as described in https://google.aip.dev/.
 
 - [Documentation](https://cloud.google.com/run/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/run.v1/run.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/run.v1/run.v1-library.html)
 
 #### Cloud Run Admin API - `run.v2`
 
-Deploy and manage user provided container images that scale automatically based on incoming requests. The Cloud Run Admin API follows the Knative Serving API specification.
+Deploy and manage user provided container images that scale automatically based on incoming requests. The Cloud Run Admin API v1 follows the Knative Serving API specification, while v2 is aligned with Google Cloud AIP-based API standards, as described in https://google.aip.dev/.
 
 - [Documentation](https://cloud.google.com/run/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/run.v2/run.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/run.v2/run.v2-library.html)
 
 #### Cloud Runtime Configuration API - `runtimeconfig.v1`
 
 The Runtime Configurator allows you to dynamically configure and expose variables through Google Cloud Platform. In addition, you can also set Watchers and Waiters that will watch for changes to your data and return based on certain conditions.
 
 - [Documentation](https://cloud.google.com/deployment-manager/runtime-configurator/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/runtimeconfig.v1/runtimeconfig.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/runtimeconfig.v1/runtimeconfig.v1-library.html)
 
 #### Safe Browsing API - `safebrowsing.v4`
 
 Enables client applications to check web resources (most commonly URLs) against Google-generated lists of unsafe web resources. The Safe Browsing APIs are for non-commercial use only. If you need to use APIs to detect malicious URLs for commercial purposes – meaning “for sale or revenue-generating purposes” – please refer to the Web Risk API.
 
 - [Documentation](https://developers.google.com/safe-browsing/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/safebrowsing.v4/safebrowsing.v4-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/safebrowsing.v4/safebrowsing.v4-library.html)
 
 #### Apps Script API - `script.v1`
 
 Manages and executes Google Apps Script projects. 
 
 - [Documentation](https://developers.google.com/apps-script/api/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/script.v1/script.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/script.v1/script.v1-library.html)
 
 #### Google Search Console API - `searchconsole.v1`
 
 The Search Console API provides access to both Search Console data (verified users only) and to public information on an URL basis (anyone)
 
 - [Documentation](https://developers.google.com/webmaster-tools/search-console-api/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/searchconsole.v1/searchconsole.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/searchconsole.v1/searchconsole.v1-library.html)
 
 #### Secret Manager API - `secretmanager.v1`
 
 Stores sensitive data such as API keys, passwords, and certificates. Provides convenience while improving security. 
 
 - [Documentation](https://cloud.google.com/secret-manager/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/secretmanager.v1/secretmanager.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/secretmanager.v1/secretmanager.v1-library.html)
 
 #### Security Command Center API - `securitycenter.v1`
 
 Security Command Center API provides access to temporal views of assets and findings within an organization.
 
 - [Documentation](https://cloud.google.com/security-command-center)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/securitycenter.v1/securitycenter.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/securitycenter.v1/securitycenter.v1-library.html)
 
 #### Service Consumer Management API - `serviceconsumermanagement.v1`
 
 Manages the service consumers of a Service Infrastructure service.
 
 - [Documentation](https://cloud.google.com/service-consumer-management/docs/overview)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/serviceconsumermanagement.v1/serviceconsumermanagement.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/serviceconsumermanagement.v1/serviceconsumermanagement.v1-library.html)
 
 #### Service Control API - `servicecontrol.v1`
 
 Provides admission control and telemetry reporting for services integrated with Service Infrastructure. 
 
 - [Documentation](https://cloud.google.com/service-control/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/servicecontrol.v1/servicecontrol.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/servicecontrol.v1/servicecontrol.v1-library.html)
 
 #### Service Control API - `servicecontrol.v2`
 
 Provides admission control and telemetry reporting for services integrated with Service Infrastructure. 
 
 - [Documentation](https://cloud.google.com/service-control/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/servicecontrol.v2/servicecontrol.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/servicecontrol.v2/servicecontrol.v2-library.html)
 
 #### Service Directory API - `servicedirectory.v1`
 
 Service Directory is a platform for discovering, publishing, and connecting services. 
 
 - [Documentation](https://cloud.google.com/service-directory)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/servicedirectory.v1/servicedirectory.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/servicedirectory.v1/servicedirectory.v1-library.html)
 
 #### Service Management API - `servicemanagement.v1`
 
 Google Service Management allows service producers to publish their services on Google Cloud Platform so that they can be discovered and used by service consumers.
 
 - [Documentation](https://cloud.google.com/service-management/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/servicemanagement.v1/servicemanagement.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/servicemanagement.v1/servicemanagement.v1-library.html)
 
 #### Service Networking API - `servicenetworking.v1`
 
 Provides automatic management of network configurations necessary for certain services.
 
 - [Documentation](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/servicenetworking.v1/servicenetworking.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/servicenetworking.v1/servicenetworking.v1-library.html)
 
 #### Service Usage API - `serviceusage.v1`
 
 Enables services that service consumers want to use on Google Cloud Platform, lists the available or enabled services, or disables services that service consumers no longer use.
 
 - [Documentation](https://cloud.google.com/service-usage/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/serviceusage.v1/serviceusage.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/serviceusage.v1/serviceusage.v1-library.html)
 
 #### Google Sheets API - `sheets.v4`
 
 Reads and writes Google Sheets.
 
 - [Documentation](https://developers.google.com/sheets/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/sheets.v4/sheets.v4-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/sheets.v4/sheets.v4-library.html)
 
 #### ![Logo](https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png) Google Site Verification API - `siteVerification.v1`
 
 Verifies ownership of websites or domains with Google.
 
 - [Documentation](https://developers.google.com/site-verification/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/siteVerification.v1/siteVerification.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/siteVerification.v1/siteVerification.v1-library.html)
 
 #### Google Slides API - `slides.v1`
 
 Reads and writes Google Slides presentations.
 
 - [Documentation](https://developers.google.com/slides/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/slides.v1/slides.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/slides.v1/slides.v1-library.html)
 
 #### Smart Device Management API - `smartdevicemanagement.v1`
 
 Allow select enterprise partners to access, control, and manage Google and Nest devices programmatically.
 
 - [Documentation](https://developers.google.com/nest/device-access)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/smartdevicemanagement.v1/smartdevicemanagement.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/smartdevicemanagement.v1/smartdevicemanagement.v1-library.html)
 
 #### Cloud Source Repositories API - `sourcerepo.v1`
 
 Accesses source code repositories hosted by Google.
 
 - [Documentation](https://cloud.google.com/source-repositories/docs/apis)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/sourcerepo.v1/sourcerepo.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/sourcerepo.v1/sourcerepo.v1-library.html)
 
 #### Cloud Spanner API - `spanner.v1`
 
 Cloud Spanner is a managed, mission-critical, globally consistent and scalable relational database service.
 
 - [Documentation](https://cloud.google.com/spanner/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/spanner.v1/spanner.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/spanner.v1/spanner.v1-library.html)
 
 #### Cloud Speech-to-Text API - `speech.v1`
 
 Converts audio to text by applying powerful neural network models.
 
 - [Documentation](https://cloud.google.com/speech-to-text/docs/quickstart-protocol)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/speech.v1/speech.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/speech.v1/speech.v1-library.html)
 
 #### ![Logo](https://www.google.com/images/icons/product/cloud_storage-16.png) Cloud Storage JSON API - `storage.v1`
 
 Stores and retrieves potentially large, immutable data objects.
 
 - [Documentation](https://developers.google.com/storage/docs/json_api/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/storage.v1/storage.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/storage.v1/storage.v1-library.html)
 
 #### Storage Transfer API - `storagetransfer.v1`
 
 Transfers data from external data sources to a Google Cloud Storage bucket or between Google Cloud Storage buckets.
 
 - [Documentation](https://cloud.google.com/storage-transfer/docs)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/storagetransfer.v1/storagetransfer.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/storagetransfer.v1/storagetransfer.v1-library.html)
 
 #### Street View Publish API - `streetviewpublish.v1`
 
 Publishes 360 photos to Google Maps, along with position, orientation, and connectivity metadata. Apps can offer an interface for positioning, connecting, and uploading user-generated Street View images. 
 
 - [Documentation](https://developers.google.com/streetview/publish/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/streetviewpublish.v1/streetviewpublish.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/streetviewpublish.v1/streetviewpublish.v1-library.html)
 
 #### Security Token Service API - `sts.v1`
 
 The Security Token Service exchanges Google or third-party credentials for a short-lived access token to Google Cloud resources.
 
 - [Documentation](http://cloud.google.com/iam/docs/workload-identity-federation)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/sts.v1/sts.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/sts.v1/sts.v1-library.html)
 
 #### Tag Manager API - `tagmanager.v1`
 
 This API allows clients to access and modify container and tag configuration.
 
 - [Documentation](https://developers.google.com/tag-manager)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/tagmanager.v1/tagmanager.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/tagmanager.v1/tagmanager.v1-library.html)
 
 #### Tag Manager API - `tagmanager.v2`
 
 This API allows clients to access and modify container and tag configuration.
 
 - [Documentation](https://developers.google.com/tag-manager)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/tagmanager.v2/tagmanager.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/tagmanager.v2/tagmanager.v2-library.html)
 
 #### Tasks API - `tasks.v1`
 
 The Google Tasks API lets you manage your tasks and task lists.
 
 - [Documentation](https://developers.google.com/tasks/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/tasks.v1/tasks.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/tasks.v1/tasks.v1-library.html)
 
 #### Cloud Testing API - `testing.v1`
 
 Allows developers to run automated tests for their mobile applications on Google infrastructure.
 
 - [Documentation](https://developers.google.com/cloud-test-lab/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/testing.v1/testing.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/testing.v1/testing.v1-library.html)
 
 #### Cloud Text-to-Speech API - `texttospeech.v1`
 
 Synthesizes natural-sounding speech by applying powerful neural network models.
 
 - [Documentation](https://cloud.google.com/text-to-speech/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/texttospeech.v1/texttospeech.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/texttospeech.v1/texttospeech.v1-library.html)
 
 #### Cloud TPU API - `tpu.v1`
 
 TPU API provides customers with access to Google TPU technology.
 
 - [Documentation](https://cloud.google.com/tpu/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/tpu.v1/tpu.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/tpu.v1/tpu.v1-library.html)
 
 #### Traffic Director API - `trafficdirector.v2`
 
 - [Documentation](https://cloud.google.com/traffic-director)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/trafficdirector.v2/trafficdirector.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/trafficdirector.v2/trafficdirector.v2-library.html)
 
 #### Transcoder API - `transcoder.v1`
 
 This API converts video files into formats suitable for consumer distribution. 
 
 - [Documentation](https://cloud.google.com/transcoder/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/transcoder.v1/transcoder.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/transcoder.v1/transcoder.v1-library.html)
 
 #### Cloud Translation API - `translate.v3`
 
 Integrates text translation into your website or application.
 
 - [Documentation](https://cloud.google.com/translate/docs/quickstarts)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/translate.v3/translate.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/translate.v3/translate.v3-library.html)
 
 #### Google Vault API - `vault.v1`
 
 Retention and eDiscovery for Google Workspace. To work with Vault resources, the account must have the [required Vault privileges](https://support.google.com/vault/answer/2799699) and access to the matter. To access a matter, the account must have created the matter, have the matter shared with them, or have the **View All Matters** privilege. For example, to download an export, an account needs the **Manage Exports** privilege and the matter shared with them. 
 
 - [Documentation](https://developers.google.com/vault)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/vault.v1/vault.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/vault.v1/vault.v1-library.html)
 
 #### Chrome Verified Access API - `verifiedaccess.v1`
 
 API for Verified Access chrome extension to provide credential verification for chrome devices connecting to an enterprise network
 
 - [Documentation](https://developers.google.com/chrome/verified-access)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/verifiedaccess.v1/verifiedaccess.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/verifiedaccess.v1/verifiedaccess.v1-library.html)
 
 #### Version History API - `versionhistory.v1`
 
 Version History API - Prod
 
 - [Documentation](https://developers.chrome.com/versionhistory)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/versionhistory.v1/versionhistory.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/versionhistory.v1/versionhistory.v1-library.html)
 
 #### Cloud Video Intelligence API - `videointelligence.v1`
 
 Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text. Supports both asynchronous API and streaming API.
 
 - [Documentation](https://cloud.google.com/video-intelligence/docs/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/videointelligence.v1/videointelligence.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/videointelligence.v1/videointelligence.v1-library.html)
 
 #### Cloud Vision API - `vision.v1`
 
 Integrates Google Vision features, including image labeling, face, logo, and landmark detection, optical character recognition (OCR), and detection of explicit content, into applications.
 
 - [Documentation](https://cloud.google.com/vision/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/vision.v1/vision.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/vision.v1/vision.v1-library.html)
 
 #### VM Migration API - `vmmigration.v1`
 
 Use the Migrate for Compute Engine API to programmatically migrate workloads. 
 
 - [Documentation](https://cloud.google.com/migrate/compute-engine)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/vmmigration.v1/vmmigration.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/vmmigration.v1/vmmigration.v1-library.html)
 
 #### Web Fonts Developer API - `webfonts.v1`
 
 The Google Web Fonts Developer API lets you retrieve information about web fonts served by Google.
 
 - [Documentation](https://developers.google.com/fonts/docs/developer_api)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/webfonts.v1/webfonts.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/webfonts.v1/webfonts.v1-library.html)
 
 #### Web Risk API - `webrisk.v1`
 
 - [Documentation](https://cloud.google.com/web-risk/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/webrisk.v1/webrisk.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/webrisk.v1/webrisk.v1-library.html)
 
 #### Web Security Scanner API - `websecurityscanner.v1`
 
 Scans your Compute and App Engine apps for common web vulnerabilities.
 
 - [Documentation](https://cloud.google.com/security-command-center/docs/concepts-web-security-scanner-overview/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/websecurityscanner.v1/websecurityscanner.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/websecurityscanner.v1/websecurityscanner.v1-library.html)
 
 #### Workflow Executions API - `workflowexecutions.v1`
 
 Execute workflows created with Workflows API.
 
 - [Documentation](https://cloud.google.com/workflows)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/workflowexecutions.v1/workflowexecutions.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/workflowexecutions.v1/workflowexecutions.v1-library.html)
 
 #### Workflows API - `workflows.v1`
 
 Manage workflow definitions. To execute workflows and manage executions, see the Workflows Executions API.
 
 - [Documentation](https://cloud.google.com/workflows)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/workflows.v1/workflows.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/workflows.v1/workflows.v1-library.html)
 
 #### YouTube Data API v3 - `youtube.v3`
 
 The YouTube Data API v3 is an API that provides access to YouTube data, such as videos, playlists, and channels.
 
 - [Documentation](https://developers.google.com/youtube/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/youtube.v3/youtube.v3-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/youtube.v3/youtube.v3-library.html)
 
 #### YouTube Analytics API - `youtubeAnalytics.v2`
 
 Retrieves your YouTube Analytics data.
 
 - [Documentation](https://developers.google.com/youtube/analytics)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/youtubeAnalytics.v2/youtubeAnalytics.v2-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/youtubeAnalytics.v2/youtubeAnalytics.v2-library.html)
 
 #### YouTube Reporting API - `youtubereporting.v1`
 
 Schedules reporting jobs containing your YouTube Analytics data and downloads the resulting bulk data reports in the form of CSV files.
 
 - [Documentation](https://developers.google.com/youtube/reporting/v1/reports/)
-- [API details](https://pub.dev/documentation/googleapis/8.0.0-dev/youtubereporting.v1/youtubereporting.v1-library.html)
+- [API details](https://pub.dev/documentation/googleapis/8.0.0/youtubereporting.v1/youtubereporting.v1-library.html)
 
diff --git a/generated/googleapis/lib/accesscontextmanager/v1.dart b/generated/googleapis/lib/accesscontextmanager/v1.dart
index 7575000..64f8000 100644
--- a/generated/googleapis/lib/accesscontextmanager/v1.dart
+++ b/generated/googleapis/lib/accesscontextmanager/v1.dart
@@ -3242,7 +3242,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/admin/directory_v1.dart b/generated/googleapis/lib/admin/directory_v1.dart
index 4ba07db..17f6d0f 100644
--- a/generated/googleapis/lib/admin/directory_v1.dart
+++ b/generated/googleapis/lib/admin/directory_v1.dart
@@ -1266,6 +1266,12 @@
   /// [filter] - Search query. Search syntax is shared between this api and
   /// Admin Console printers pages.
   ///
+  /// [orderBy] - The order to sort results by. Must be one of display_name,
+  /// description, make_and_model, or create_time. Default order is ascending,
+  /// but descending order can be returned by appending "desc" to the order_by
+  /// field. For instance, "description desc" will return the printers sorted by
+  /// description in descending order.
+  ///
   /// [orgUnitId] - Organization Unit that we want to list the printers for.
   /// When org_unit is not present in the request then all printers of the
   /// customer are returned (or filtered). When org_unit is present in the
@@ -1291,6 +1297,7 @@
   async.Future<ListPrintersResponse> list(
     core.String parent, {
     core.String? filter,
+    core.String? orderBy,
     core.String? orgUnitId,
     core.int? pageSize,
     core.String? pageToken,
@@ -1298,6 +1305,7 @@
   }) async {
     final _queryParams = <core.String, core.List<core.String>>{
       if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
       if (orgUnitId != null) 'orgUnitId': [orgUnitId],
       if (pageSize != null) 'pageSize': ['${pageSize}'],
       if (pageToken != null) 'pageToken': [pageToken],
@@ -1880,7 +1888,7 @@
   /// `customerId` is also returned as part of the
   /// \[Users\](/admin-sdk/directory/v1/reference/users)
   ///
-  /// [domain] - The domain name. Use this field to get fields from only one
+  /// [domain] - The domain name. Use this field to get groups from only one
   /// domain. To return all domains for a customer account, use the `customer`
   /// query parameter instead.
   ///
@@ -5042,7 +5050,7 @@
   /// resource\](/admin-sdk/directory/v1/reference/users). Either the `customer`
   /// or the `domain` parameter must be provided.
   ///
-  /// [domain] - The domain name. Use this field to get fields from only one
+  /// [domain] - The domain name. Use this field to get groups from only one
   /// domain. To return all domains for a customer account, use the `customer`
   /// query parameter instead. Either the `customer` or the `domain` parameter
   /// must be provided.
@@ -5080,7 +5088,8 @@
   /// [showDeleted] - If set to `true`, retrieves the list of deleted users.
   /// (Default: `false`)
   ///
-  /// [sortOrder] - Whether to return results in ascending or descending order.
+  /// [sortOrder] - Whether to return results in ascending or descending order,
+  /// ignoring case.
   /// Possible string values are:
   /// - "ASCENDING" : Ascending order.
   /// - "DESCENDING" : Descending order.
@@ -7507,8 +7516,10 @@
   /// orgUnitPath is the human readable version of orgUnitId. While orgUnitPath
   /// may change by renaming an organizational unit within the path, orgUnitId
   /// is unchangeable for one organizational unit. This property can be
-  /// \[updated\](/admin-sdk/directory/v1/guides/manage-chrome-devices#update_chrome_device)
-  /// using the API, and this will be supported in the future.
+  /// \[updated\](/admin-sdk/directory/v1/guides/manage-chrome-devices#move_chrome_devices_to_ou)
+  /// using the API. For more information about how to create an organizational
+  /// structure for your device, see the
+  /// [administration help center](https://support.google.com/a/answer/182433).
   core.String? orgUnitId;
 
   /// The full parent path with the organizational unit's name associated with
@@ -7517,7 +7528,7 @@
   /// Path names are case insensitive. If the parent organizational unit is the
   /// top-level organization, it is represented as a forward slash, `/`. This
   /// property can be
-  /// \[updated\](/admin-sdk/directory/v1/guides/manage-chrome-devices#update_chrome_device)
+  /// \[updated\](/admin-sdk/directory/v1/guides/manage-chrome-devices#move_chrome_devices_to_ou)
   /// using the API. For more information about how to create an organizational
   /// structure for your device, see the
   /// [administration help center](https://support.google.com/a/answer/182433).
@@ -8989,8 +9000,8 @@
   /// List of printers.
   ///
   /// If `org_unit_id` was given in the request, then only printers visible for
-  /// this OU will be returned. If `org_unit_id` was given in the request, then
-  /// all printers will be returned.
+  /// this OU will be returned. If `org_unit_id` was not given in the request,
+  /// then all printers will be returned.
   core.List<Printer>? printers;
 
   ListPrintersResponse({
@@ -10832,10 +10843,10 @@
   /// Stores the hash format of the password property.
   ///
   /// We recommend sending the `password` property value as a base 16 bit
-  /// hexadecimal-encoded hash value. Set the `hashFunction` values as either
-  /// the \[SHA-1\](https://wikipedia.org/wiki/SHA-1),
-  /// [MD5](https://wikipedia.org/wiki/MD5), or
-  /// [crypt](https://en.wikipedia.org/wiki/Crypt_\(C\)) hash format.
+  /// hexadecimal-encoded hash value. The following `hashFunction` values are
+  /// allowed: * `DES` * `MD5` - hash prefix is `$1$` * `SHA2-256` - hash prefix
+  /// is `$5$` * `SHA2-512` - hash prefix is `$6$` If rounds are specified as
+  /// part of the prefix, they must be 10,000 or fewer.
   core.String? hashFunction;
 
   /// The unique ID for the user.
diff --git a/generated/googleapis/lib/admob/v1.dart b/generated/googleapis/lib/admob/v1.dart
index ae43d79..68da1a4 100644
--- a/generated/googleapis/lib/admob/v1.dart
+++ b/generated/googleapis/lib/admob/v1.dart
@@ -604,10 +604,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// Specification of a single date range.
diff --git a/generated/googleapis/lib/adsense/v2.dart b/generated/googleapis/lib/adsense/v2.dart
index 86690f8..56a57e7 100644
--- a/generated/googleapis/lib/adsense/v2.dart
+++ b/generated/googleapis/lib/adsense/v2.dart
@@ -1904,10 +1904,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// The header information of the columns requested in the report.
diff --git a/generated/googleapis/lib/androiddeviceprovisioning/v1.dart b/generated/googleapis/lib/androiddeviceprovisioning/v1.dart
index 7845923..5f1acee 100644
--- a/generated/googleapis/lib/androiddeviceprovisioning/v1.dart
+++ b/generated/googleapis/lib/androiddeviceprovisioning/v1.dart
@@ -82,7 +82,8 @@
   /// [pageSize] - The maximum number of customers to show in a page of results.
   /// A number between 1 and 100 (inclusive).
   ///
-  /// [pageToken] - A token specifying which result page to return.
+  /// [pageToken] - A token specifying which result page to return. This field
+  /// has custom validations in ListCustomersRequestValidator
   ///
   /// [$fields] - Selector specifying which fields to include in a partial
   /// response.
@@ -132,7 +133,8 @@
   /// Request parameters:
   ///
   /// [parent] - Required. The customer that manages the configuration. An API
-  /// resource name in the format `customers/[CUSTOMER_ID]`.
+  /// resource name in the format `customers/[CUSTOMER_ID]`. This field has
+  /// custom validation in CreateConfigurationRequestValidator
   /// Value must have pattern `^customers/\[^/\]+$`.
   ///
   /// [$fields] - Selector specifying which fields to include in a partial
@@ -1710,6 +1712,8 @@
 
   /// The device the configuration is applied to.
   ///
+  /// There are custom validations in ApplyConfigurationRequestValidator
+  ///
   /// Required.
   DeviceReference? device;
 
@@ -1856,6 +1860,8 @@
 class CustomerRemoveConfigurationRequest {
   /// The device to remove the configuration from.
   ///
+  /// There are custom validations in RemoveConfigurationRequestValidator
+  ///
   /// Required.
   DeviceReference? device;
 
@@ -1880,6 +1886,8 @@
 class CustomerUnclaimDeviceRequest {
   /// The device to unclaim.
   ///
+  /// There are custom validations in UnclaimDeviceRequestValidator.
+  ///
   /// Required.
   DeviceReference? device;
 
diff --git a/generated/googleapis/lib/androidmanagement/v1.dart b/generated/googleapis/lib/androidmanagement/v1.dart
index 86f0201..2404451 100644
--- a/generated/googleapis/lib/androidmanagement/v1.dart
+++ b/generated/googleapis/lib/androidmanagement/v1.dart
@@ -1184,8 +1184,8 @@
   /// enterprises/{enterpriseId}.
   /// Value must have pattern `^enterprises/\[^/\]+$`.
   ///
-  /// [pageSize] - The requested page size. The actual page size may be fixed to
-  /// a min or max value.
+  /// [pageSize] - The requested page size. This is a hint and the actual page
+  /// size in the response may be different.
   ///
   /// [pageToken] - A token identifying a page of results returned by the
   /// server.
@@ -2640,10 +2640,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: A full date, with non-zero year, month, and
-/// day values A month and day value, with a zero year, such as an anniversary A
-/// year on its own, with zero month and day values A year and month value, with
-/// a zero day, such as a credit card expiration dateRelated types are
-/// google.type.TimeOfDay and google.protobuf.Timestamp.
+/// day values A month and day, with a zero year (e.g., an anniversary) A year
+/// on its own, with a zero month and a zero day A year and month, with a zero
+/// day (e.g., a credit card expiration date)Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// A device owned by an enterprise.
diff --git a/generated/googleapis/lib/apigateway/v1.dart b/generated/googleapis/lib/apigateway/v1.dart
index d89b84d..bc32410 100644
--- a/generated/googleapis/lib/apigateway/v1.dart
+++ b/generated/googleapis/lib/apigateway/v1.dart
@@ -2628,7 +2628,7 @@
 typedef ApigatewayStatus = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef ApigatewayTestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef ApigatewayTestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef ApigatewayTestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/apigee/v1.dart b/generated/googleapis/lib/apigee/v1.dart
index 3d9b93e..e08e8aa 100644
--- a/generated/googleapis/lib/apigee/v1.dart
+++ b/generated/googleapis/lib/apigee/v1.dart
@@ -49,6 +49,7 @@
 ///     - [OrganizationsDevelopersAttributesResource]
 ///     - [OrganizationsDevelopersBalanceResource]
 ///     - [OrganizationsDevelopersSubscriptionsResource]
+///   - [OrganizationsEndpointAttachmentsResource]
 ///   - [OrganizationsEnvgroupsResource]
 ///     - [OrganizationsEnvgroupsAttachmentsResource]
 ///   - [OrganizationsEnvironmentsResource]
@@ -206,6 +207,8 @@
       OrganizationsDeploymentsResource(_requester);
   OrganizationsDevelopersResource get developers =>
       OrganizationsDevelopersResource(_requester);
+  OrganizationsEndpointAttachmentsResource get endpointAttachments =>
+      OrganizationsEndpointAttachmentsResource(_requester);
   OrganizationsEnvgroupsResource get envgroups =>
       OrganizationsEnvgroupsResource(_requester);
   OrganizationsEnvironmentsResource get environments =>
@@ -4671,6 +4674,191 @@
   }
 }
 
+class OrganizationsEndpointAttachmentsResource {
+  final commons.ApiRequester _requester;
+
+  OrganizationsEndpointAttachmentsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates an EndpointAttachment.
+  ///
+  /// **Note:** Not supported for Apigee hybrid.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The Organization this EndpointAttachment will be
+  /// created in.
+  /// Value must have pattern `^organizations/\[^/\]+$`.
+  ///
+  /// [endpointAttachmentId] - The ID to use for the endpoint attachment. ID
+  /// must be a 1-20 characters string with lowercase letters and numbers and
+  /// must start with a letter.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> create(
+    GoogleCloudApigeeV1EndpointAttachment request,
+    core.String parent, {
+    core.String? endpointAttachmentId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (endpointAttachmentId != null)
+        'endpointAttachmentId': [endpointAttachmentId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$parent') + '/endpointAttachments';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes an endpoint attachment.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the Endpoint Attachment in the following
+  /// format:
+  /// `organizations/{organization}/endpointAttachments/{endpoint_attachment}`.
+  /// Value must have pattern
+  /// `^organizations/\[^/\]+/endpointAttachments/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets the specified EndpointAttachment.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the Endpoint Attachment in the following
+  /// format:
+  /// `organizations/{organization}/endpointAttachments/{endpoint_attachment}`.
+  /// Value must have pattern
+  /// `^organizations/\[^/\]+/endpointAttachments/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudApigeeV1EndpointAttachment].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudApigeeV1EndpointAttachment> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudApigeeV1EndpointAttachment.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists the EndpointAttachments in the specified Organization.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. Name of the Organization for which to list Endpoint
+  /// Attachments in the format: `organizations/{organization}`.
+  /// Value must have pattern `^organizations/\[^/\]+$`.
+  ///
+  /// [pageSize] - Optional. Maximum number of Endpoint Attachments to return.
+  /// If unspecified, at most 25 attachments will be returned.
+  ///
+  /// [pageToken] - Optional. Page token, returned from a previous
+  /// ListEndpointAttachments call, that you can use to retrieve the next page.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudApigeeV1ListEndpointAttachmentsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudApigeeV1ListEndpointAttachmentsResponse> list(
+    core.String parent, {
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$parent') + '/endpointAttachments';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudApigeeV1ListEndpointAttachmentsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 class OrganizationsEnvgroupsResource {
   final commons.ApiRequester _requester;
 
@@ -14376,6 +14564,11 @@
   /// Optional.
   core.int? count;
 
+  /// The first transaction creation timestamp, recorded by UAP.
+  ///
+  /// Output only.
+  core.String? createTime;
+
   /// A conditional statement which is evaluated against the request message to
   /// determine if it should be traced.
   ///
@@ -14411,6 +14604,7 @@
 
   GoogleCloudApigeeV1DebugSession({
     this.count,
+    this.createTime,
     this.filter,
     this.name,
     this.timeout,
@@ -14421,6 +14615,9 @@
   GoogleCloudApigeeV1DebugSession.fromJson(core.Map _json)
       : this(
           count: _json.containsKey('count') ? _json['count'] as core.int : null,
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
           filter: _json.containsKey('filter')
               ? _json['filter'] as core.String
               : null,
@@ -14438,6 +14635,7 @@
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (count != null) 'count': count!,
+        if (createTime != null) 'createTime': createTime!,
         if (filter != null) 'filter': filter!,
         if (name != null) 'name': name!,
         if (timeout != null) 'timeout': timeout!,
@@ -15526,6 +15724,53 @@
       };
 }
 
+/// Apigee Endpoint Attachment.
+class GoogleCloudApigeeV1EndpointAttachment {
+  /// Host that can be used in either HTTP Target Endpoint directly, or as the
+  /// host in Target Server.
+  ///
+  /// Output only.
+  core.String? host;
+
+  /// Location of the endpoint attachment.
+  ///
+  /// Required.
+  core.String? location;
+
+  /// Name of the Endpoint Attachment in the following format:
+  /// `organizations/{organization}/endpointAttachments/{endpoint_attachment}`.
+  core.String? name;
+
+  /// Format: projects / * /regions / * /serviceAttachments / *
+  core.String? serviceAttachment;
+
+  GoogleCloudApigeeV1EndpointAttachment({
+    this.host,
+    this.location,
+    this.name,
+    this.serviceAttachment,
+  });
+
+  GoogleCloudApigeeV1EndpointAttachment.fromJson(core.Map _json)
+      : this(
+          host: _json.containsKey('host') ? _json['host'] as core.String : null,
+          location: _json.containsKey('location')
+              ? _json['location'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          serviceAttachment: _json.containsKey('serviceAttachment')
+              ? _json['serviceAttachment'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (host != null) 'host': host!,
+        if (location != null) 'location': location!,
+        if (name != null) 'name': name!,
+        if (serviceAttachment != null) 'serviceAttachment': serviceAttachment!,
+      };
+}
+
 /// Metadata common to many entities in this API.
 class GoogleCloudApigeeV1EntityMetadata {
   /// Time at which the API proxy was created, in milliseconds since epoch.
@@ -17510,6 +17755,43 @@
       };
 }
 
+/// Response for ListEndpointAttachments method.
+class GoogleCloudApigeeV1ListEndpointAttachmentsResponse {
+  /// Endpoint Attachments in the specified organization.
+  core.List<GoogleCloudApigeeV1EndpointAttachment>? endpointAttachments;
+
+  /// Page token that you can include in a ListEndpointAttachments request to
+  /// retrieve the next page.
+  ///
+  /// If omitted, no subsequent pages exist.
+  core.String? nextPageToken;
+
+  GoogleCloudApigeeV1ListEndpointAttachmentsResponse({
+    this.endpointAttachments,
+    this.nextPageToken,
+  });
+
+  GoogleCloudApigeeV1ListEndpointAttachmentsResponse.fromJson(core.Map _json)
+      : this(
+          endpointAttachments: _json.containsKey('endpointAttachments')
+              ? (_json['endpointAttachments'] as core.List)
+                  .map((value) =>
+                      GoogleCloudApigeeV1EndpointAttachment.fromJson(
+                          value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (endpointAttachments != null)
+          'endpointAttachments': endpointAttachments!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
 /// Response for ListEnvironmentGroupAttachments.
 class GoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse {
   /// EnvironmentGroupAttachments for the specified environment group.
@@ -20411,7 +20693,7 @@
   /// The debug session ID.
   core.String? id;
 
-  /// The first transaction creation timestamp in millisecond, recoreded by UAP.
+  /// The first transaction creation timestamp in millisecond, recorded by UAP.
   core.String? timestampMs;
 
   GoogleCloudApigeeV1Session({
@@ -21836,7 +22118,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef GoogleIamV1TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef GoogleIamV1TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef GoogleIamV1TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/apikeys/v2.dart b/generated/googleapis/lib/apikeys/v2.dart
index 039a041..103889f 100644
--- a/generated/googleapis/lib/apikeys/v2.dart
+++ b/generated/googleapis/lib/apikeys/v2.dart
@@ -181,9 +181,12 @@
   ProjectsLocationsKeysResource(commons.ApiRequester client)
       : _requester = client;
 
-  /// Clones the existing key's restriction and display name to a new API key.
+  /// DEPRECATED: API customers can call `GetKey` and then `CreateKey` methods
+  /// to create a copy of an existing key.
   ///
-  /// The service account must have the `apikeys.keys.get` and
+  /// Retire `CloneKey` method to eliminate the unnessary method from API Keys
+  /// API. Clones the existing key's restriction and display name to a new API
+  /// key. The service account must have the `apikeys.keys.get` and
   /// `apikeys.keys.create` permissions in the project. NOTE: Key is a global
   /// resource; hence the only supported value for location is `global`.
   ///
@@ -415,15 +418,19 @@
   /// [parent] - Required. Lists all API keys associated with this project.
   /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
   ///
-  /// [filter] - Optional. Only list keys that conform to the specified filter.
-  /// The allowed filter strings are `state:ACTIVE` and `state:DELETED`. By
-  /// default, ListKeys returns only active keys.
+  /// [filter] - Optional. Deprecated: Use `show_deleted` instead. Only list
+  /// keys that conform to the specified filter. The allowed filter strings are
+  /// `state:ACTIVE` and `state:DELETED`. By default, ListKeys returns only
+  /// active keys.
   ///
   /// [pageSize] - Optional. Specifies the maximum number of results to be
   /// returned at a time.
   ///
   /// [pageToken] - Optional. Requests a specific page of results.
   ///
+  /// [showDeleted] - Optional. Indicate that keys are marked as deleted within
+  /// 30 days should also be returned. Normally only active keys are returned.
+  ///
   /// [$fields] - Selector specifying which fields to include in a partial
   /// response.
   ///
@@ -439,12 +446,14 @@
     core.String? filter,
     core.int? pageSize,
     core.String? pageToken,
+    core.bool? showDeleted,
     core.String? $fields,
   }) async {
     final _queryParams = <core.String, core.List<core.String>>{
       if (filter != null) 'filter': [filter],
       if (pageSize != null) 'pageSize': ['${pageSize}'],
       if (pageToken != null) 'pageToken': [pageToken],
+      if (showDeleted != null) 'showDeleted': ['${showDeleted}'],
       if ($fields != null) 'fields': [$fields],
     };
 
diff --git a/generated/googleapis/lib/artifactregistry/v1.dart b/generated/googleapis/lib/artifactregistry/v1.dart
index 9dfeaa5..d44630e 100644
--- a/generated/googleapis/lib/artifactregistry/v1.dart
+++ b/generated/googleapis/lib/artifactregistry/v1.dart
@@ -21,21 +21,19 @@
 ///
 /// Create an instance of [ArtifactRegistryApi] to access these resources:
 ///
-/// - [OperationsResource]
 /// - [ProjectsResource]
 ///   - [ProjectsLocationsResource]
+///     - [ProjectsLocationsOperationsResource]
 ///     - [ProjectsLocationsRepositoriesResource]
 ///       - [ProjectsLocationsRepositoriesAptArtifactsResource]
-///       - [ProjectsLocationsRepositoriesAptartifactsResource]
 ///       - [ProjectsLocationsRepositoriesDockerImagesResource]
 ///       - [ProjectsLocationsRepositoriesFilesResource]
 ///       - [ProjectsLocationsRepositoriesGooGetArtifactsResource]
-///       - [ProjectsLocationsRepositoriesGoogetartifactsResource]
+///       - [ProjectsLocationsRepositoriesGoogetArtifactsResource]
 ///       - [ProjectsLocationsRepositoriesPackagesResource]
 ///         - [ProjectsLocationsRepositoriesPackagesTagsResource]
 ///         - [ProjectsLocationsRepositoriesPackagesVersionsResource]
 ///       - [ProjectsLocationsRepositoriesYumArtifactsResource]
-///       - [ProjectsLocationsRepositoriesYumartifactsResource]
 library artifactregistry.v1;
 
 import 'dart:async' as async;
@@ -75,7 +73,6 @@
 
   final commons.ApiRequester _requester;
 
-  OperationsResource get operations => OperationsResource(_requester);
   ProjectsResource get projects => ProjectsResource(_requester);
 
   ArtifactRegistryApi(http.Client client,
@@ -85,50 +82,6 @@
             commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
 }
 
-class OperationsResource {
-  final commons.ApiRequester _requester;
-
-  OperationsResource(commons.ApiRequester client) : _requester = client;
-
-  /// 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.
-  ///
-  /// Request parameters:
-  ///
-  /// [name] - The name of the operation resource.
-  /// Value must have pattern `^operations/\[^/\]+$`.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [Operation].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<Operation> get(
-    core.String name, {
-    core.String? $fields,
-  }) async {
-    final _queryParams = <core.String, core.List<core.String>>{
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1/' + core.Uri.encodeFull('$name');
-
-    final _response = await _requester.request(
-      _url,
-      'GET',
-      queryParams: _queryParams,
-    );
-    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
-  }
-}
-
 class ProjectsResource {
   final commons.ApiRequester _requester;
 
@@ -224,33 +177,77 @@
 class ProjectsLocationsResource {
   final commons.ApiRequester _requester;
 
+  ProjectsLocationsOperationsResource get operations =>
+      ProjectsLocationsOperationsResource(_requester);
   ProjectsLocationsRepositoriesResource get repositories =>
       ProjectsLocationsRepositoriesResource(_requester);
 
   ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
 }
 
+class ProjectsLocationsOperationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsOperationsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// 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.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 class ProjectsLocationsRepositoriesResource {
   final commons.ApiRequester _requester;
 
   ProjectsLocationsRepositoriesAptArtifactsResource get aptArtifacts =>
       ProjectsLocationsRepositoriesAptArtifactsResource(_requester);
-  ProjectsLocationsRepositoriesAptartifactsResource get aptartifacts =>
-      ProjectsLocationsRepositoriesAptartifactsResource(_requester);
   ProjectsLocationsRepositoriesDockerImagesResource get dockerImages =>
       ProjectsLocationsRepositoriesDockerImagesResource(_requester);
   ProjectsLocationsRepositoriesFilesResource get files =>
       ProjectsLocationsRepositoriesFilesResource(_requester);
   ProjectsLocationsRepositoriesGooGetArtifactsResource get gooGetArtifacts =>
       ProjectsLocationsRepositoriesGooGetArtifactsResource(_requester);
-  ProjectsLocationsRepositoriesGoogetartifactsResource get googetartifacts =>
-      ProjectsLocationsRepositoriesGoogetartifactsResource(_requester);
+  ProjectsLocationsRepositoriesGoogetArtifactsResource get googetArtifacts =>
+      ProjectsLocationsRepositoriesGoogetArtifactsResource(_requester);
   ProjectsLocationsRepositoriesPackagesResource get packages =>
       ProjectsLocationsRepositoriesPackagesResource(_requester);
   ProjectsLocationsRepositoriesYumArtifactsResource get yumArtifacts =>
       ProjectsLocationsRepositoriesYumArtifactsResource(_requester);
-  ProjectsLocationsRepositoriesYumartifactsResource get yumartifacts =>
-      ProjectsLocationsRepositoriesYumartifactsResource(_requester);
 
   ProjectsLocationsRepositoriesResource(commons.ApiRequester client)
       : _requester = client;
@@ -671,13 +668,6 @@
     );
     return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
   }
-}
-
-class ProjectsLocationsRepositoriesAptartifactsResource {
-  final commons.ApiRequester _requester;
-
-  ProjectsLocationsRepositoriesAptartifactsResource(commons.ApiRequester client)
-      : _requester = client;
 
   /// Directly uploads an Apt artifact.
   ///
@@ -890,6 +880,8 @@
   /// `owner="projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/1.0"`
   /// --\> Files owned by the version `1.0` in package `pkg1`.
   ///
+  /// [orderBy] - The field to order the results by.
+  ///
   /// [pageSize] - The maximum number of files to return.
   ///
   /// [pageToken] - The next_page_token value returned from a previous list
@@ -908,12 +900,14 @@
   async.Future<ListFilesResponse> list(
     core.String parent, {
     core.String? filter,
+    core.String? orderBy,
     core.int? pageSize,
     core.String? pageToken,
     core.String? $fields,
   }) async {
     final _queryParams = <core.String, core.List<core.String>>{
       if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
       if (pageSize != null) 'pageSize': ['${pageSize}'],
       if (pageToken != null) 'pageToken': [pageToken],
       if ($fields != null) 'fields': [$fields],
@@ -987,10 +981,10 @@
   }
 }
 
-class ProjectsLocationsRepositoriesGoogetartifactsResource {
+class ProjectsLocationsRepositoriesGoogetArtifactsResource {
   final commons.ApiRequester _requester;
 
-  ProjectsLocationsRepositoriesGoogetartifactsResource(
+  ProjectsLocationsRepositoriesGoogetArtifactsResource(
       commons.ApiRequester client)
       : _requester = client;
 
@@ -1523,7 +1517,7 @@
   /// Value must have pattern
   /// `^projects/\[^/\]+/locations/\[^/\]+/repositories/\[^/\]+/packages/\[^/\]+$`.
   ///
-  /// [orderBy] - Optional. Sorting field and order
+  /// [orderBy] - Optional. The field to order the results by.
   ///
   /// [pageSize] - The maximum number of versions to return. Maximum page size
   /// is 1,000.
@@ -1630,13 +1624,6 @@
     );
     return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
   }
-}
-
-class ProjectsLocationsRepositoriesYumartifactsResource {
-  final commons.ApiRequester _requester;
-
-  ProjectsLocationsRepositoriesYumartifactsResource(commons.ApiRequester client)
-      : _requester = client;
 
   /// Directly uploads a Yum artifact.
   ///
@@ -2635,7 +2622,7 @@
   /// - "PYTHON" : Python package format.
   core.String? format;
 
-  /// The Cloud KMS resource name of the customer managed encryption key that’s
+  /// The Cloud KMS resource name of the customer managed encryption key that's
   /// used to encrypt the contents of the Repository.
   ///
   /// Has the form:
@@ -2789,7 +2776,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/authorizedbuyersmarketplace/v1.dart b/generated/googleapis/lib/authorizedbuyersmarketplace/v1.dart
index 376905a..0207d82 100644
--- a/generated/googleapis/lib/authorizedbuyersmarketplace/v1.dart
+++ b/generated/googleapis/lib/authorizedbuyersmarketplace/v1.dart
@@ -2418,6 +2418,17 @@
 
 /// Message captures data about the creatives in the deal.
 class CreativeRequirements {
+  /// The format of the creative, only applicable for programmatic guaranteed
+  /// and preferred deals.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "CREATIVE_FORMAT_UNSPECIFIED" : A placeholder for an unspecified
+  /// creative format.
+  /// - "DISPLAY" : Banner creatives such as image or HTML5 assets.
+  /// - "VIDEO" : Video creatives that can be played in a video player.
+  core.String? creativeFormat;
+
   /// Specifies the creative pre-approval policy.
   ///
   /// Output only.
@@ -2442,6 +2453,13 @@
   /// option.
   core.String? creativeSafeFrameCompatibility;
 
+  /// The max duration of the video creative in milliseconds.
+  ///
+  /// only applicable for deals with video creatives.
+  ///
+  /// Output only.
+  core.String? maxAdDurationMs;
+
   /// Specifies the creative source for programmatic deals.
   ///
   /// PUBLISHER means creative is provided by seller and ADVERTISER means
@@ -2455,14 +2473,43 @@
   /// - "PUBLISHER" : The publisher provides the creatives to be served.
   core.String? programmaticCreativeSource;
 
+  /// Skippable video ads allow viewers to skip ads after 5 seconds.
+  ///
+  /// Only applicable for deals with video creatives.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "SKIPPABLE_AD_TYPE_UNSPECIFIED" : A placeholder for an unspecified
+  /// skippable ad type.
+  /// - "SKIPPABLE" : Video ad that can be skipped after 5 seconds. This value
+  /// will appear in RTB bid requests as
+  /// SkippableBidRequestType::REQUIRE_SKIPPABLE.
+  /// - "INSTREAM_SELECT" : Video ad that can be skipped after 5 seconds, and is
+  /// counted as engaged view after 30 seconds. The creative is hosted on
+  /// YouTube only, and viewcount of the YouTube video increments after the
+  /// engaged view. This value will appear in RTB bid requests as
+  /// SkippableBidRequestType::REQUIRE_SKIPPABLE.
+  /// - "NOT_SKIPPABLE" : This video ad is not skippable. This value will appear
+  /// in RTB bid requests as SkippableBidRequestType::BLOCK_SKIPPABLE.
+  /// - "ANY" : This video ad can be skipped after 5 seconds or not-skippable.
+  /// This value will appear in RTB bid requests as
+  /// SkippableBidRequestType::ALLOW_SKIPPABLE.
+  core.String? skippableAdType;
+
   CreativeRequirements({
+    this.creativeFormat,
     this.creativePreApprovalPolicy,
     this.creativeSafeFrameCompatibility,
+    this.maxAdDurationMs,
     this.programmaticCreativeSource,
+    this.skippableAdType,
   });
 
   CreativeRequirements.fromJson(core.Map _json)
       : this(
+          creativeFormat: _json.containsKey('creativeFormat')
+              ? _json['creativeFormat'] as core.String
+              : null,
           creativePreApprovalPolicy:
               _json.containsKey('creativePreApprovalPolicy')
                   ? _json['creativePreApprovalPolicy'] as core.String
@@ -2471,19 +2518,28 @@
               _json.containsKey('creativeSafeFrameCompatibility')
                   ? _json['creativeSafeFrameCompatibility'] as core.String
                   : null,
+          maxAdDurationMs: _json.containsKey('maxAdDurationMs')
+              ? _json['maxAdDurationMs'] as core.String
+              : null,
           programmaticCreativeSource:
               _json.containsKey('programmaticCreativeSource')
                   ? _json['programmaticCreativeSource'] as core.String
                   : null,
+          skippableAdType: _json.containsKey('skippableAdType')
+              ? _json['skippableAdType'] as core.String
+              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (creativeFormat != null) 'creativeFormat': creativeFormat!,
         if (creativePreApprovalPolicy != null)
           'creativePreApprovalPolicy': creativePreApprovalPolicy!,
         if (creativeSafeFrameCompatibility != null)
           'creativeSafeFrameCompatibility': creativeSafeFrameCompatibility!,
+        if (maxAdDurationMs != null) 'maxAdDurationMs': maxAdDurationMs!,
         if (programmaticCreativeSource != null)
           'programmaticCreativeSource': programmaticCreativeSource!,
+        if (skippableAdType != null) 'skippableAdType': skippableAdType!,
       };
 }
 
diff --git a/generated/googleapis/lib/baremetalsolution/v2.dart b/generated/googleapis/lib/baremetalsolution/v2.dart
new file mode 100644
index 0000000..82d6912
--- /dev/null
+++ b/generated/googleapis/lib/baremetalsolution/v2.dart
@@ -0,0 +1,3691 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+// ignore_for_file: camel_case_types
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_string_interpolations
+
+/// Bare Metal Solution API - v2
+///
+/// Provides ways to manage Bare Metal Solution hardware installed in a regional
+/// extension located near a Google Cloud data center.
+///
+/// For more information, see <https://cloud.google.com/bare-metal>
+///
+/// Create an instance of [BaremetalsolutionApi] to access these resources:
+///
+/// - [ProjectsResource]
+///   - [ProjectsLocationsResource]
+///     - [ProjectsLocationsInstancesResource]
+///     - [ProjectsLocationsNetworksResource]
+///     - [ProjectsLocationsNfsSharesResource]
+///     - [ProjectsLocationsProvisioningConfigsResource]
+///     - [ProjectsLocationsProvisioningQuotasResource]
+///     - [ProjectsLocationsSnapshotSchedulePoliciesResource]
+///     - [ProjectsLocationsVolumesResource]
+///       - [ProjectsLocationsVolumesLunsResource]
+///       - [ProjectsLocationsVolumesSnapshotsResource]
+library baremetalsolution.v2;
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+// ignore: deprecated_member_use_from_same_package
+import '../shared.dart';
+import '../src/user_agent.dart';
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+/// Provides ways to manage Bare Metal Solution hardware installed in a regional
+/// extension located near a Google Cloud data center.
+class BaremetalsolutionApi {
+  /// See, edit, configure, and delete your Google Cloud data and see the email
+  /// address for your Google Account.
+  static const cloudPlatformScope =
+      'https://www.googleapis.com/auth/cloud-platform';
+
+  final commons.ApiRequester _requester;
+
+  ProjectsResource get projects => ProjectsResource(_requester);
+
+  BaremetalsolutionApi(http.Client client,
+      {core.String rootUrl = 'https://baremetalsolution.googleapis.com/',
+      core.String servicePath = ''})
+      : _requester =
+            commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
+}
+
+class ProjectsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsResource get locations =>
+      ProjectsLocationsResource(_requester);
+
+  ProjectsResource(commons.ApiRequester client) : _requester = client;
+}
+
+class ProjectsLocationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsInstancesResource get instances =>
+      ProjectsLocationsInstancesResource(_requester);
+  ProjectsLocationsNetworksResource get networks =>
+      ProjectsLocationsNetworksResource(_requester);
+  ProjectsLocationsNfsSharesResource get nfsShares =>
+      ProjectsLocationsNfsSharesResource(_requester);
+  ProjectsLocationsProvisioningConfigsResource get provisioningConfigs =>
+      ProjectsLocationsProvisioningConfigsResource(_requester);
+  ProjectsLocationsProvisioningQuotasResource get provisioningQuotas =>
+      ProjectsLocationsProvisioningQuotasResource(_requester);
+  ProjectsLocationsSnapshotSchedulePoliciesResource
+      get snapshotSchedulePolicies =>
+          ProjectsLocationsSnapshotSchedulePoliciesResource(_requester);
+  ProjectsLocationsVolumesResource get volumes =>
+      ProjectsLocationsVolumesResource(_requester);
+
+  ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
+
+  /// Gets information about a location.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Resource name for the location.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Location].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Location> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Location.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists information about the supported locations for this service.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource that owns the locations collection, if applicable.
+  /// Value must have pattern `^projects/\[^/\]+$`.
+  ///
+  /// [filter] - A filter to narrow down results to a preferred subset. The
+  /// filtering language accepts strings like "displayName=tokyo", and is
+  /// documented in more detail in \[AIP-160\](https://google.aip.dev/160).
+  ///
+  /// [pageSize] - The maximum number of results to return. If not set, the
+  /// service selects a default.
+  ///
+  /// [pageToken] - A page token received from the `next_page_token` field in
+  /// the response. Send that page token to receive the subsequent page.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListLocationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListLocationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/locations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListLocationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsInstancesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsInstancesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Get details about a single server.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/instances/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Instance].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Instance> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Instance.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List servers in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. Parent value for ListInstancesRequest.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - List filter.
+  ///
+  /// [pageSize] - Requested page size. Server may return fewer items than
+  /// requested. If unspecified, the server will pick an appropriate default.
+  ///
+  /// [pageToken] - A token identifying a page of results from the server.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListInstancesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListInstancesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$parent') + '/instances';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListInstancesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Update details of a single server.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The resource name of this `Instance`. Resource names
+  /// are schemeless URIs that follow the conventions in
+  /// https://cloud.google.com/apis/design/resource_names. Format:
+  /// `projects/{project}/locations/{location}/instances/{instance}`
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/instances/\[^/\]+$`.
+  ///
+  /// [updateMask] - The list of fields to update. The only currently supported
+  /// fields are: `labels`
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    Instance request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Perform an ungraceful, hard reset on a server.
+  ///
+  /// Equivalent to shutting the power off and then turning it back on.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/instances/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> reset(
+    ResetInstanceRequest request,
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + ':reset';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Starts a server that was shutdown.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/instances/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> start(
+    StartInstanceRequest request,
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + ':start';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsNetworksResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsNetworksResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Get details of a single network.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/networks/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Network].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Network> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Network.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List network in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. Parent value for ListNetworksRequest.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - List filter.
+  ///
+  /// [pageSize] - Requested page size. The server might return fewer items than
+  /// requested. If unspecified, server will pick an appropriate default.
+  ///
+  /// [pageToken] - A token identifying a page of results from the server.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListNetworksResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListNetworksResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$parent') + '/networks';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListNetworksResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List all Networks (and used IPs for each Network) in the vendor account
+  /// associated with the specified project.
+  ///
+  /// Request parameters:
+  ///
+  /// [location] - Required. Parent value (project and location).
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListNetworkUsageResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListNetworkUsageResponse> listNetworkUsage(
+    core.String location, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v2/' + core.Uri.encodeFull('$location') + '/networks:listNetworkUsage';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListNetworkUsageResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Update details of a single network.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The resource name of this `Network`. Resource names
+  /// are schemeless URIs that follow the conventions in
+  /// https://cloud.google.com/apis/design/resource_names. Format:
+  /// `projects/{project}/locations/{location}/networks/{network}`
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/networks/\[^/\]+$`.
+  ///
+  /// [updateMask] - The list of fields to update. The only currently supported
+  /// fields are: `labels`
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    Network request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsNfsSharesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsNfsSharesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Get details of a single NFS share.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/nfsShares/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [NfsShare].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<NfsShare> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return NfsShare.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List NFS shares.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. Parent value for ListNfsSharesRequest.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - List filter.
+  ///
+  /// [pageSize] - Requested page size. The server might return fewer items than
+  /// requested. If unspecified, server will pick an appropriate default.
+  ///
+  /// [pageToken] - A token identifying a page of results from the server.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListNfsSharesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListNfsSharesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$parent') + '/nfsShares';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListNfsSharesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Update details of a single NFS share.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The name of the NFS share.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/nfsShares/\[^/\]+$`.
+  ///
+  /// [updateMask] - The list of fields to update. The only currently supported
+  /// fields are: `labels`
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    NfsShare request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsProvisioningConfigsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsProvisioningConfigsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Submit a provisiong configuration for a given project.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent project and location containing the
+  /// ProvisioningConfig.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [SubmitProvisioningConfigResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<SubmitProvisioningConfigResponse> submit(
+    SubmitProvisioningConfigRequest request,
+    core.String parent, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v2/' + core.Uri.encodeFull('$parent') + '/provisioningConfigs:submit';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return SubmitProvisioningConfigResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsProvisioningQuotasResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsProvisioningQuotasResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// List the budget details to provision resources on a given project.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. Parent value for ListProvisioningQuotasRequest.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [pageSize] - Requested page size. The server might return fewer items than
+  /// requested. If unspecified, server will pick an appropriate default. Notice
+  /// that page_size field is not supported and won't be respected in the API
+  /// request for now, will be updated when pagination is supported.
+  ///
+  /// [pageToken] - A token identifying a page of results from the server.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListProvisioningQuotasResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListProvisioningQuotasResponse> list(
+    core.String parent, {
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$parent') + '/provisioningQuotas';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListProvisioningQuotasResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsSnapshotSchedulePoliciesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsSnapshotSchedulePoliciesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Create a snapshot schedule policy in the specified project.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent project and location containing the
+  /// SnapshotSchedulePolicy.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [snapshotSchedulePolicyId] - Required. Snapshot policy ID
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [SnapshotSchedulePolicy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<SnapshotSchedulePolicy> create(
+    SnapshotSchedulePolicy request,
+    core.String parent, {
+    core.String? snapshotSchedulePolicyId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (snapshotSchedulePolicyId != null)
+        'snapshotSchedulePolicyId': [snapshotSchedulePolicyId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v2/' + core.Uri.encodeFull('$parent') + '/snapshotSchedulePolicies';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return SnapshotSchedulePolicy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Delete a named snapshot schedule policy.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the snapshot schedule policy to delete.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/snapshotSchedulePolicies/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get details of a single snapshot schedule policy.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/snapshotSchedulePolicies/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [SnapshotSchedulePolicy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<SnapshotSchedulePolicy> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return SnapshotSchedulePolicy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List snapshot schedule policies in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent project containing the Snapshot Schedule
+  /// Policies.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - List filter.
+  ///
+  /// [pageSize] - The maximum number of items to return.
+  ///
+  /// [pageToken] - The next_page_token value returned from a previous List
+  /// request, if any.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListSnapshotSchedulePoliciesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListSnapshotSchedulePoliciesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v2/' + core.Uri.encodeFull('$parent') + '/snapshotSchedulePolicies';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListSnapshotSchedulePoliciesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Update a snapshot schedule policy in the specified project.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The name of the snapshot schedule policy.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/snapshotSchedulePolicies/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. The list of fields to update.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [SnapshotSchedulePolicy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<SnapshotSchedulePolicy> patch(
+    SnapshotSchedulePolicy request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return SnapshotSchedulePolicy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsVolumesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsVolumesLunsResource get luns =>
+      ProjectsLocationsVolumesLunsResource(_requester);
+  ProjectsLocationsVolumesSnapshotsResource get snapshots =>
+      ProjectsLocationsVolumesSnapshotsResource(_requester);
+
+  ProjectsLocationsVolumesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Get details of a single storage volume.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/volumes/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Volume].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Volume> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Volume.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List storage volumes in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. Parent value for ListVolumesRequest.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - List filter.
+  ///
+  /// [pageSize] - Requested page size. The server might return fewer items than
+  /// requested. If unspecified, server will pick an appropriate default.
+  ///
+  /// [pageToken] - A token identifying a page of results from the server.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListVolumesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListVolumesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$parent') + '/volumes';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListVolumesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Update details of a single storage volume.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The resource name of this `Volume`. Resource names
+  /// are schemeless URIs that follow the conventions in
+  /// https://cloud.google.com/apis/design/resource_names. Format:
+  /// `projects/{project}/locations/{location}/volumes/{volume}`
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/volumes/\[^/\]+$`.
+  ///
+  /// [updateMask] - The list of fields to update. The only currently supported
+  /// fields are: `snapshot_auto_delete_behavior`
+  /// `snapshot_schedule_policy_name` 'labels' 'requested_size_gib'
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    Volume request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsVolumesLunsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsVolumesLunsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Get details of a single storage logical unit number(LUN).
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/volumes/\[^/\]+/luns/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Lun].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Lun> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Lun.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List storage volume luns for given storage volume.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. Parent value for ListLunsRequest.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/volumes/\[^/\]+$`.
+  ///
+  /// [pageSize] - Requested page size. The server might return fewer items than
+  /// requested. If unspecified, server will pick an appropriate default.
+  ///
+  /// [pageToken] - A token identifying a page of results from the server.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListLunsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListLunsResponse> list(
+    core.String parent, {
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$parent') + '/luns';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListLunsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsVolumesSnapshotsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsVolumesSnapshotsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Create a storage volume snapshot in a containing volume.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The volume to snapshot.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/volumes/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [VolumeSnapshot].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<VolumeSnapshot> create(
+    VolumeSnapshot request,
+    core.String parent, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$parent') + '/snapshots';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return VolumeSnapshot.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a storage volume snapshot for a given volume.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the snapshot to delete.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/volumes/\[^/\]+/snapshots/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get details of a single storage volume snapshot.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/volumes/\[^/\]+/snapshots/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [VolumeSnapshot].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<VolumeSnapshot> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return VolumeSnapshot.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List storage volume snapshots for given storage volume.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. Parent value for ListVolumesRequest.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/volumes/\[^/\]+$`.
+  ///
+  /// [pageSize] - Requested page size. The server might return fewer items than
+  /// requested. If unspecified, server will pick an appropriate default.
+  ///
+  /// [pageToken] - A token identifying a page of results from the server.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListVolumeSnapshotsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListVolumeSnapshotsResponse> list(
+    core.String parent, {
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$parent') + '/snapshots';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListVolumeSnapshotsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Restore a storage volume snapshot to its containing volume.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [volumeSnapshot] - Required. Name of the resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/volumes/\[^/\]+/snapshots/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> restoreVolumeSnapshot(
+    RestoreVolumeSnapshotRequest request,
+    core.String volumeSnapshot, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' +
+        core.Uri.encodeFull('$volumeSnapshot') +
+        ':restoreVolumeSnapshot';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+/// Represents an 'access point' for the share.
+class AllowedClient {
+  /// Allow dev flag.
+  ///
+  /// Which controls whether to allow creation of devices.
+  core.bool? allowDev;
+
+  /// Allow the setuid flag.
+  core.bool? allowSuid;
+
+  /// The subnet of IP addresses permitted to access the share.
+  core.String? allowedClientsCidr;
+
+  /// Mount permissions.
+  /// Possible string values are:
+  /// - "MOUNT_PERMISSIONS_UNSPECIFIED" : Permissions were not specified.
+  /// - "READ" : NFS share can be mount with read-only permissions.
+  /// - "READ_WRITE" : NFS share can be mount with read-write permissions.
+  core.String? mountPermissions;
+
+  /// The network the access point sits on.
+  core.String? network;
+
+  /// Disable root squashing, which is a feature of NFS.
+  ///
+  /// Root squash is a special mapping of the remote superuser (root) identity
+  /// when using identity authentication.
+  core.bool? noRootSquash;
+
+  /// The IP address of the share on this network.
+  core.String? shareIp;
+
+  AllowedClient({
+    this.allowDev,
+    this.allowSuid,
+    this.allowedClientsCidr,
+    this.mountPermissions,
+    this.network,
+    this.noRootSquash,
+    this.shareIp,
+  });
+
+  AllowedClient.fromJson(core.Map _json)
+      : this(
+          allowDev: _json.containsKey('allowDev')
+              ? _json['allowDev'] as core.bool
+              : null,
+          allowSuid: _json.containsKey('allowSuid')
+              ? _json['allowSuid'] as core.bool
+              : null,
+          allowedClientsCidr: _json.containsKey('allowedClientsCidr')
+              ? _json['allowedClientsCidr'] as core.String
+              : null,
+          mountPermissions: _json.containsKey('mountPermissions')
+              ? _json['mountPermissions'] as core.String
+              : null,
+          network: _json.containsKey('network')
+              ? _json['network'] as core.String
+              : null,
+          noRootSquash: _json.containsKey('noRootSquash')
+              ? _json['noRootSquash'] as core.bool
+              : null,
+          shareIp: _json.containsKey('shareIp')
+              ? _json['shareIp'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (allowDev != null) 'allowDev': allowDev!,
+        if (allowSuid != null) 'allowSuid': allowSuid!,
+        if (allowedClientsCidr != null)
+          'allowedClientsCidr': allowedClientsCidr!,
+        if (mountPermissions != null) 'mountPermissions': mountPermissions!,
+        if (network != null) 'network': network!,
+        if (noRootSquash != null) 'noRootSquash': noRootSquash!,
+        if (shareIp != null) 'shareIp': shareIp!,
+      };
+}
+
+/// 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 `{}`.
+typedef Empty = $Empty;
+
+/// A server.
+class Instance {
+  /// Create a time stamp.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// True if you enable hyperthreading for the server, otherwise false.
+  ///
+  /// The default value is false.
+  core.bool? hyperthreadingEnabled;
+
+  /// An identifier for the `Instance`, generated by the backend.
+  core.String? id;
+
+  /// True if the interactive serial console feature is enabled for the
+  /// instance, false otherwise.
+  ///
+  /// The default value is false.
+  core.bool? interactiveSerialConsoleEnabled;
+
+  /// Labels as key value pairs.
+  core.Map<core.String, core.String>? labels;
+
+  /// List of LUNs associated with this server.
+  core.List<Lun>? luns;
+
+  /// The server type.
+  ///
+  /// [Available server types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
+  core.String? machineType;
+
+  /// The resource name of this `Instance`.
+  ///
+  /// Resource names are schemeless URIs that follow the conventions in
+  /// https://cloud.google.com/apis/design/resource_names. Format:
+  /// `projects/{project}/locations/{location}/instances/{instance}`
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// List of networks associated with this server.
+  core.List<Network>? networks;
+
+  /// The state of the server.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The server is in an unknown state.
+  /// - "PROVISIONING" : The server is being provisioned.
+  /// - "RUNNING" : The server is running.
+  /// - "DELETED" : The server has been deleted.
+  core.String? state;
+
+  /// Update a time stamp.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  Instance({
+    this.createTime,
+    this.hyperthreadingEnabled,
+    this.id,
+    this.interactiveSerialConsoleEnabled,
+    this.labels,
+    this.luns,
+    this.machineType,
+    this.name,
+    this.networks,
+    this.state,
+    this.updateTime,
+  });
+
+  Instance.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          hyperthreadingEnabled: _json.containsKey('hyperthreadingEnabled')
+              ? _json['hyperthreadingEnabled'] as core.bool
+              : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          interactiveSerialConsoleEnabled:
+              _json.containsKey('interactiveSerialConsoleEnabled')
+                  ? _json['interactiveSerialConsoleEnabled'] as core.bool
+                  : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          luns: _json.containsKey('luns')
+              ? (_json['luns'] as core.List)
+                  .map((value) => Lun.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          machineType: _json.containsKey('machineType')
+              ? _json['machineType'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          networks: _json.containsKey('networks')
+              ? (_json['networks'] as core.List)
+                  .map((value) => Network.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (hyperthreadingEnabled != null)
+          'hyperthreadingEnabled': hyperthreadingEnabled!,
+        if (id != null) 'id': id!,
+        if (interactiveSerialConsoleEnabled != null)
+          'interactiveSerialConsoleEnabled': interactiveSerialConsoleEnabled!,
+        if (labels != null) 'labels': labels!,
+        if (luns != null) 'luns': luns!,
+        if (machineType != null) 'machineType': machineType!,
+        if (name != null) 'name': name!,
+        if (networks != null) 'networks': networks!,
+        if (state != null) 'state': state!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Configuration parameters for a new instance.
+class InstanceConfig {
+  /// Client network address.
+  NetworkAddress? clientNetwork;
+
+  /// Whether the instance should be provisioned with Hyperthreading enabled.
+  core.bool? hyperthreading;
+
+  /// A transient unique identifier to idenfity an instance within an
+  /// ProvisioningConfig request.
+  core.String? id;
+
+  /// Instance type.
+  ///
+  /// [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
+  core.String? instanceType;
+
+  /// The name of the instance config.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// OS image to initialize the instance.
+  ///
+  /// [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
+  core.String? osImage;
+
+  /// Private network address, if any.
+  NetworkAddress? privateNetwork;
+
+  /// User note field, it can be used by customers to add additional information
+  /// for the BMS Ops team .
+  core.String? userNote;
+
+  InstanceConfig({
+    this.clientNetwork,
+    this.hyperthreading,
+    this.id,
+    this.instanceType,
+    this.name,
+    this.osImage,
+    this.privateNetwork,
+    this.userNote,
+  });
+
+  InstanceConfig.fromJson(core.Map _json)
+      : this(
+          clientNetwork: _json.containsKey('clientNetwork')
+              ? NetworkAddress.fromJson(
+                  _json['clientNetwork'] as core.Map<core.String, core.dynamic>)
+              : null,
+          hyperthreading: _json.containsKey('hyperthreading')
+              ? _json['hyperthreading'] as core.bool
+              : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          instanceType: _json.containsKey('instanceType')
+              ? _json['instanceType'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          osImage: _json.containsKey('osImage')
+              ? _json['osImage'] as core.String
+              : null,
+          privateNetwork: _json.containsKey('privateNetwork')
+              ? NetworkAddress.fromJson(_json['privateNetwork']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          userNote: _json.containsKey('userNote')
+              ? _json['userNote'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (clientNetwork != null) 'clientNetwork': clientNetwork!,
+        if (hyperthreading != null) 'hyperthreading': hyperthreading!,
+        if (id != null) 'id': id!,
+        if (instanceType != null) 'instanceType': instanceType!,
+        if (name != null) 'name': name!,
+        if (osImage != null) 'osImage': osImage!,
+        if (privateNetwork != null) 'privateNetwork': privateNetwork!,
+        if (userNote != null) 'userNote': userNote!,
+      };
+}
+
+/// A resource budget.
+class InstanceQuota {
+  /// Number of machines than can be created for the given location and
+  /// instance_type.
+  core.int? availableMachineCount;
+
+  /// Instance type.
+  core.String? instanceType;
+
+  /// Location where the quota applies.
+  core.String? location;
+
+  /// The name of the instance quota.
+  ///
+  /// Output only.
+  core.String? name;
+
+  InstanceQuota({
+    this.availableMachineCount,
+    this.instanceType,
+    this.location,
+    this.name,
+  });
+
+  InstanceQuota.fromJson(core.Map _json)
+      : this(
+          availableMachineCount: _json.containsKey('availableMachineCount')
+              ? _json['availableMachineCount'] as core.int
+              : null,
+          instanceType: _json.containsKey('instanceType')
+              ? _json['instanceType'] as core.String
+              : null,
+          location: _json.containsKey('location')
+              ? _json['location'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (availableMachineCount != null)
+          'availableMachineCount': availableMachineCount!,
+        if (instanceType != null) 'instanceType': instanceType!,
+        if (location != null) 'location': location!,
+        if (name != null) 'name': name!,
+      };
+}
+
+/// A GCP vlan attachment.
+class IntakeVlanAttachment {
+  /// Identifier of the VLAN attachment.
+  core.String? id;
+
+  /// Attachment pairing key.
+  core.String? pairingKey;
+
+  IntakeVlanAttachment({
+    this.id,
+    this.pairingKey,
+  });
+
+  IntakeVlanAttachment.fromJson(core.Map _json)
+      : this(
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          pairingKey: _json.containsKey('pairingKey')
+              ? _json['pairingKey'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (id != null) 'id': id!,
+        if (pairingKey != null) 'pairingKey': pairingKey!,
+      };
+}
+
+/// Response message for the list of servers.
+class ListInstancesResponse {
+  /// The list of servers.
+  core.List<Instance>? instances;
+
+  /// A token identifying a page of results from the server.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListInstancesResponse({
+    this.instances,
+    this.nextPageToken,
+    this.unreachable,
+  });
+
+  ListInstancesResponse.fromJson(core.Map _json)
+      : this(
+          instances: _json.containsKey('instances')
+              ? (_json['instances'] as core.List)
+                  .map((value) => Instance.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (instances != null) 'instances': instances!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// The response message for Locations.ListLocations.
+class ListLocationsResponse {
+  /// A list of locations that matches the specified filter in the request.
+  core.List<Location>? locations;
+
+  /// The standard List next-page token.
+  core.String? nextPageToken;
+
+  ListLocationsResponse({
+    this.locations,
+    this.nextPageToken,
+  });
+
+  ListLocationsResponse.fromJson(core.Map _json)
+      : this(
+          locations: _json.containsKey('locations')
+              ? (_json['locations'] as core.List)
+                  .map((value) => Location.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (locations != null) 'locations': locations!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// Response message containing the list of storage volume luns.
+class ListLunsResponse {
+  /// The list of luns.
+  core.List<Lun>? luns;
+
+  /// A token identifying a page of results from the server.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListLunsResponse({
+    this.luns,
+    this.nextPageToken,
+    this.unreachable,
+  });
+
+  ListLunsResponse.fromJson(core.Map _json)
+      : this(
+          luns: _json.containsKey('luns')
+              ? (_json['luns'] as core.List)
+                  .map((value) => Lun.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (luns != null) 'luns': luns!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// Response with Networks with IPs
+class ListNetworkUsageResponse {
+  /// Networks with IPs.
+  core.List<NetworkUsage>? networks;
+
+  ListNetworkUsageResponse({
+    this.networks,
+  });
+
+  ListNetworkUsageResponse.fromJson(core.Map _json)
+      : this(
+          networks: _json.containsKey('networks')
+              ? (_json['networks'] as core.List)
+                  .map((value) => NetworkUsage.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (networks != null) 'networks': networks!,
+      };
+}
+
+/// Response message containing the list of networks.
+class ListNetworksResponse {
+  /// The list of networks.
+  core.List<Network>? networks;
+
+  /// A token identifying a page of results from the server.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListNetworksResponse({
+    this.networks,
+    this.nextPageToken,
+    this.unreachable,
+  });
+
+  ListNetworksResponse.fromJson(core.Map _json)
+      : this(
+          networks: _json.containsKey('networks')
+              ? (_json['networks'] as core.List)
+                  .map((value) => Network.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (networks != null) 'networks': networks!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// Response message containing the list of NFS shares.
+class ListNfsSharesResponse {
+  /// A token identifying a page of results from the server.
+  core.String? nextPageToken;
+
+  /// The list of NFS shares.
+  core.List<NfsShare>? nfsShares;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListNfsSharesResponse({
+    this.nextPageToken,
+    this.nfsShares,
+    this.unreachable,
+  });
+
+  ListNfsSharesResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          nfsShares: _json.containsKey('nfsShares')
+              ? (_json['nfsShares'] as core.List)
+                  .map((value) => NfsShare.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (nfsShares != null) 'nfsShares': nfsShares!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// Response message for the list of provisioning quotas.
+class ListProvisioningQuotasResponse {
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  /// The provisioning quotas registered in this project.
+  core.List<ProvisioningQuota>? provisioningQuotas;
+
+  ListProvisioningQuotasResponse({
+    this.nextPageToken,
+    this.provisioningQuotas,
+  });
+
+  ListProvisioningQuotasResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          provisioningQuotas: _json.containsKey('provisioningQuotas')
+              ? (_json['provisioningQuotas'] as core.List)
+                  .map((value) => ProvisioningQuota.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (provisioningQuotas != null)
+          'provisioningQuotas': provisioningQuotas!,
+      };
+}
+
+/// Response message containing the list of snapshot schedule policies.
+class ListSnapshotSchedulePoliciesResponse {
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  /// The snapshot schedule policies registered in this project.
+  core.List<SnapshotSchedulePolicy>? snapshotSchedulePolicies;
+
+  ListSnapshotSchedulePoliciesResponse({
+    this.nextPageToken,
+    this.snapshotSchedulePolicies,
+  });
+
+  ListSnapshotSchedulePoliciesResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          snapshotSchedulePolicies:
+              _json.containsKey('snapshotSchedulePolicies')
+                  ? (_json['snapshotSchedulePolicies'] as core.List)
+                      .map((value) => SnapshotSchedulePolicy.fromJson(
+                          value as core.Map<core.String, core.dynamic>))
+                      .toList()
+                  : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (snapshotSchedulePolicies != null)
+          'snapshotSchedulePolicies': snapshotSchedulePolicies!,
+      };
+}
+
+/// Response message containing the list of storage volume snapshots.
+class ListVolumeSnapshotsResponse {
+  /// A token identifying a page of results from the server.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  /// The list of storage volumes.
+  core.List<VolumeSnapshot>? volumeSnapshots;
+
+  ListVolumeSnapshotsResponse({
+    this.nextPageToken,
+    this.unreachable,
+    this.volumeSnapshots,
+  });
+
+  ListVolumeSnapshotsResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          volumeSnapshots: _json.containsKey('volumeSnapshots')
+              ? (_json['volumeSnapshots'] as core.List)
+                  .map((value) => VolumeSnapshot.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+        if (volumeSnapshots != null) 'volumeSnapshots': volumeSnapshots!,
+      };
+}
+
+/// Response message containing the list of storage volumes.
+class ListVolumesResponse {
+  /// A token identifying a page of results from the server.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  /// The list of storage volumes.
+  core.List<Volume>? volumes;
+
+  ListVolumesResponse({
+    this.nextPageToken,
+    this.unreachable,
+    this.volumes,
+  });
+
+  ListVolumesResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          volumes: _json.containsKey('volumes')
+              ? (_json['volumes'] as core.List)
+                  .map((value) => Volume.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+        if (volumes != null) 'volumes': volumes!,
+      };
+}
+
+/// A resource that represents Google Cloud Platform location.
+typedef Location = $Location00;
+
+/// A storage volume logical unit number (LUN).
+class Lun {
+  /// Display if this LUN is a boot LUN.
+  core.bool? bootLun;
+
+  /// An identifier for the LUN, generated by the backend.
+  core.String? id;
+
+  /// The LUN multiprotocol type ensures the characteristics of the LUN are
+  /// optimized for each operating system.
+  /// Possible string values are:
+  /// - "MULTIPROTOCOL_TYPE_UNSPECIFIED" : Server has no OS specified.
+  /// - "LINUX" : Server with Linux OS.
+  core.String? multiprotocolType;
+
+  /// The name of the LUN.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Display if this LUN can be shared between multiple physical servers.
+  core.bool? shareable;
+
+  /// The size of this LUN, in gigabytes.
+  core.String? sizeGb;
+
+  /// The state of this storage volume.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The LUN is in an unknown state.
+  /// - "CREATING" : The LUN is being created.
+  /// - "UPDATING" : The LUN is being updated.
+  /// - "READY" : The LUN is ready for use.
+  /// - "DELETING" : The LUN has been requested to be deleted.
+  core.String? state;
+
+  /// The storage type for this LUN.
+  /// Possible string values are:
+  /// - "STORAGE_TYPE_UNSPECIFIED" : The storage type for this LUN is unknown.
+  /// - "SSD" : This storage type for this LUN is SSD.
+  /// - "HDD" : This storage type for this LUN is HDD.
+  core.String? storageType;
+
+  /// Display the storage volume for this LUN.
+  core.String? storageVolume;
+
+  /// The WWID for this LUN.
+  core.String? wwid;
+
+  Lun({
+    this.bootLun,
+    this.id,
+    this.multiprotocolType,
+    this.name,
+    this.shareable,
+    this.sizeGb,
+    this.state,
+    this.storageType,
+    this.storageVolume,
+    this.wwid,
+  });
+
+  Lun.fromJson(core.Map _json)
+      : this(
+          bootLun: _json.containsKey('bootLun')
+              ? _json['bootLun'] as core.bool
+              : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          multiprotocolType: _json.containsKey('multiprotocolType')
+              ? _json['multiprotocolType'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          shareable: _json.containsKey('shareable')
+              ? _json['shareable'] as core.bool
+              : null,
+          sizeGb: _json.containsKey('sizeGb')
+              ? _json['sizeGb'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          storageType: _json.containsKey('storageType')
+              ? _json['storageType'] as core.String
+              : null,
+          storageVolume: _json.containsKey('storageVolume')
+              ? _json['storageVolume'] as core.String
+              : null,
+          wwid: _json.containsKey('wwid') ? _json['wwid'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (bootLun != null) 'bootLun': bootLun!,
+        if (id != null) 'id': id!,
+        if (multiprotocolType != null) 'multiprotocolType': multiprotocolType!,
+        if (name != null) 'name': name!,
+        if (shareable != null) 'shareable': shareable!,
+        if (sizeGb != null) 'sizeGb': sizeGb!,
+        if (state != null) 'state': state!,
+        if (storageType != null) 'storageType': storageType!,
+        if (storageVolume != null) 'storageVolume': storageVolume!,
+        if (wwid != null) 'wwid': wwid!,
+      };
+}
+
+/// A LUN(Logical Unit Number) range.
+class LunRange {
+  /// Number of LUNs to create.
+  core.int? quantity;
+
+  /// The requested size of each LUN, in GB.
+  core.int? sizeGb;
+
+  LunRange({
+    this.quantity,
+    this.sizeGb,
+  });
+
+  LunRange.fromJson(core.Map _json)
+      : this(
+          quantity: _json.containsKey('quantity')
+              ? _json['quantity'] as core.int
+              : null,
+          sizeGb:
+              _json.containsKey('sizeGb') ? _json['sizeGb'] as core.int : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (quantity != null) 'quantity': quantity!,
+        if (sizeGb != null) 'sizeGb': sizeGb!,
+      };
+}
+
+/// A Network.
+class Network {
+  /// The cidr of the Network.
+  core.String? cidr;
+
+  /// An identifier for the `Network`, generated by the backend.
+  core.String? id;
+
+  /// IP address configured.
+  core.String? ipAddress;
+
+  /// Labels as key value pairs.
+  core.Map<core.String, core.String>? labels;
+
+  /// List of physical interfaces.
+  core.List<core.String>? macAddress;
+
+  /// The resource name of this `Network`.
+  ///
+  /// Resource names are schemeless URIs that follow the conventions in
+  /// https://cloud.google.com/apis/design/resource_names. Format:
+  /// `projects/{project}/locations/{location}/networks/{network}`
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// IP range for reserved for services (e.g. NFS).
+  core.String? servicesCidr;
+
+  /// The Network state.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The Network is in an unknown state.
+  /// - "PROVISIONING" : The Network is provisioning.
+  /// - "PROVISIONED" : The Network has been provisioned.
+  core.String? state;
+
+  /// The type of this network.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : Unspecified value.
+  /// - "CLIENT" : Client network, a network peered to a Google Cloud VPC.
+  /// - "PRIVATE" : Private network, a network local to the Bare Metal Solution
+  /// environment.
+  core.String? type;
+
+  /// The vlan id of the Network.
+  core.String? vlanId;
+
+  /// The vrf for the Network.
+  VRF? vrf;
+
+  Network({
+    this.cidr,
+    this.id,
+    this.ipAddress,
+    this.labels,
+    this.macAddress,
+    this.name,
+    this.servicesCidr,
+    this.state,
+    this.type,
+    this.vlanId,
+    this.vrf,
+  });
+
+  Network.fromJson(core.Map _json)
+      : this(
+          cidr: _json.containsKey('cidr') ? _json['cidr'] as core.String : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          ipAddress: _json.containsKey('ipAddress')
+              ? _json['ipAddress'] as core.String
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          macAddress: _json.containsKey('macAddress')
+              ? (_json['macAddress'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          servicesCidr: _json.containsKey('servicesCidr')
+              ? _json['servicesCidr'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+          vlanId: _json.containsKey('vlanId')
+              ? _json['vlanId'] as core.String
+              : null,
+          vrf: _json.containsKey('vrf')
+              ? VRF
+                  .fromJson(_json['vrf'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (cidr != null) 'cidr': cidr!,
+        if (id != null) 'id': id!,
+        if (ipAddress != null) 'ipAddress': ipAddress!,
+        if (labels != null) 'labels': labels!,
+        if (macAddress != null) 'macAddress': macAddress!,
+        if (name != null) 'name': name!,
+        if (servicesCidr != null) 'servicesCidr': servicesCidr!,
+        if (state != null) 'state': state!,
+        if (type != null) 'type': type!,
+        if (vlanId != null) 'vlanId': vlanId!,
+        if (vrf != null) 'vrf': vrf!,
+      };
+}
+
+/// A network.
+class NetworkAddress {
+  /// IPv4 address to be assigned to the server.
+  core.String? address;
+
+  /// Name of the existing network to use.
+  core.String? existingNetworkId;
+
+  /// Id of the network to use, within the same ProvisioningConfig request.
+  core.String? networkId;
+
+  NetworkAddress({
+    this.address,
+    this.existingNetworkId,
+    this.networkId,
+  });
+
+  NetworkAddress.fromJson(core.Map _json)
+      : this(
+          address: _json.containsKey('address')
+              ? _json['address'] as core.String
+              : null,
+          existingNetworkId: _json.containsKey('existingNetworkId')
+              ? _json['existingNetworkId'] as core.String
+              : null,
+          networkId: _json.containsKey('networkId')
+              ? _json['networkId'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (address != null) 'address': address!,
+        if (existingNetworkId != null) 'existingNetworkId': existingNetworkId!,
+        if (networkId != null) 'networkId': networkId!,
+      };
+}
+
+/// Configuration parameters for a new network.
+class NetworkConfig {
+  /// Interconnect bandwidth.
+  ///
+  /// Set only when type is CLIENT.
+  /// Possible string values are:
+  /// - "BANDWIDTH_UNSPECIFIED" : Unspecified value.
+  /// - "BW_1_GBPS" : 1 Gbps.
+  /// - "BW_2_GBPS" : 2 Gbps.
+  /// - "BW_5_GBPS" : 5 Gbps.
+  /// - "BW_10_GBPS" : 10 Gbps.
+  core.String? bandwidth;
+
+  /// CIDR range of the network.
+  core.String? cidr;
+
+  /// A transient unique identifier to identify a volume within an
+  /// ProvisioningConfig request.
+  core.String? id;
+
+  /// The name of the network config.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Service CIDR, if any.
+  /// Possible string values are:
+  /// - "SERVICE_CIDR_UNSPECIFIED" : Unspecified value.
+  /// - "DISABLED" : Services are disabled for the given network.
+  /// - "HIGH_26" : Use the highest /26 block of the network to host services.
+  /// - "HIGH_27" : Use the highest /27 block of the network to host services.
+  /// - "HIGH_28" : Use the highest /28 block of the network to host services.
+  core.String? serviceCidr;
+
+  /// The type of this network, either Client or Private.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : Unspecified value.
+  /// - "CLIENT" : Client network, that is a network peered to a GCP VPC.
+  /// - "PRIVATE" : Private network, that is a network local to the BMS POD.
+  core.String? type;
+
+  /// User note field, it can be used by customers to add additional information
+  /// for the BMS Ops team (b/194021617).
+  core.String? userNote;
+
+  /// List of VLAN attachments.
+  ///
+  /// As of now there are always 2 attachments, but it is going to change in the
+  /// future (multi vlan).
+  core.List<IntakeVlanAttachment>? vlanAttachments;
+
+  NetworkConfig({
+    this.bandwidth,
+    this.cidr,
+    this.id,
+    this.name,
+    this.serviceCidr,
+    this.type,
+    this.userNote,
+    this.vlanAttachments,
+  });
+
+  NetworkConfig.fromJson(core.Map _json)
+      : this(
+          bandwidth: _json.containsKey('bandwidth')
+              ? _json['bandwidth'] as core.String
+              : null,
+          cidr: _json.containsKey('cidr') ? _json['cidr'] as core.String : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          serviceCidr: _json.containsKey('serviceCidr')
+              ? _json['serviceCidr'] as core.String
+              : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+          userNote: _json.containsKey('userNote')
+              ? _json['userNote'] as core.String
+              : null,
+          vlanAttachments: _json.containsKey('vlanAttachments')
+              ? (_json['vlanAttachments'] as core.List)
+                  .map((value) => IntakeVlanAttachment.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (bandwidth != null) 'bandwidth': bandwidth!,
+        if (cidr != null) 'cidr': cidr!,
+        if (id != null) 'id': id!,
+        if (name != null) 'name': name!,
+        if (serviceCidr != null) 'serviceCidr': serviceCidr!,
+        if (type != null) 'type': type!,
+        if (userNote != null) 'userNote': userNote!,
+        if (vlanAttachments != null) 'vlanAttachments': vlanAttachments!,
+      };
+}
+
+/// Network with all used IP addresses.
+class NetworkUsage {
+  /// Network.
+  Network? network;
+
+  /// All used IP addresses in this network.
+  core.List<core.String>? usedIps;
+
+  NetworkUsage({
+    this.network,
+    this.usedIps,
+  });
+
+  NetworkUsage.fromJson(core.Map _json)
+      : this(
+          network: _json.containsKey('network')
+              ? Network.fromJson(
+                  _json['network'] as core.Map<core.String, core.dynamic>)
+              : null,
+          usedIps: _json.containsKey('usedIps')
+              ? (_json['usedIps'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (network != null) 'network': network!,
+        if (usedIps != null) 'usedIps': usedIps!,
+      };
+}
+
+/// A NFS export entry.
+class NfsExport {
+  /// Allow dev flag in NfsShare AllowedClientsRequest.
+  core.bool? allowDev;
+
+  /// Allow the setuid flag.
+  core.bool? allowSuid;
+
+  /// A CIDR range.
+  core.String? cidr;
+
+  /// Either a single machine, identified by an ID, or a comma-separated list of
+  /// machine IDs.
+  core.String? machineId;
+
+  /// Network to use to publish the export.
+  core.String? networkId;
+
+  /// Disable root squashing, which is a feature of NFS.
+  ///
+  /// Root squash is a special mapping of the remote superuser (root) identity
+  /// when using identity authentication.
+  core.bool? noRootSquash;
+
+  /// Export permissions.
+  /// Possible string values are:
+  /// - "PERMISSIONS_UNSPECIFIED" : Unspecified value.
+  /// - "READ_ONLY" : Read-only permission.
+  /// - "READ_WRITE" : Read-write permission.
+  core.String? permissions;
+
+  NfsExport({
+    this.allowDev,
+    this.allowSuid,
+    this.cidr,
+    this.machineId,
+    this.networkId,
+    this.noRootSquash,
+    this.permissions,
+  });
+
+  NfsExport.fromJson(core.Map _json)
+      : this(
+          allowDev: _json.containsKey('allowDev')
+              ? _json['allowDev'] as core.bool
+              : null,
+          allowSuid: _json.containsKey('allowSuid')
+              ? _json['allowSuid'] as core.bool
+              : null,
+          cidr: _json.containsKey('cidr') ? _json['cidr'] as core.String : null,
+          machineId: _json.containsKey('machineId')
+              ? _json['machineId'] as core.String
+              : null,
+          networkId: _json.containsKey('networkId')
+              ? _json['networkId'] as core.String
+              : null,
+          noRootSquash: _json.containsKey('noRootSquash')
+              ? _json['noRootSquash'] as core.bool
+              : null,
+          permissions: _json.containsKey('permissions')
+              ? _json['permissions'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (allowDev != null) 'allowDev': allowDev!,
+        if (allowSuid != null) 'allowSuid': allowSuid!,
+        if (cidr != null) 'cidr': cidr!,
+        if (machineId != null) 'machineId': machineId!,
+        if (networkId != null) 'networkId': networkId!,
+        if (noRootSquash != null) 'noRootSquash': noRootSquash!,
+        if (permissions != null) 'permissions': permissions!,
+      };
+}
+
+/// An NFS share.
+class NfsShare {
+  /// List of allowed access points.
+  core.List<AllowedClient>? allowedClients;
+
+  /// Labels as key value pairs.
+  core.Map<core.String, core.String>? labels;
+
+  /// The name of the NFS share.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// An identifier for the NFS share, generated by the backend.
+  ///
+  /// Output only.
+  core.String? nfsShareId;
+
+  /// The state of the NFS share.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The share is in an unknown state.
+  /// - "PROVISIONED" : The share has been provisioned.
+  core.String? state;
+
+  /// The volume containing the share.
+  core.String? volume;
+
+  NfsShare({
+    this.allowedClients,
+    this.labels,
+    this.name,
+    this.nfsShareId,
+    this.state,
+    this.volume,
+  });
+
+  NfsShare.fromJson(core.Map _json)
+      : this(
+          allowedClients: _json.containsKey('allowedClients')
+              ? (_json['allowedClients'] as core.List)
+                  .map((value) => AllowedClient.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          nfsShareId: _json.containsKey('nfsShareId')
+              ? _json['nfsShareId'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          volume: _json.containsKey('volume')
+              ? _json['volume'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (allowedClients != null) 'allowedClients': allowedClients!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (nfsShareId != null) 'nfsShareId': nfsShareId!,
+        if (state != null) 'state': state!,
+        if (volume != null) 'volume': volume!,
+      };
+}
+
+/// This resource represents a long-running operation that is the result of a
+/// network API call.
+class Operation {
+  /// 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.
+  core.bool? done;
+
+  /// The error result of the operation in case of failure or cancellation.
+  Status? error;
+
+  /// 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.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? metadata;
+
+  /// 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}`.
+  core.String? name;
+
+  /// 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`.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? response;
+
+  Operation({
+    this.done,
+    this.error,
+    this.metadata,
+    this.name,
+    this.response,
+  });
+
+  Operation.fromJson(core.Map _json)
+      : this(
+          done: _json.containsKey('done') ? _json['done'] as core.bool : null,
+          error: _json.containsKey('error')
+              ? Status.fromJson(
+                  _json['error'] as core.Map<core.String, core.dynamic>)
+              : null,
+          metadata: _json.containsKey('metadata')
+              ? _json['metadata'] as core.Map<core.String, core.dynamic>
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          response: _json.containsKey('response')
+              ? _json['response'] as core.Map<core.String, core.dynamic>
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (done != null) 'done': done!,
+        if (error != null) 'error': error!,
+        if (metadata != null) 'metadata': metadata!,
+        if (name != null) 'name': name!,
+        if (response != null) 'response': response!,
+      };
+}
+
+/// A provisioning configuration.
+class ProvisioningConfig {
+  /// A service account to enable customers to access instance credentials upon
+  /// handover.
+  core.String? handoverServiceAccount;
+
+  /// Instances to be created.
+  core.List<InstanceConfig>? instances;
+
+  /// The name of the provisioning config.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Networks to be created.
+  core.List<NetworkConfig>? networks;
+
+  /// A generated buganizer id to track provisioning request.
+  core.String? ticketId;
+
+  /// Volumes to be created.
+  core.List<VolumeConfig>? volumes;
+
+  ProvisioningConfig({
+    this.handoverServiceAccount,
+    this.instances,
+    this.name,
+    this.networks,
+    this.ticketId,
+    this.volumes,
+  });
+
+  ProvisioningConfig.fromJson(core.Map _json)
+      : this(
+          handoverServiceAccount: _json.containsKey('handoverServiceAccount')
+              ? _json['handoverServiceAccount'] as core.String
+              : null,
+          instances: _json.containsKey('instances')
+              ? (_json['instances'] as core.List)
+                  .map((value) => InstanceConfig.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          networks: _json.containsKey('networks')
+              ? (_json['networks'] as core.List)
+                  .map((value) => NetworkConfig.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          ticketId: _json.containsKey('ticketId')
+              ? _json['ticketId'] as core.String
+              : null,
+          volumes: _json.containsKey('volumes')
+              ? (_json['volumes'] as core.List)
+                  .map((value) => VolumeConfig.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (handoverServiceAccount != null)
+          'handoverServiceAccount': handoverServiceAccount!,
+        if (instances != null) 'instances': instances!,
+        if (name != null) 'name': name!,
+        if (networks != null) 'networks': networks!,
+        if (ticketId != null) 'ticketId': ticketId!,
+        if (volumes != null) 'volumes': volumes!,
+      };
+}
+
+/// A provisioning quota for a given project.
+class ProvisioningQuota {
+  /// The asset type of this provisioning quota.
+  /// Possible string values are:
+  /// - "ASSET_TYPE_UNSPECIFIED" : The unspecified type.
+  /// - "ASSET_TYPE_SERVER" : The server asset type.
+  /// - "ASSET_TYPE_STORAGE" : The storage asset type.
+  /// - "ASSET_TYPE_NETWORK" : The network asset type.
+  core.String? assetType;
+
+  /// The available count of the provisioning quota.
+  core.int? availableCount;
+
+  /// The gcp service of the provisioning quota.
+  core.String? gcpService;
+
+  /// Instance quota.
+  InstanceQuota? instanceQuota;
+
+  /// The specific location of the provisioining quota.
+  core.String? location;
+
+  /// The name of the provisioning quota.
+  ///
+  /// Output only.
+  core.String? name;
+
+  ProvisioningQuota({
+    this.assetType,
+    this.availableCount,
+    this.gcpService,
+    this.instanceQuota,
+    this.location,
+    this.name,
+  });
+
+  ProvisioningQuota.fromJson(core.Map _json)
+      : this(
+          assetType: _json.containsKey('assetType')
+              ? _json['assetType'] as core.String
+              : null,
+          availableCount: _json.containsKey('availableCount')
+              ? _json['availableCount'] as core.int
+              : null,
+          gcpService: _json.containsKey('gcpService')
+              ? _json['gcpService'] as core.String
+              : null,
+          instanceQuota: _json.containsKey('instanceQuota')
+              ? InstanceQuota.fromJson(
+                  _json['instanceQuota'] as core.Map<core.String, core.dynamic>)
+              : null,
+          location: _json.containsKey('location')
+              ? _json['location'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (assetType != null) 'assetType': assetType!,
+        if (availableCount != null) 'availableCount': availableCount!,
+        if (gcpService != null) 'gcpService': gcpService!,
+        if (instanceQuota != null) 'instanceQuota': instanceQuota!,
+        if (location != null) 'location': location!,
+        if (name != null) 'name': name!,
+      };
+}
+
+/// QOS policy parameters.
+class QosPolicy {
+  /// The bandwidth permitted by the QOS policy, in gbps.
+  core.double? bandwidthGbps;
+
+  QosPolicy({
+    this.bandwidthGbps,
+  });
+
+  QosPolicy.fromJson(core.Map _json)
+      : this(
+          bandwidthGbps: _json.containsKey('bandwidthGbps')
+              ? (_json['bandwidthGbps'] as core.num).toDouble()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (bandwidthGbps != null) 'bandwidthGbps': bandwidthGbps!,
+      };
+}
+
+/// Message requesting to reset a server.
+typedef ResetInstanceRequest = $Empty;
+
+/// Message for restoring a volume snapshot.
+typedef RestoreVolumeSnapshotRequest = $Empty;
+
+/// A snapshot schedule.
+class Schedule {
+  /// A crontab-like specification that the schedule uses to take snapshots.
+  core.String? crontabSpec;
+
+  /// A list of snapshot names created in this schedule.
+  core.String? prefix;
+
+  /// The maximum number of snapshots to retain in this schedule.
+  core.int? retentionCount;
+
+  Schedule({
+    this.crontabSpec,
+    this.prefix,
+    this.retentionCount,
+  });
+
+  Schedule.fromJson(core.Map _json)
+      : this(
+          crontabSpec: _json.containsKey('crontabSpec')
+              ? _json['crontabSpec'] as core.String
+              : null,
+          prefix: _json.containsKey('prefix')
+              ? _json['prefix'] as core.String
+              : null,
+          retentionCount: _json.containsKey('retentionCount')
+              ? _json['retentionCount'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (crontabSpec != null) 'crontabSpec': crontabSpec!,
+        if (prefix != null) 'prefix': prefix!,
+        if (retentionCount != null) 'retentionCount': retentionCount!,
+      };
+}
+
+/// Details about snapshot space reservation and usage on the storage volume.
+class SnapshotReservationDetail {
+  /// The space on this storage volume reserved for snapshots, shown in GiB.
+  core.String? reservedSpaceGib;
+
+  /// The amount, in GiB, of available space in this storage volume's reserved
+  /// snapshot space.
+  core.String? reservedSpaceRemainingGib;
+
+  /// The percent of snapshot space on this storage volume actually being used
+  /// by the snapshot copies.
+  ///
+  /// This value might be higher than 100% if the snapshot copies have
+  /// overflowed into the data portion of the storage volume.
+  core.int? reservedSpaceUsedPercent;
+
+  SnapshotReservationDetail({
+    this.reservedSpaceGib,
+    this.reservedSpaceRemainingGib,
+    this.reservedSpaceUsedPercent,
+  });
+
+  SnapshotReservationDetail.fromJson(core.Map _json)
+      : this(
+          reservedSpaceGib: _json.containsKey('reservedSpaceGib')
+              ? _json['reservedSpaceGib'] as core.String
+              : null,
+          reservedSpaceRemainingGib:
+              _json.containsKey('reservedSpaceRemainingGib')
+                  ? _json['reservedSpaceRemainingGib'] as core.String
+                  : null,
+          reservedSpaceUsedPercent:
+              _json.containsKey('reservedSpaceUsedPercent')
+                  ? _json['reservedSpaceUsedPercent'] as core.int
+                  : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (reservedSpaceGib != null) 'reservedSpaceGib': reservedSpaceGib!,
+        if (reservedSpaceRemainingGib != null)
+          'reservedSpaceRemainingGib': reservedSpaceRemainingGib!,
+        if (reservedSpaceUsedPercent != null)
+          'reservedSpaceUsedPercent': reservedSpaceUsedPercent!,
+      };
+}
+
+/// A snapshot schedule policy.
+class SnapshotSchedulePolicy {
+  /// The description of the snapshot schedule policy.
+  core.String? description;
+
+  /// An identifier for the snapshot schedule policy, generated by the backend.
+  core.String? id;
+
+  /// Labels as key value pairs.
+  core.Map<core.String, core.String>? labels;
+
+  /// The name of the snapshot schedule policy.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// The snapshot schedules contained in this policy.
+  ///
+  /// You can specify a maximum of 5 schedules.
+  core.List<Schedule>? schedules;
+
+  /// The state of the snapshot schedule policy.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The policy is in an unknown state.
+  /// - "PROVISIONED" : The policy is been provisioned.
+  core.String? state;
+
+  SnapshotSchedulePolicy({
+    this.description,
+    this.id,
+    this.labels,
+    this.name,
+    this.schedules,
+    this.state,
+  });
+
+  SnapshotSchedulePolicy.fromJson(core.Map _json)
+      : this(
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          schedules: _json.containsKey('schedules')
+              ? (_json['schedules'] as core.List)
+                  .map((value) => Schedule.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (description != null) 'description': description!,
+        if (id != null) 'id': id!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (schedules != null) 'schedules': schedules!,
+        if (state != null) 'state': state!,
+      };
+}
+
+/// Message requesting to start a server.
+typedef StartInstanceRequest = $Empty;
+
+/// 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).
+typedef Status = $Status;
+
+/// Request for SubmitProvisioningConfig.
+class SubmitProvisioningConfigRequest {
+  /// Email provided to send a confirmation with provisioning config to.
+  ///
+  /// Optional.
+  core.String? email;
+
+  /// The ProvisioningConfig to create.
+  ///
+  /// Required.
+  ProvisioningConfig? provisioningConfig;
+
+  SubmitProvisioningConfigRequest({
+    this.email,
+    this.provisioningConfig,
+  });
+
+  SubmitProvisioningConfigRequest.fromJson(core.Map _json)
+      : this(
+          email:
+              _json.containsKey('email') ? _json['email'] as core.String : null,
+          provisioningConfig: _json.containsKey('provisioningConfig')
+              ? ProvisioningConfig.fromJson(_json['provisioningConfig']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (email != null) 'email': email!,
+        if (provisioningConfig != null)
+          'provisioningConfig': provisioningConfig!,
+      };
+}
+
+/// Response for SubmitProvisioningConfig.
+class SubmitProvisioningConfigResponse {
+  /// The submitted provisioning config.
+  ProvisioningConfig? provisioningConfig;
+
+  SubmitProvisioningConfigResponse({
+    this.provisioningConfig,
+  });
+
+  SubmitProvisioningConfigResponse.fromJson(core.Map _json)
+      : this(
+          provisioningConfig: _json.containsKey('provisioningConfig')
+              ? ProvisioningConfig.fromJson(_json['provisioningConfig']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (provisioningConfig != null)
+          'provisioningConfig': provisioningConfig!,
+      };
+}
+
+/// A network VRF.
+class VRF {
+  /// The name of the VRF.
+  core.String? name;
+
+  /// The QOS policy applied to this VRF.
+  QosPolicy? qosPolicy;
+
+  /// The possible state of VRF.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The unspecified state.
+  /// - "PROVISIONING" : The vrf is provisioning.
+  /// - "PROVISIONED" : The vrf is provisioned.
+  core.String? state;
+
+  /// The list of VLAN attachments for the VRF.
+  core.List<VlanAttachment>? vlanAttachments;
+
+  VRF({
+    this.name,
+    this.qosPolicy,
+    this.state,
+    this.vlanAttachments,
+  });
+
+  VRF.fromJson(core.Map _json)
+      : this(
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          qosPolicy: _json.containsKey('qosPolicy')
+              ? QosPolicy.fromJson(
+                  _json['qosPolicy'] as core.Map<core.String, core.dynamic>)
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          vlanAttachments: _json.containsKey('vlanAttachments')
+              ? (_json['vlanAttachments'] as core.List)
+                  .map((value) => VlanAttachment.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (name != null) 'name': name!,
+        if (qosPolicy != null) 'qosPolicy': qosPolicy!,
+        if (state != null) 'state': state!,
+        if (vlanAttachments != null) 'vlanAttachments': vlanAttachments!,
+      };
+}
+
+/// VLAN attachment details.
+class VlanAttachment {
+  /// The peer IP of the attachment.
+  core.String? peerIp;
+
+  /// The peer vlan ID of the attachment.
+  core.String? peerVlanId;
+
+  /// The router IP of the attachment.
+  core.String? routerIp;
+
+  VlanAttachment({
+    this.peerIp,
+    this.peerVlanId,
+    this.routerIp,
+  });
+
+  VlanAttachment.fromJson(core.Map _json)
+      : this(
+          peerIp: _json.containsKey('peerIp')
+              ? _json['peerIp'] as core.String
+              : null,
+          peerVlanId: _json.containsKey('peerVlanId')
+              ? _json['peerVlanId'] as core.String
+              : null,
+          routerIp: _json.containsKey('routerIp')
+              ? _json['routerIp'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (peerIp != null) 'peerIp': peerIp!,
+        if (peerVlanId != null) 'peerVlanId': peerVlanId!,
+        if (routerIp != null) 'routerIp': routerIp!,
+      };
+}
+
+/// A storage volume.
+class Volume {
+  /// The size, in GiB, that this storage volume has expanded as a result of an
+  /// auto grow policy.
+  ///
+  /// In the absence of auto-grow, the value is 0.
+  core.String? autoGrownSizeGib;
+
+  /// The current size of this storage volume, in GiB, including space reserved
+  /// for snapshots.
+  ///
+  /// This size might be different than the requested size if the storage volume
+  /// has been configured with auto grow or auto shrink.
+  core.String? currentSizeGib;
+
+  /// An identifier for the `Volume`, generated by the backend.
+  core.String? id;
+
+  /// Labels as key value pairs.
+  core.Map<core.String, core.String>? labels;
+
+  /// The resource name of this `Volume`.
+  ///
+  /// Resource names are schemeless URIs that follow the conventions in
+  /// https://cloud.google.com/apis/design/resource_names. Format:
+  /// `projects/{project}/locations/{location}/volumes/{volume}`
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// The space remaining in the storage volume for new LUNs, in GiB, excluding
+  /// space reserved for snapshots.
+  core.String? remainingSpaceGib;
+
+  /// The requested size of this storage volume, in GiB.
+  core.String? requestedSizeGib;
+
+  /// The behavior to use when snapshot reserved space is full.
+  /// Possible string values are:
+  /// - "SNAPSHOT_AUTO_DELETE_BEHAVIOR_UNSPECIFIED" : The unspecified behavior.
+  /// - "DISABLED" : Don't delete any snapshots. This disables new snapshot
+  /// creation, as long as the snapshot reserved space is full.
+  /// - "OLDEST_FIRST" : Delete the oldest snapshots first.
+  /// - "NEWEST_FIRST" : Delete the newest snapshots first.
+  core.String? snapshotAutoDeleteBehavior;
+
+  /// Details about snapshot space reservation and usage on the storage volume.
+  SnapshotReservationDetail? snapshotReservationDetail;
+
+  /// The name of the snapshot schedule policy in use for this volume, if any.
+  core.String? snapshotSchedulePolicy;
+
+  /// The state of this storage volume.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The storage volume is in an unknown state.
+  /// - "CREATING" : The storage volume is being created.
+  /// - "READY" : The storage volume is ready for use.
+  /// - "DELETING" : The storage volume has been requested to be deleted.
+  core.String? state;
+
+  /// The storage type for this volume.
+  /// Possible string values are:
+  /// - "STORAGE_TYPE_UNSPECIFIED" : The storage type for this volume is
+  /// unknown.
+  /// - "SSD" : The storage type for this volume is SSD.
+  /// - "HDD" : This storage type for this volume is HDD.
+  core.String? storageType;
+
+  Volume({
+    this.autoGrownSizeGib,
+    this.currentSizeGib,
+    this.id,
+    this.labels,
+    this.name,
+    this.remainingSpaceGib,
+    this.requestedSizeGib,
+    this.snapshotAutoDeleteBehavior,
+    this.snapshotReservationDetail,
+    this.snapshotSchedulePolicy,
+    this.state,
+    this.storageType,
+  });
+
+  Volume.fromJson(core.Map _json)
+      : this(
+          autoGrownSizeGib: _json.containsKey('autoGrownSizeGib')
+              ? _json['autoGrownSizeGib'] as core.String
+              : null,
+          currentSizeGib: _json.containsKey('currentSizeGib')
+              ? _json['currentSizeGib'] as core.String
+              : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          remainingSpaceGib: _json.containsKey('remainingSpaceGib')
+              ? _json['remainingSpaceGib'] as core.String
+              : null,
+          requestedSizeGib: _json.containsKey('requestedSizeGib')
+              ? _json['requestedSizeGib'] as core.String
+              : null,
+          snapshotAutoDeleteBehavior:
+              _json.containsKey('snapshotAutoDeleteBehavior')
+                  ? _json['snapshotAutoDeleteBehavior'] as core.String
+                  : null,
+          snapshotReservationDetail:
+              _json.containsKey('snapshotReservationDetail')
+                  ? SnapshotReservationDetail.fromJson(
+                      _json['snapshotReservationDetail']
+                          as core.Map<core.String, core.dynamic>)
+                  : null,
+          snapshotSchedulePolicy: _json.containsKey('snapshotSchedulePolicy')
+              ? _json['snapshotSchedulePolicy'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          storageType: _json.containsKey('storageType')
+              ? _json['storageType'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (autoGrownSizeGib != null) 'autoGrownSizeGib': autoGrownSizeGib!,
+        if (currentSizeGib != null) 'currentSizeGib': currentSizeGib!,
+        if (id != null) 'id': id!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (remainingSpaceGib != null) 'remainingSpaceGib': remainingSpaceGib!,
+        if (requestedSizeGib != null) 'requestedSizeGib': requestedSizeGib!,
+        if (snapshotAutoDeleteBehavior != null)
+          'snapshotAutoDeleteBehavior': snapshotAutoDeleteBehavior!,
+        if (snapshotReservationDetail != null)
+          'snapshotReservationDetail': snapshotReservationDetail!,
+        if (snapshotSchedulePolicy != null)
+          'snapshotSchedulePolicy': snapshotSchedulePolicy!,
+        if (state != null) 'state': state!,
+        if (storageType != null) 'storageType': storageType!,
+      };
+}
+
+/// Configuration parameters for a new volume.
+class VolumeConfig {
+  /// A transient unique identifier to identify a volume within an
+  /// ProvisioningConfig request.
+  core.String? id;
+
+  /// LUN ranges to be configured.
+  ///
+  /// Set only when protocol is PROTOCOL_FC.
+  core.List<LunRange>? lunRanges;
+
+  /// Machine ids connected to this volume.
+  ///
+  /// Set only when protocol is PROTOCOL_FC.
+  core.List<core.String>? machineIds;
+
+  /// The name of the volume config.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// NFS exports.
+  ///
+  /// Set only when protocol is PROTOCOL_NFS.
+  core.List<NfsExport>? nfsExports;
+
+  /// Volume protocol.
+  /// Possible string values are:
+  /// - "PROTOCOL_UNSPECIFIED" : Unspecified value.
+  /// - "PROTOCOL_FC" : Fibre channel.
+  /// - "PROTOCOL_NFS" : Network file system.
+  core.String? protocol;
+
+  /// The requested size of this volume, in GB.
+  core.int? sizeGb;
+
+  /// Whether snapshots should be enabled.
+  core.bool? snapshotsEnabled;
+
+  /// The type of this Volume.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : The unspecified type.
+  /// - "FLASH" : This Volume is on flash.
+  /// - "DISK" : This Volume is on disk.
+  core.String? type;
+
+  /// User note field, it can be used by customers to add additional information
+  /// for the BMS Ops team (b/194021617).
+  core.String? userNote;
+
+  VolumeConfig({
+    this.id,
+    this.lunRanges,
+    this.machineIds,
+    this.name,
+    this.nfsExports,
+    this.protocol,
+    this.sizeGb,
+    this.snapshotsEnabled,
+    this.type,
+    this.userNote,
+  });
+
+  VolumeConfig.fromJson(core.Map _json)
+      : this(
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          lunRanges: _json.containsKey('lunRanges')
+              ? (_json['lunRanges'] as core.List)
+                  .map((value) => LunRange.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          machineIds: _json.containsKey('machineIds')
+              ? (_json['machineIds'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          nfsExports: _json.containsKey('nfsExports')
+              ? (_json['nfsExports'] as core.List)
+                  .map((value) => NfsExport.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          protocol: _json.containsKey('protocol')
+              ? _json['protocol'] as core.String
+              : null,
+          sizeGb:
+              _json.containsKey('sizeGb') ? _json['sizeGb'] as core.int : null,
+          snapshotsEnabled: _json.containsKey('snapshotsEnabled')
+              ? _json['snapshotsEnabled'] as core.bool
+              : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+          userNote: _json.containsKey('userNote')
+              ? _json['userNote'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (id != null) 'id': id!,
+        if (lunRanges != null) 'lunRanges': lunRanges!,
+        if (machineIds != null) 'machineIds': machineIds!,
+        if (name != null) 'name': name!,
+        if (nfsExports != null) 'nfsExports': nfsExports!,
+        if (protocol != null) 'protocol': protocol!,
+        if (sizeGb != null) 'sizeGb': sizeGb!,
+        if (snapshotsEnabled != null) 'snapshotsEnabled': snapshotsEnabled!,
+        if (type != null) 'type': type!,
+        if (userNote != null) 'userNote': userNote!,
+      };
+}
+
+/// Snapshot registered for a given storage volume.
+class VolumeSnapshot {
+  /// The creation time of the storage volume snapshot.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// The description of the storage volume snapshot.
+  core.String? description;
+
+  /// An identifier for the snapshot, generated by the backend.
+  core.String? id;
+
+  /// The name of the storage volume snapshot.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// The size of the storage volume snapshot, in bytes.
+  core.String? sizeBytes;
+
+  /// The storage volume this snapshot belongs to.
+  core.String? storageVolume;
+
+  VolumeSnapshot({
+    this.createTime,
+    this.description,
+    this.id,
+    this.name,
+    this.sizeBytes,
+    this.storageVolume,
+  });
+
+  VolumeSnapshot.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          sizeBytes: _json.containsKey('sizeBytes')
+              ? _json['sizeBytes'] as core.String
+              : null,
+          storageVolume: _json.containsKey('storageVolume')
+              ? _json['storageVolume'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (id != null) 'id': id!,
+        if (name != null) 'name': name!,
+        if (sizeBytes != null) 'sizeBytes': sizeBytes!,
+        if (storageVolume != null) 'storageVolume': storageVolume!,
+      };
+}
diff --git a/generated/googleapis/lib/bigquery/v2.dart b/generated/googleapis/lib/bigquery/v2.dart
index ee4850f..d447dd1 100644
--- a/generated/googleapis/lib/bigquery/v2.dart
+++ b/generated/googleapis/lib/bigquery/v2.dart
@@ -3943,6 +3943,39 @@
       };
 }
 
+class DatasetTags {
+  /// The namespaced friendly name of the tag key, e.g. "12345/environment"
+  /// where 12345 is org id.
+  ///
+  /// Required.
+  core.String? tagKey;
+
+  /// Friendly short name of the tag value, e.g. "production".
+  ///
+  /// Required.
+  core.String? tagValue;
+
+  DatasetTags({
+    this.tagKey,
+    this.tagValue,
+  });
+
+  DatasetTags.fromJson(core.Map _json)
+      : this(
+          tagKey: _json.containsKey('tagKey')
+              ? _json['tagKey'] as core.String
+              : null,
+          tagValue: _json.containsKey('tagValue')
+              ? _json['tagValue'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (tagKey != null) 'tagKey': tagKey!,
+        if (tagValue != null) 'tagValue': tagValue!,
+      };
+}
+
 class Dataset {
   /// An array of objects that define dataset access for one or more entities.
   ///
@@ -4057,6 +4090,11 @@
   /// You can use this URL in Get or Update requests to the resource.
   core.String? selfLink;
 
+  /// \[Optional\]The tags associated with this dataset.
+  ///
+  /// Tag keys are globally unique.
+  core.List<DatasetTags>? tags;
+
   Dataset({
     this.access,
     this.creationTime,
@@ -4076,6 +4114,7 @@
     this.location,
     this.satisfiesPZS,
     this.selfLink,
+    this.tags,
   });
 
   Dataset.fromJson(core.Map _json)
@@ -4142,6 +4181,12 @@
           selfLink: _json.containsKey('selfLink')
               ? _json['selfLink'] as core.String
               : null,
+          tags: _json.containsKey('tags')
+              ? (_json['tags'] as core.List)
+                  .map((value) => DatasetTags.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
@@ -4166,32 +4211,7 @@
         if (location != null) 'location': location!,
         if (satisfiesPZS != null) 'satisfiesPZS': satisfiesPZS!,
         if (selfLink != null) 'selfLink': selfLink!,
-      };
-}
-
-class DatasetAccessEntryTargetTypes {
-  /// Which resources in the dataset this entry applies to.
-  ///
-  /// Currently, only views are supported, but additional target types may be
-  /// added in the future. Possible values: VIEWS: This entry applies to all
-  /// views in the dataset.
-  ///
-  /// Required.
-  core.String? targetType;
-
-  DatasetAccessEntryTargetTypes({
-    this.targetType,
-  });
-
-  DatasetAccessEntryTargetTypes.fromJson(core.Map _json)
-      : this(
-          targetType: _json.containsKey('targetType')
-              ? _json['targetType'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (targetType != null) 'targetType': targetType!,
+        if (tags != null) 'tags': tags!,
       };
 }
 
@@ -4200,7 +4220,7 @@
   ///
   /// Required.
   DatasetReference? dataset;
-  core.List<DatasetAccessEntryTargetTypes>? targetTypes;
+  core.List<core.String>? targetTypes;
 
   DatasetAccessEntry({
     this.dataset,
@@ -4215,8 +4235,7 @@
               : null,
           targetTypes: _json.containsKey('target_types')
               ? (_json['target_types'] as core.List)
-                  .map((value) => DatasetAccessEntryTargetTypes.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
+                  .map((value) => value as core.String)
                   .toList()
               : null,
         );
@@ -10106,12 +10125,13 @@
       };
 }
 
-/// The type of a variable, e.g., a function argument.
+/// The data type of a variable such as a function argument.
 ///
-/// Examples: INT64: {type_kind="INT64"} ARRAY: {type_kind="ARRAY",
-/// array_element_type="STRING"} STRUCT\>: {type_kind="STRUCT",
-/// struct_type={fields=\[ {name="x", type={type_kind="STRING"}}, {name="y",
-/// type={type_kind="ARRAY", array_element_type="DATE"}} \]}}
+/// Examples include: * INT64: `{"typeKind": "INT64"}` * ARRAY: { "typeKind":
+/// "ARRAY", "arrayElementType": {"typeKind": "STRING"} } * STRUCT\>: {
+/// "typeKind": "STRUCT", "structType": { "fields": \[ { "name": "x", "type":
+/// {"typeKind: "STRING"} }, { "name": "y", "type": { "typeKind": "ARRAY",
+/// "arrayElementType": {"typekind": "DATE"} } } \] } }
 class StandardSqlDataType {
   /// The type of the array's elements, if type_kind = "ARRAY".
   StandardSqlDataType? arrayElementType;
@@ -11376,7 +11396,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/bigtableadmin/v2.dart b/generated/googleapis/lib/bigtableadmin/v2.dart
index d7c48c2..6120268 100644
--- a/generated/googleapis/lib/bigtableadmin/v2.dart
+++ b/generated/googleapis/lib/bigtableadmin/v2.dart
@@ -2509,7 +2509,7 @@
   /// The cpu utilization that the Autoscaler should be trying to achieve.
   ///
   /// This number is on a scale from 0 (no utilization) to 100 (total
-  /// utilization).
+  /// utilization), and is limited between 10 and 80.
   core.int? cpuUtilizationPercent;
 
   AutoscalingTargets({
@@ -4462,7 +4462,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/billingbudgets/v1.dart b/generated/googleapis/lib/billingbudgets/v1.dart
index 5b6ffed..53f1391 100644
--- a/generated/googleapis/lib/billingbudgets/v1.dart
+++ b/generated/googleapis/lib/billingbudgets/v1.dart
@@ -881,10 +881,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
 
 /// Represents an amount of money with its currency type.
diff --git a/generated/googleapis/lib/binaryauthorization/v1.dart b/generated/googleapis/lib/binaryauthorization/v1.dart
index ae0ffd3..6c61124 100644
--- a/generated/googleapis/lib/binaryauthorization/v1.dart
+++ b/generated/googleapis/lib/binaryauthorization/v1.dart
@@ -1637,7 +1637,7 @@
 typedef Signature = $Signature;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/calendar/v3.dart b/generated/googleapis/lib/calendar/v3.dart
index 1e7af86..6829a8e 100644
--- a/generated/googleapis/lib/calendar/v3.dart
+++ b/generated/googleapis/lib/calendar/v3.dart
@@ -1387,8 +1387,10 @@
   /// - "all" : Notifications are sent to all guests.
   /// - "externalOnly" : Notifications are sent to non-Google Calendar guests
   /// only.
-  /// - "none" : No notifications are sent. For calendar migration tasks,
-  /// consider using the Events.import method instead.
+  /// - "none" : No notifications are sent. Warning: Using the value none can
+  /// have significant adverse effects, including events not syncing to external
+  /// calendars or events being lost altogether for some users. For calendar
+  /// migration tasks, consider using the events.import method instead.
   ///
   /// [supportsAttachments] - Whether API client performing operation supports
   /// event attachments. Optional. The default is False.
diff --git a/generated/googleapis/lib/certificatemanager/v1.dart b/generated/googleapis/lib/certificatemanager/v1.dart
new file mode 100644
index 0000000..2f9aac5
--- /dev/null
+++ b/generated/googleapis/lib/certificatemanager/v1.dart
@@ -0,0 +1,2426 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+// ignore_for_file: camel_case_types
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_string_interpolations
+
+/// Certificate Manager API - v1
+///
+/// For more information, see <https://cloud.google.com/certificate-manager>
+///
+/// Create an instance of [CertificateManagerApi] to access these resources:
+///
+/// - [ProjectsResource]
+///   - [ProjectsLocationsResource]
+///     - [ProjectsLocationsCertificateMapsResource]
+///       - [ProjectsLocationsCertificateMapsCertificateMapEntriesResource]
+///     - [ProjectsLocationsCertificatesResource]
+///     - [ProjectsLocationsDnsAuthorizationsResource]
+///     - [ProjectsLocationsOperationsResource]
+library certificatemanager.v1;
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+// ignore: deprecated_member_use_from_same_package
+import '../shared.dart';
+import '../src/user_agent.dart';
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+class CertificateManagerApi {
+  /// See, edit, configure, and delete your Google Cloud data and see the email
+  /// address for your Google Account.
+  static const cloudPlatformScope =
+      'https://www.googleapis.com/auth/cloud-platform';
+
+  final commons.ApiRequester _requester;
+
+  ProjectsResource get projects => ProjectsResource(_requester);
+
+  CertificateManagerApi(http.Client client,
+      {core.String rootUrl = 'https://certificatemanager.googleapis.com/',
+      core.String servicePath = ''})
+      : _requester =
+            commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
+}
+
+class ProjectsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsResource get locations =>
+      ProjectsLocationsResource(_requester);
+
+  ProjectsResource(commons.ApiRequester client) : _requester = client;
+}
+
+class ProjectsLocationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsCertificateMapsResource get certificateMaps =>
+      ProjectsLocationsCertificateMapsResource(_requester);
+  ProjectsLocationsCertificatesResource get certificates =>
+      ProjectsLocationsCertificatesResource(_requester);
+  ProjectsLocationsDnsAuthorizationsResource get dnsAuthorizations =>
+      ProjectsLocationsDnsAuthorizationsResource(_requester);
+  ProjectsLocationsOperationsResource get operations =>
+      ProjectsLocationsOperationsResource(_requester);
+
+  ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
+
+  /// Gets information about a location.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Resource name for the location.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Location].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Location> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Location.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists information about the supported locations for this service.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource that owns the locations collection, if applicable.
+  /// Value must have pattern `^projects/\[^/\]+$`.
+  ///
+  /// [filter] - A filter to narrow down results to a preferred subset. The
+  /// filtering language accepts strings like "displayName=tokyo", and is
+  /// documented in more detail in \[AIP-160\](https://google.aip.dev/160).
+  ///
+  /// [pageSize] - The maximum number of results to return. If not set, the
+  /// service selects a default.
+  ///
+  /// [pageToken] - A page token received from the `next_page_token` field in
+  /// the response. Send that page token to receive the subsequent page.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListLocationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListLocationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name') + '/locations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListLocationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsCertificateMapsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsCertificateMapsCertificateMapEntriesResource
+      get certificateMapEntries =>
+          ProjectsLocationsCertificateMapsCertificateMapEntriesResource(
+              _requester);
+
+  ProjectsLocationsCertificateMapsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a new CertificateMap in a given project and location.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent resource of the certificate map. Must be
+  /// in the format `projects / * /locations / * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [certificateMapId] - Required. A user-provided name of the certificate
+  /// map.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> create(
+    CertificateMap request,
+    core.String parent, {
+    core.String? certificateMapId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (certificateMapId != null) 'certificateMapId': [certificateMapId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/certificateMaps';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a single CertificateMap.
+  ///
+  /// A Certificate Map can't be deleted if it contains Certificate Map Entries.
+  /// Remove all the entries from the map before calling this method.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. A name of the certificate map to delete. Must be in the
+  /// format `projects / * /locations / * /certificateMaps / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificateMaps/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets details of a single CertificateMap.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. A name of the certificate map to describe. Must be in
+  /// the format `projects / * /locations / * /certificateMaps / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificateMaps/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [CertificateMap].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<CertificateMap> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return CertificateMap.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists CertificateMaps in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The project and location from which the certificate
+  /// maps should be listed, specified in the format `projects / * /locations /
+  /// * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - Filter expression to restrict the Certificates Maps returned.
+  ///
+  /// [orderBy] - A list of Certificate Map field names used to specify the
+  /// order of the returned results. The default sorting order is ascending. To
+  /// specify descending order for a field, add a suffix " desc".
+  ///
+  /// [pageSize] - Maximum number of certificate maps to return per call.
+  ///
+  /// [pageToken] - The value returned by the last
+  /// `ListCertificateMapsResponse`. Indicates that this is a continuation of a
+  /// prior `ListCertificateMaps` call, and that the system should return the
+  /// next page of data.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListCertificateMapsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListCertificateMapsResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/certificateMaps';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListCertificateMapsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates a CertificateMap.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - A user-defined name of the Certificate Map. Certificate Map names
+  /// must be unique globally and match pattern `projects / * /locations / *
+  /// /certificateMaps / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificateMaps/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. The update mask applies to the resource. For the
+  /// `FieldMask` definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    CertificateMap request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsCertificateMapsCertificateMapEntriesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsCertificateMapsCertificateMapEntriesResource(
+      commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a new CertificateMapEntry in a given project and location.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent resource of the certificate map entry.
+  /// Must be in the format `projects / * /locations / * /certificateMaps / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificateMaps/\[^/\]+$`.
+  ///
+  /// [certificateMapEntryId] - Required. A user-provided name of the
+  /// certificate map entry.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> create(
+    CertificateMapEntry request,
+    core.String parent, {
+    core.String? certificateMapEntryId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (certificateMapEntryId != null)
+        'certificateMapEntryId': [certificateMapEntryId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$parent') + '/certificateMapEntries';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a single CertificateMapEntry.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. A name of the certificate map entry to delete. Must be
+  /// in the format `projects / * /locations / * /certificateMaps / *
+  /// /certificateMapEntries / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificateMaps/\[^/\]+/certificateMapEntries/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets details of a single CertificateMapEntry.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. A name of the certificate map entry to describe. Must
+  /// be in the format `projects / * /locations / * /certificateMaps / *
+  /// /certificateMapEntries / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificateMaps/\[^/\]+/certificateMapEntries/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [CertificateMapEntry].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<CertificateMapEntry> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return CertificateMapEntry.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists CertificateMapEntries in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The project, location and certificate map from which
+  /// the certificate map entries should be listed, specified in the format
+  /// `projects / * /locations / * /certificateMaps / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificateMaps/\[^/\]+$`.
+  ///
+  /// [filter] - Filter expression to restrict the returned Certificate Map
+  /// Entries.
+  ///
+  /// [orderBy] - A list of Certificate Map Entry field names used to specify
+  /// the order of the returned results. The default sorting order is ascending.
+  /// To specify descending order for a field, add a suffix " desc".
+  ///
+  /// [pageSize] - Maximum number of certificate map entries to return. The
+  /// service may return fewer than this value. If unspecified, at most 50
+  /// certificate map entries will be returned. The maximum value is 1000;
+  /// values above 1000 will be coerced to 1000.
+  ///
+  /// [pageToken] - The value returned by the last
+  /// `ListCertificateMapEntriesResponse`. Indicates that this is a continuation
+  /// of a prior `ListCertificateMapEntries` call, and that the system should
+  /// return the next page of data.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListCertificateMapEntriesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListCertificateMapEntriesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$parent') + '/certificateMapEntries';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListCertificateMapEntriesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates a CertificateMapEntry.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - A user-defined name of the Certificate Map Entry. Certificate Map
+  /// Entry names must be unique globally and match pattern `projects / *
+  /// /locations / * /certificateMaps / * /certificateMapEntries / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificateMaps/\[^/\]+/certificateMapEntries/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. The update mask applies to the resource. For the
+  /// `FieldMask` definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    CertificateMapEntry request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsCertificatesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsCertificatesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a new Certificate in a given project and location.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent resource of the certificate. Must be in
+  /// the format `projects / * /locations / * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [certificateId] - Required. A user-provided name of the certificate.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> create(
+    Certificate request,
+    core.String parent, {
+    core.String? certificateId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (certificateId != null) 'certificateId': [certificateId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/certificates';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a single Certificate.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. A name of the certificate to delete. Must be in the
+  /// format `projects / * /locations / * /certificates / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificates/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets details of a single Certificate.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. A name of the certificate to describe. Must be in the
+  /// format `projects / * /locations / * /certificates / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificates/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Certificate].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Certificate> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Certificate.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists Certificates in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The project and location from which the certificate
+  /// should be listed, specified in the format `projects / * /locations / * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - Filter expression to restrict the Certificates returned.
+  ///
+  /// [orderBy] - A list of Certificate field names used to specify the order of
+  /// the returned results. The default sorting order is ascending. To specify
+  /// descending order for a field, add a suffix " desc".
+  ///
+  /// [pageSize] - Maximum number of certificates to return per call.
+  ///
+  /// [pageToken] - The value returned by the last `ListCertificatesResponse`.
+  /// Indicates that this is a continuation of a prior `ListCertificates` call,
+  /// and that the system should return the next page of data.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListCertificatesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListCertificatesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/certificates';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListCertificatesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates a Certificate.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - A user-defined name of the certificate. Certificate names must be
+  /// unique globally and match pattern `projects / * /locations / *
+  /// /certificates / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/certificates/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. The update mask applies to the resource. For the
+  /// `FieldMask` definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    Certificate request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsDnsAuthorizationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsDnsAuthorizationsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a new DnsAuthorization in a given project and location.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent resource of the dns authorization. Must be
+  /// in the format `projects / * /locations / * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [dnsAuthorizationId] - Required. A user-provided name of the dns
+  /// authorization.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> create(
+    DnsAuthorization request,
+    core.String parent, {
+    core.String? dnsAuthorizationId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (dnsAuthorizationId != null)
+        'dnsAuthorizationId': [dnsAuthorizationId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/dnsAuthorizations';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a single DnsAuthorization.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. A name of the dns authorization to delete. Must be in
+  /// the format `projects / * /locations / * /dnsAuthorizations / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/dnsAuthorizations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets details of a single DnsAuthorization.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. A name of the dns authorization to describe. Must be in
+  /// the format `projects / * /locations / * /dnsAuthorizations / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/dnsAuthorizations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [DnsAuthorization].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<DnsAuthorization> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return DnsAuthorization.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists DnsAuthorizations in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The project and location from which the dns
+  /// authorizations should be listed, specified in the format `projects / *
+  /// /locations / * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - Filter expression to restrict the Dns Authorizations returned.
+  ///
+  /// [orderBy] - A list of Dns Authorization field names used to specify the
+  /// order of the returned results. The default sorting order is ascending. To
+  /// specify descending order for a field, add a suffix " desc".
+  ///
+  /// [pageSize] - Maximum number of dns authorizations to return per call.
+  ///
+  /// [pageToken] - The value returned by the last
+  /// `ListDnsAuthorizationsResponse`. Indicates that this is a continuation of
+  /// a prior `ListDnsAuthorizations` call, and that the system should return
+  /// the next page of data.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListDnsAuthorizationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListDnsAuthorizationsResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/dnsAuthorizations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListDnsAuthorizationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates a DnsAuthorization.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - A user-defined name of the dns authorization. DnsAuthorization
+  /// names must be unique globally and match pattern `projects / * /locations /
+  /// * /dnsAuthorizations / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/dnsAuthorizations/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. The update mask applies to the resource. For the
+  /// `FieldMask` definition, see
+  /// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    DnsAuthorization request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsOperationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsOperationsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Starts asynchronous cancellation on a long-running operation.
+  ///
+  /// The server makes a best effort to cancel the operation, but success is not
+  /// guaranteed. If the server doesn't support this method, it returns
+  /// `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation
+  /// or other methods to check whether the cancellation succeeded or whether
+  /// the operation completed despite cancellation. On successful cancellation,
+  /// the operation is not deleted; instead, it becomes an operation with an
+  /// Operation.error value with a google.rpc.Status.code of 1, corresponding to
+  /// `Code.CANCELLED`.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource to be cancelled.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> cancel(
+    CancelOperationRequest request,
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name') + ':cancel';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a long-running operation.
+  ///
+  /// This method indicates that the client is no longer interested in the
+  /// operation result. It does not cancel the operation. If the server doesn't
+  /// support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource to be deleted.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// 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.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists operations that match the specified filter in the request.
+  ///
+  /// If the server doesn't support this method, it returns `UNIMPLEMENTED`.
+  /// NOTE: the `name` binding allows API services to override the binding to
+  /// use different resource name schemes, such as `users / * /operations`. To
+  /// override the binding, API services can add a binding such as
+  /// `"/v1/{name=users / * }/operations"` to their service configuration. For
+  /// backwards compatibility, the default name includes the operations
+  /// collection id, however overriding users must ensure the name binding is
+  /// the parent resource, without the operations collection id.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation's parent resource.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [pageSize] - The standard list page size.
+  ///
+  /// [pageToken] - The standard list page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListOperationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListOperationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name') + '/operations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListOperationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+/// State of the latest attempt to authorize a domain for certificate issuance.
+class AuthorizationAttemptInfo {
+  /// Human readable explanation for reaching the state.
+  ///
+  /// Provided to help address the configuration issues. Not guaranteed to be
+  /// stable. For programmatic access use Reason enum.
+  core.String? details;
+
+  /// Domain name of the authorization attempt.
+  core.String? domain;
+
+  /// Reason for failure of the authorization attempt for the domain.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "FAILURE_REASON_UNSPECIFIED"
+  /// - "CONFIG" : There was a problem with the user's DNS or load balancer
+  /// configuration for this domain.
+  /// - "CAA" : Certificate issuance forbidden by an explicit CAA record for the
+  /// domain or a failure to check CAA records for the domain.
+  /// - "RATE_LIMITED" : Reached a CA or internal rate-limit for the domain,
+  /// e.g. for certificates per top-level private domain.
+  core.String? failureReason;
+
+  /// State of the domain for managed certificate issuance.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED"
+  /// - "AUTHORIZING" : Certificate provisioning for this domain is under way.
+  /// GCP will attempt to authorize the domain.
+  /// - "AUTHORIZED" : A managed certificate can be provisioned, no issues for
+  /// this domain.
+  /// - "FAILED" : Attempt to authorize the domain failed. This prevents the
+  /// Managed Certificate from being issued. See `failure_reason` and `details`
+  /// fields for more information.
+  core.String? state;
+
+  AuthorizationAttemptInfo({
+    this.details,
+    this.domain,
+    this.failureReason,
+    this.state,
+  });
+
+  AuthorizationAttemptInfo.fromJson(core.Map _json)
+      : this(
+          details: _json.containsKey('details')
+              ? _json['details'] as core.String
+              : null,
+          domain: _json.containsKey('domain')
+              ? _json['domain'] as core.String
+              : null,
+          failureReason: _json.containsKey('failureReason')
+              ? _json['failureReason'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (details != null) 'details': details!,
+        if (domain != null) 'domain': domain!,
+        if (failureReason != null) 'failureReason': failureReason!,
+        if (state != null) 'state': state!,
+      };
+}
+
+/// The request message for Operations.CancelOperation.
+typedef CancelOperationRequest = $Empty;
+
+/// Defines TLS certificate.
+class Certificate {
+  /// The creation timestamp of a Certificate.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// One or more paragraphs of text description of a certificate.
+  core.String? description;
+
+  /// The expiry timestamp of a Certificate.
+  ///
+  /// Output only.
+  core.String? expireTime;
+
+  /// Set of labels associated with a Certificate.
+  core.Map<core.String, core.String>? labels;
+
+  /// If set, contains configuration and state of a managed certificate.
+  ManagedCertificate? managed;
+
+  /// A user-defined name of the certificate.
+  ///
+  /// Certificate names must be unique globally and match pattern `projects / *
+  /// /locations / * /certificates / * `.
+  core.String? name;
+
+  /// The PEM-encoded certificate chain.
+  ///
+  /// Output only.
+  core.String? pemCertificate;
+
+  /// The list of Subject Alternative Names of dnsName type defined in the
+  /// certificate (see RFC 5280 4.2.1.6)
+  ///
+  /// Output only.
+  core.List<core.String>? sanDnsnames;
+
+  /// The scope of the certificate.
+  ///
+  /// Immutable.
+  /// Possible string values are:
+  /// - "DEFAULT" : Certificates with default scope are served from core Google
+  /// data centers. If unsure, choose this option.
+  /// - "EDGE_CACHE" : Certificates with scope EDGE_CACHE are special-purposed
+  /// certificates, served from non-core Google data centers.
+  core.String? scope;
+
+  /// If set, defines data of a self-managed certificate.
+  SelfManagedCertificate? selfManaged;
+
+  /// The last update timestamp of a Certificate.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  Certificate({
+    this.createTime,
+    this.description,
+    this.expireTime,
+    this.labels,
+    this.managed,
+    this.name,
+    this.pemCertificate,
+    this.sanDnsnames,
+    this.scope,
+    this.selfManaged,
+    this.updateTime,
+  });
+
+  Certificate.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          expireTime: _json.containsKey('expireTime')
+              ? _json['expireTime'] as core.String
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          managed: _json.containsKey('managed')
+              ? ManagedCertificate.fromJson(
+                  _json['managed'] as core.Map<core.String, core.dynamic>)
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          pemCertificate: _json.containsKey('pemCertificate')
+              ? _json['pemCertificate'] as core.String
+              : null,
+          sanDnsnames: _json.containsKey('sanDnsnames')
+              ? (_json['sanDnsnames'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          scope:
+              _json.containsKey('scope') ? _json['scope'] as core.String : null,
+          selfManaged: _json.containsKey('selfManaged')
+              ? SelfManagedCertificate.fromJson(
+                  _json['selfManaged'] as core.Map<core.String, core.dynamic>)
+              : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (expireTime != null) 'expireTime': expireTime!,
+        if (labels != null) 'labels': labels!,
+        if (managed != null) 'managed': managed!,
+        if (name != null) 'name': name!,
+        if (pemCertificate != null) 'pemCertificate': pemCertificate!,
+        if (sanDnsnames != null) 'sanDnsnames': sanDnsnames!,
+        if (scope != null) 'scope': scope!,
+        if (selfManaged != null) 'selfManaged': selfManaged!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Defines a collection of certificate configurations.
+class CertificateMap {
+  /// The creation timestamp of a Certificate Map.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// One or more paragraphs of text description of a certificate map.
+  core.String? description;
+
+  /// A list of GCLB targets which use this Certificate Map.
+  ///
+  /// Output only.
+  core.List<GclbTarget>? gclbTargets;
+
+  /// Set of labels associated with a Certificate Map.
+  core.Map<core.String, core.String>? labels;
+
+  /// A user-defined name of the Certificate Map.
+  ///
+  /// Certificate Map names must be unique globally and match pattern `projects
+  /// / * /locations / * /certificateMaps / * `.
+  core.String? name;
+
+  /// The update timestamp of a Certificate Map.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  CertificateMap({
+    this.createTime,
+    this.description,
+    this.gclbTargets,
+    this.labels,
+    this.name,
+    this.updateTime,
+  });
+
+  CertificateMap.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          gclbTargets: _json.containsKey('gclbTargets')
+              ? (_json['gclbTargets'] as core.List)
+                  .map((value) => GclbTarget.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (gclbTargets != null) 'gclbTargets': gclbTargets!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Defines a certificate map entry.
+class CertificateMapEntry {
+  /// A set of Certificates defines for the given `hostname`.
+  ///
+  /// There can be defined up to fifteen certificates in each Certificate Map
+  /// Entry. Each certificate must match pattern `projects / * /locations / *
+  /// /certificates / * `.
+  core.List<core.String>? certificates;
+
+  /// The creation timestamp of a Certificate Map Entry.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// One or more paragraphs of text description of a certificate map entry.
+  core.String? description;
+
+  /// A Hostname (FQDN, e.g. example.com) or a wildcard hostname expression
+  /// (*.example.com) for a set of hostnames with common suffix.
+  ///
+  /// Used as Server Name Indication (SNI) for selecting a proper certificate.
+  core.String? hostname;
+
+  /// Set of labels associated with a Certificate Map Entry.
+  core.Map<core.String, core.String>? labels;
+
+  /// A predefined matcher for particular cases, other than SNI selection.
+  /// Possible string values are:
+  /// - "MATCHER_UNSPECIFIED" : A matcher has't been recognized.
+  /// - "PRIMARY" : A primary certificate that is served when SNI wasn't
+  /// specified in the request or SNI couldn't be found in the map.
+  core.String? matcher;
+
+  /// A user-defined name of the Certificate Map Entry.
+  ///
+  /// Certificate Map Entry names must be unique globally and match pattern
+  /// `projects / * /locations / * /certificateMaps / * /certificateMapEntries /
+  /// * `.
+  core.String? name;
+
+  /// A serving state of this Certificate Map Entry.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "SERVING_STATE_UNSPECIFIED" : The status is undefined.
+  /// - "ACTIVE" : The configuration is serving.
+  /// - "PENDING" : Update is in progress. Some frontends may serve this
+  /// configuration.
+  core.String? state;
+
+  /// The update timestamp of a Certificate Map Entry.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  CertificateMapEntry({
+    this.certificates,
+    this.createTime,
+    this.description,
+    this.hostname,
+    this.labels,
+    this.matcher,
+    this.name,
+    this.state,
+    this.updateTime,
+  });
+
+  CertificateMapEntry.fromJson(core.Map _json)
+      : this(
+          certificates: _json.containsKey('certificates')
+              ? (_json['certificates'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          hostname: _json.containsKey('hostname')
+              ? _json['hostname'] as core.String
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          matcher: _json.containsKey('matcher')
+              ? _json['matcher'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (certificates != null) 'certificates': certificates!,
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (hostname != null) 'hostname': hostname!,
+        if (labels != null) 'labels': labels!,
+        if (matcher != null) 'matcher': matcher!,
+        if (name != null) 'name': name!,
+        if (state != null) 'state': state!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// A DnsAuthorization resource describes a way to perform domain authorization
+/// for certificate issuance.
+class DnsAuthorization {
+  /// The creation timestamp of a DnsAuthorization.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// One or more paragraphs of text description of a DnsAuthorization.
+  core.String? description;
+
+  /// DNS Resource Record that needs to be added to DNS configuration.
+  ///
+  /// Output only.
+  DnsResourceRecord? dnsResourceRecord;
+
+  /// A domain which is being authorized.
+  ///
+  /// A DnsAuthorization resource covers a single domain and its wildcard, e.g.
+  /// authorization for "example.com" can be used to issue certificates for
+  /// "example.com" and "*.example.com".
+  ///
+  /// Required. Immutable.
+  core.String? domain;
+
+  /// Set of labels associated with a DnsAuthorization.
+  core.Map<core.String, core.String>? labels;
+
+  /// A user-defined name of the dns authorization.
+  ///
+  /// DnsAuthorization names must be unique globally and match pattern `projects
+  /// / * /locations / * /dnsAuthorizations / * `.
+  core.String? name;
+
+  /// The last update timestamp of a DnsAuthorization.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  DnsAuthorization({
+    this.createTime,
+    this.description,
+    this.dnsResourceRecord,
+    this.domain,
+    this.labels,
+    this.name,
+    this.updateTime,
+  });
+
+  DnsAuthorization.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          dnsResourceRecord: _json.containsKey('dnsResourceRecord')
+              ? DnsResourceRecord.fromJson(_json['dnsResourceRecord']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          domain: _json.containsKey('domain')
+              ? _json['domain'] as core.String
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (dnsResourceRecord != null) 'dnsResourceRecord': dnsResourceRecord!,
+        if (domain != null) 'domain': domain!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// The structure describing the DNS Resource Record that needs to be added to
+/// DNS configuration for the authorization to be usable by certificate.
+class DnsResourceRecord {
+  /// Data of the DNS Resource Record.
+  ///
+  /// Output only.
+  core.String? data;
+
+  /// Fully qualified name of the DNS Resource Record.
+  ///
+  /// e.g. "_acme-challenge.example.com."
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Type of the DNS Resource Record.
+  ///
+  /// Currently always set to "CNAME".
+  ///
+  /// Output only.
+  core.String? type;
+
+  DnsResourceRecord({
+    this.data,
+    this.name,
+    this.type,
+  });
+
+  DnsResourceRecord.fromJson(core.Map _json)
+      : this(
+          data: _json.containsKey('data') ? _json['data'] as core.String : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (data != null) 'data': data!,
+        if (name != null) 'name': name!,
+        if (type != null) 'type': type!,
+      };
+}
+
+/// 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 `{}`.
+typedef Empty = $Empty;
+
+/// Describes a Target Proxy which uses this Certificate Map.
+class GclbTarget {
+  /// IP configurations for this Target Proxy where the Certificate Map is
+  /// serving.
+  core.List<IpConfig>? ipConfigs;
+
+  /// A name must be in the format `projects / * /locations / *
+  /// /targetHttpsProxies / * `.
+  core.String? targetHttpsProxy;
+
+  /// A name must be in the format `projects / * /locations / *
+  /// /targetSslProxies / * `.
+  core.String? targetSslProxy;
+
+  GclbTarget({
+    this.ipConfigs,
+    this.targetHttpsProxy,
+    this.targetSslProxy,
+  });
+
+  GclbTarget.fromJson(core.Map _json)
+      : this(
+          ipConfigs: _json.containsKey('ipConfigs')
+              ? (_json['ipConfigs'] as core.List)
+                  .map((value) => IpConfig.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          targetHttpsProxy: _json.containsKey('targetHttpsProxy')
+              ? _json['targetHttpsProxy'] as core.String
+              : null,
+          targetSslProxy: _json.containsKey('targetSslProxy')
+              ? _json['targetSslProxy'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (ipConfigs != null) 'ipConfigs': ipConfigs!,
+        if (targetHttpsProxy != null) 'targetHttpsProxy': targetHttpsProxy!,
+        if (targetSslProxy != null) 'targetSslProxy': targetSslProxy!,
+      };
+}
+
+/// Defines IP configuration where this Certificate Map is serving.
+class IpConfig {
+  /// An external IP address.
+  core.String? ipAddress;
+
+  /// Ports.
+  core.List<core.int>? ports;
+
+  IpConfig({
+    this.ipAddress,
+    this.ports,
+  });
+
+  IpConfig.fromJson(core.Map _json)
+      : this(
+          ipAddress: _json.containsKey('ipAddress')
+              ? _json['ipAddress'] as core.String
+              : null,
+          ports: _json.containsKey('ports')
+              ? (_json['ports'] as core.List)
+                  .map((value) => value as core.int)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (ipAddress != null) 'ipAddress': ipAddress!,
+        if (ports != null) 'ports': ports!,
+      };
+}
+
+/// Response for the `ListCertificateMapEntries` method.
+class ListCertificateMapEntriesResponse {
+  /// A list of certificate map entries for the parent resource.
+  core.List<CertificateMapEntry>? certificateMapEntries;
+
+  /// If there might be more results than those appearing in this response, then
+  /// `next_page_token` is included.
+  ///
+  /// To get the next set of results, call this method again using the value of
+  /// `next_page_token` as `page_token`.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListCertificateMapEntriesResponse({
+    this.certificateMapEntries,
+    this.nextPageToken,
+    this.unreachable,
+  });
+
+  ListCertificateMapEntriesResponse.fromJson(core.Map _json)
+      : this(
+          certificateMapEntries: _json.containsKey('certificateMapEntries')
+              ? (_json['certificateMapEntries'] as core.List)
+                  .map((value) => CertificateMapEntry.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (certificateMapEntries != null)
+          'certificateMapEntries': certificateMapEntries!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// Response for the `ListCertificateMaps` method.
+class ListCertificateMapsResponse {
+  /// A list of certificate maps for the parent resource.
+  core.List<CertificateMap>? certificateMaps;
+
+  /// If there might be more results than those appearing in this response, then
+  /// `next_page_token` is included.
+  ///
+  /// To get the next set of results, call this method again using the value of
+  /// `next_page_token` as `page_token`.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListCertificateMapsResponse({
+    this.certificateMaps,
+    this.nextPageToken,
+    this.unreachable,
+  });
+
+  ListCertificateMapsResponse.fromJson(core.Map _json)
+      : this(
+          certificateMaps: _json.containsKey('certificateMaps')
+              ? (_json['certificateMaps'] as core.List)
+                  .map((value) => CertificateMap.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (certificateMaps != null) 'certificateMaps': certificateMaps!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// Response for the `ListCertificates` method.
+class ListCertificatesResponse {
+  /// A list of certificates for the parent resource.
+  core.List<Certificate>? certificates;
+
+  /// If there might be more results than those appearing in this response, then
+  /// `next_page_token` is included.
+  ///
+  /// To get the next set of results, call this method again using the value of
+  /// `next_page_token` as `page_token`.
+  core.String? nextPageToken;
+
+  /// A list of locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListCertificatesResponse({
+    this.certificates,
+    this.nextPageToken,
+    this.unreachable,
+  });
+
+  ListCertificatesResponse.fromJson(core.Map _json)
+      : this(
+          certificates: _json.containsKey('certificates')
+              ? (_json['certificates'] as core.List)
+                  .map((value) => Certificate.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (certificates != null) 'certificates': certificates!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// Response for the `ListDnsAuthorizations` method.
+class ListDnsAuthorizationsResponse {
+  /// A list of dns authorizations for the parent resource.
+  core.List<DnsAuthorization>? dnsAuthorizations;
+
+  /// If there might be more results than those appearing in this response, then
+  /// `next_page_token` is included.
+  ///
+  /// To get the next set of results, call this method again using the value of
+  /// `next_page_token` as `page_token`.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListDnsAuthorizationsResponse({
+    this.dnsAuthorizations,
+    this.nextPageToken,
+    this.unreachable,
+  });
+
+  ListDnsAuthorizationsResponse.fromJson(core.Map _json)
+      : this(
+          dnsAuthorizations: _json.containsKey('dnsAuthorizations')
+              ? (_json['dnsAuthorizations'] as core.List)
+                  .map((value) => DnsAuthorization.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (dnsAuthorizations != null) 'dnsAuthorizations': dnsAuthorizations!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// The response message for Locations.ListLocations.
+class ListLocationsResponse {
+  /// A list of locations that matches the specified filter in the request.
+  core.List<Location>? locations;
+
+  /// The standard List next-page token.
+  core.String? nextPageToken;
+
+  ListLocationsResponse({
+    this.locations,
+    this.nextPageToken,
+  });
+
+  ListLocationsResponse.fromJson(core.Map _json)
+      : this(
+          locations: _json.containsKey('locations')
+              ? (_json['locations'] as core.List)
+                  .map((value) => Location.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (locations != null) 'locations': locations!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// The response message for Operations.ListOperations.
+class ListOperationsResponse {
+  /// The standard List next-page token.
+  core.String? nextPageToken;
+
+  /// A list of operations that matches the specified filter in the request.
+  core.List<Operation>? operations;
+
+  ListOperationsResponse({
+    this.nextPageToken,
+    this.operations,
+  });
+
+  ListOperationsResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          operations: _json.containsKey('operations')
+              ? (_json['operations'] as core.List)
+                  .map((value) => Operation.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (operations != null) 'operations': operations!,
+      };
+}
+
+/// A resource that represents Google Cloud Platform location.
+typedef Location = $Location00;
+
+/// Configuration and state of a Managed Certificate.
+///
+/// Certificate Manager provisions and renews Managed Certificates
+/// automatically, for as long as it's authorized to do so.
+class ManagedCertificate {
+  /// Detailed state of the latest authorization attempt for each domain
+  /// specified for managed certificate resource.
+  ///
+  /// Output only.
+  core.List<AuthorizationAttemptInfo>? authorizationAttemptInfo;
+
+  /// Authorizations that will be used for performing domain authorization.
+  ///
+  /// Immutable.
+  core.List<core.String>? dnsAuthorizations;
+
+  /// The domains for which a managed SSL certificate will be generated.
+  ///
+  /// Wildcard domains are only supported with DNS challenge resolution.
+  ///
+  /// Immutable.
+  core.List<core.String>? domains;
+
+  /// Information about issues with provisioning a Managed Certificate.
+  ProvisioningIssue? provisioningIssue;
+
+  /// State of the managed certificate resource.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED"
+  /// - "PROVISIONING" : Certificate Manager attempts to provision or renew the
+  /// certificate. If the process takes longer than expected, consult the
+  /// `provisioning_issue` field.
+  /// - "FAILED" : Multiple certificate provisioning attempts failed and
+  /// Certificate Manager gave up. To try again, delete and create a new managed
+  /// Certificate resource. For details see the `provisioning_issue` field.
+  /// - "ACTIVE" : The certificate management is working, and a certificate has
+  /// been provisioned.
+  core.String? state;
+
+  ManagedCertificate({
+    this.authorizationAttemptInfo,
+    this.dnsAuthorizations,
+    this.domains,
+    this.provisioningIssue,
+    this.state,
+  });
+
+  ManagedCertificate.fromJson(core.Map _json)
+      : this(
+          authorizationAttemptInfo:
+              _json.containsKey('authorizationAttemptInfo')
+                  ? (_json['authorizationAttemptInfo'] as core.List)
+                      .map((value) => AuthorizationAttemptInfo.fromJson(
+                          value as core.Map<core.String, core.dynamic>))
+                      .toList()
+                  : null,
+          dnsAuthorizations: _json.containsKey('dnsAuthorizations')
+              ? (_json['dnsAuthorizations'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          domains: _json.containsKey('domains')
+              ? (_json['domains'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          provisioningIssue: _json.containsKey('provisioningIssue')
+              ? ProvisioningIssue.fromJson(_json['provisioningIssue']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (authorizationAttemptInfo != null)
+          'authorizationAttemptInfo': authorizationAttemptInfo!,
+        if (dnsAuthorizations != null) 'dnsAuthorizations': dnsAuthorizations!,
+        if (domains != null) 'domains': domains!,
+        if (provisioningIssue != null) 'provisioningIssue': provisioningIssue!,
+        if (state != null) 'state': state!,
+      };
+}
+
+/// This resource represents a long-running operation that is the result of a
+/// network API call.
+class Operation {
+  /// 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.
+  core.bool? done;
+
+  /// The error result of the operation in case of failure or cancellation.
+  Status? error;
+
+  /// 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.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? metadata;
+
+  /// 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}`.
+  core.String? name;
+
+  /// 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`.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? response;
+
+  Operation({
+    this.done,
+    this.error,
+    this.metadata,
+    this.name,
+    this.response,
+  });
+
+  Operation.fromJson(core.Map _json)
+      : this(
+          done: _json.containsKey('done') ? _json['done'] as core.bool : null,
+          error: _json.containsKey('error')
+              ? Status.fromJson(
+                  _json['error'] as core.Map<core.String, core.dynamic>)
+              : null,
+          metadata: _json.containsKey('metadata')
+              ? _json['metadata'] as core.Map<core.String, core.dynamic>
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          response: _json.containsKey('response')
+              ? _json['response'] as core.Map<core.String, core.dynamic>
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (done != null) 'done': done!,
+        if (error != null) 'error': error!,
+        if (metadata != null) 'metadata': metadata!,
+        if (name != null) 'name': name!,
+        if (response != null) 'response': response!,
+      };
+}
+
+/// Information about issues with provisioning a Managed Certificate.
+class ProvisioningIssue {
+  /// Human readable explanation about the issue.
+  ///
+  /// Provided to help address the configuration issues. Not guaranteed to be
+  /// stable. For programmatic access use Reason enum.
+  core.String? details;
+
+  /// Reason for provisioning failures.
+  /// Possible string values are:
+  /// - "REASON_UNSPECIFIED"
+  /// - "AUTHORIZATION_ISSUE" : Certificate provisioning failed due to an issue
+  /// with one or more of the domains on the certificate. For details of which
+  /// domains failed, consult the `authorization_attempt_info` field.
+  /// - "RATE_LIMITED" : Exceeded Certificate Authority quotas or internal rate
+  /// limits of the system. Provisioning may take longer to complete.
+  core.String? reason;
+
+  ProvisioningIssue({
+    this.details,
+    this.reason,
+  });
+
+  ProvisioningIssue.fromJson(core.Map _json)
+      : this(
+          details: _json.containsKey('details')
+              ? _json['details'] as core.String
+              : null,
+          reason: _json.containsKey('reason')
+              ? _json['reason'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (details != null) 'details': details!,
+        if (reason != null) 'reason': reason!,
+      };
+}
+
+/// Certificate data for a SelfManaged Certificate.
+///
+/// SelfManaged Certificates are uploaded by the user. Updating such
+/// certificates before they expire remains the user's responsibility.
+class SelfManagedCertificate {
+  /// Input only.
+  ///
+  /// The PEM-encoded certificate chain. Leaf certificate comes first, followed
+  /// by intermediate ones if any.
+  core.String? pemCertificate;
+
+  /// Input only.
+  ///
+  /// The PEM-encoded private key of the leaf certificate.
+  core.String? pemPrivateKey;
+
+  SelfManagedCertificate({
+    this.pemCertificate,
+    this.pemPrivateKey,
+  });
+
+  SelfManagedCertificate.fromJson(core.Map _json)
+      : this(
+          pemCertificate: _json.containsKey('pemCertificate')
+              ? _json['pemCertificate'] as core.String
+              : null,
+          pemPrivateKey: _json.containsKey('pemPrivateKey')
+              ? _json['pemPrivateKey'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (pemCertificate != null) 'pemCertificate': pemCertificate!,
+        if (pemPrivateKey != null) 'pemPrivateKey': pemPrivateKey!,
+      };
+}
+
+/// 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).
+typedef Status = $Status;
diff --git a/generated/googleapis/lib/chat/v1.dart b/generated/googleapis/lib/chat/v1.dart
index ea99c29..f8b05bf 100644
--- a/generated/googleapis/lib/chat/v1.dart
+++ b/generated/googleapis/lib/chat/v1.dart
@@ -923,7 +923,7 @@
   ///
   /// [updateMask] - Required. The field paths to be updated, comma separated if
   /// there are multiple. Currently supported field paths: * text * cards *
-  /// gsuite_message_integration_render_data * attachment
+  /// attachment
   ///
   /// [$fields] - Selector specifying which fields to include in a partial
   /// response.
@@ -3605,15 +3605,15 @@
 
   /// A user in Google Chat.
   ///
-  /// Represents a person in the People API. Formatted as `users/person_id`
-  /// where `person_id` is available from the
-  /// [People API](https://developers.google.com/people/api/rest/v1/people).
+  /// Represents a
+  /// [person](https://developers.google.com/people/api/rest/v1/people) in the
+  /// People API. Format: `users/{person}`
   User? member;
   core.String? name;
 
   /// State of the membership.
   ///
-  /// Required for `CreateMembership`. Read-only for other usage.
+  /// Output only.
   /// Possible string values are:
   /// - "MEMBERSHIP_STATE_UNSPECIFIED" : Default, do not use.
   /// - "JOINED" : The user has joined the space.
diff --git a/generated/googleapis/lib/chromemanagement/v1.dart b/generated/googleapis/lib/chromemanagement/v1.dart
index c012f9a..97b343a 100644
--- a/generated/googleapis/lib/chromemanagement/v1.dart
+++ b/generated/googleapis/lib/chromemanagement/v1.dart
@@ -536,8 +536,8 @@
   /// [filter] - Optional. Only include resources that match the filter.
   /// Supported filter fields: - org_unit_id - serial_number
   ///
-  /// [pageSize] - Maximum number of results to return. Maximum and default are
-  /// 100.
+  /// [pageSize] - Maximum number of results to return. Default value is 100.
+  /// Maximum value is 200.
   ///
   /// [pageToken] - Token to specify next page in the list.
   ///
@@ -2883,8 +2883,8 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
diff --git a/generated/googleapis/lib/chromepolicy/v1.dart b/generated/googleapis/lib/chromepolicy/v1.dart
index 21b1e45..ba7d031 100644
--- a/generated/googleapis/lib/chromepolicy/v1.dart
+++ b/generated/googleapis/lib/chromepolicy/v1.dart
@@ -1220,6 +1220,19 @@
 
 /// The resolved value of a policy for a given target.
 class GoogleChromePolicyV1ResolvedPolicy {
+  /// The added source key establishes at which level an entity was explicitly
+  /// added for management.
+  ///
+  /// This is useful for certain type of policies that are only applied if they
+  /// are explicitly added for management. For example: apps and networks. An
+  /// entity can only be deleted from management in an Organizational Unit that
+  /// it was explicitly added to. If this is not present it means that the
+  /// policy is managed without the need to explicitly add an entity, for
+  /// example: standard user or device policies.
+  ///
+  /// Output only.
+  GoogleChromePolicyV1PolicyTargetKey? addedSourceKey;
+
   /// The source resource from which this policy value is obtained.
   ///
   /// May be the same as `targetKey` if the policy is directly modified on the
@@ -1241,6 +1254,7 @@
   GoogleChromePolicyV1PolicyValue? value;
 
   GoogleChromePolicyV1ResolvedPolicy({
+    this.addedSourceKey,
     this.sourceKey,
     this.targetKey,
     this.value,
@@ -1248,6 +1262,11 @@
 
   GoogleChromePolicyV1ResolvedPolicy.fromJson(core.Map _json)
       : this(
+          addedSourceKey: _json.containsKey('addedSourceKey')
+              ? GoogleChromePolicyV1PolicyTargetKey.fromJson(
+                  _json['addedSourceKey']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
           sourceKey: _json.containsKey('sourceKey')
               ? GoogleChromePolicyV1PolicyTargetKey.fromJson(
                   _json['sourceKey'] as core.Map<core.String, core.dynamic>)
@@ -1263,6 +1282,7 @@
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (addedSourceKey != null) 'addedSourceKey': addedSourceKey!,
         if (sourceKey != null) 'sourceKey': sourceKey!,
         if (targetKey != null) 'targetKey': targetKey!,
         if (value != null) 'value': value!,
@@ -1334,10 +1354,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
 
 /// Describes a message type.
diff --git a/generated/googleapis/lib/classroom/v1.dart b/generated/googleapis/lib/classroom/v1.dart
index f58a302..7d80a31 100644
--- a/generated/googleapis/lib/classroom/v1.dart
+++ b/generated/googleapis/lib/classroom/v1.dart
@@ -177,11 +177,13 @@
   /// Creates a course.
   ///
   /// The user specified in `ownerId` is the owner of the created course and
-  /// added as a teacher. This method returns the following error codes: *
-  /// `PERMISSION_DENIED` if the requesting user is not permitted to create
-  /// courses or for access errors. * `NOT_FOUND` if the primary teacher is not
-  /// a valid user. * `FAILED_PRECONDITION` if the course owner's account is
-  /// disabled or for the following request errors: *
+  /// added as a teacher. A non-admin requesting user can only create a course
+  /// with themselves as the owner. Domain admins can create courses owned by
+  /// any user within their domain. This method returns the following error
+  /// codes: * `PERMISSION_DENIED` if the requesting user is not permitted to
+  /// create courses or for access errors. * `NOT_FOUND` if the primary teacher
+  /// is not a valid user. * `FAILED_PRECONDITION` if the course owner's account
+  /// is disabled or for the following request errors: *
   /// UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if an alias was
   /// specified in the `id` and already exists.
   ///
@@ -2139,9 +2141,13 @@
 
   /// Adds a user as a student of a course.
   ///
-  /// This method returns the following error codes: * `PERMISSION_DENIED` if
-  /// the requesting user is not permitted to create students in this course or
-  /// for access errors. * `NOT_FOUND` if the requested course ID does not
+  /// Domain administrators are permitted to
+  /// [directly add](https://developers.google.com/classroom/guides/manage-users)
+  /// users within their domain as students to courses within their domain.
+  /// Students are permitted to add themselves to a course using an enrollment
+  /// code. This method returns the following error codes: * `PERMISSION_DENIED`
+  /// if the requesting user is not permitted to create students in this course
+  /// or for access errors. * `NOT_FOUND` if the requested course ID does not
   /// exist. * `FAILED_PRECONDITION` if the requested user's account is
   /// disabled, for the following request errors: * CourseMemberLimitReached *
   /// CourseNotModifiable * UserGroupsMembershipLimitReached * `ALREADY_EXISTS`
@@ -2353,14 +2359,18 @@
 
   /// Creates a teacher of a course.
   ///
-  /// This method returns the following error codes: * `PERMISSION_DENIED` if
-  /// the requesting user is not permitted to create teachers in this course or
-  /// for access errors. * `NOT_FOUND` if the requested course ID does not
-  /// exist. * `FAILED_PRECONDITION` if the requested user's account is
-  /// disabled, for the following request errors: * CourseMemberLimitReached *
-  /// CourseNotModifiable * CourseTeacherLimitReached *
-  /// UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if the user is already
-  /// a teacher or student in the course.
+  /// Domain administrators are permitted to
+  /// [directly add](https://developers.google.com/classroom/guides/manage-users)
+  /// users within their domain as teachers to courses within their domain.
+  /// Non-admin users should send an Invitation instead. This method returns the
+  /// following error codes: * `PERMISSION_DENIED` if the requesting user is not
+  /// permitted to create teachers in this course or for access errors. *
+  /// `NOT_FOUND` if the requested course ID does not exist. *
+  /// `FAILED_PRECONDITION` if the requested user's account is disabled, for the
+  /// following request errors: * CourseMemberLimitReached * CourseNotModifiable
+  /// * CourseTeacherLimitReached * UserGroupsMembershipLimitReached *
+  /// `ALREADY_EXISTS` if the user is already a teacher or student in the
+  /// course.
   ///
   /// [request] - The metadata request object.
   ///
@@ -4037,6 +4047,12 @@
   /// Read-only.
   core.String? enrollmentCode;
 
+  /// The gradebook settings that specify how a student's overall grade for the
+  /// course will be calculated and who it will be displayed to.
+  ///
+  /// Read-only
+  GradebookSettings? gradebookSettings;
+
   /// Whether or not guardian notifications are enabled for this course.
   ///
   /// Read-only.
@@ -4107,6 +4123,7 @@
     this.description,
     this.descriptionHeading,
     this.enrollmentCode,
+    this.gradebookSettings,
     this.guardiansEnabled,
     this.id,
     this.name,
@@ -4150,6 +4167,10 @@
           enrollmentCode: _json.containsKey('enrollmentCode')
               ? _json['enrollmentCode'] as core.String
               : null,
+          gradebookSettings: _json.containsKey('gradebookSettings')
+              ? GradebookSettings.fromJson(_json['gradebookSettings']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
           guardiansEnabled: _json.containsKey('guardiansEnabled')
               ? _json['guardiansEnabled'] as core.bool
               : null,
@@ -4186,6 +4207,7 @@
         if (descriptionHeading != null)
           'descriptionHeading': descriptionHeading!,
         if (enrollmentCode != null) 'enrollmentCode': enrollmentCode!,
+        if (gradebookSettings != null) 'gradebookSettings': gradebookSettings!,
         if (guardiansEnabled != null) 'guardiansEnabled': guardiansEnabled!,
         if (id != null) 'id': id!,
         if (name != null) 'name': name!,
@@ -4399,6 +4421,12 @@
   /// This must be specified if `due_date` is specified.
   TimeOfDay? dueTime;
 
+  /// The category that this coursework's grade contributes to.
+  ///
+  /// Present only when a category has been chosen for the coursework. May be
+  /// used in calculating the overall grade. Read-only.
+  GradeCategory? gradeCategory;
+
   /// Classroom-assigned identifier of this course work, unique per course.
   ///
   /// Read-only.
@@ -4497,6 +4525,7 @@
     this.description,
     this.dueDate,
     this.dueTime,
+    this.gradeCategory,
     this.id,
     this.individualStudentsOptions,
     this.materials,
@@ -4546,6 +4575,10 @@
               ? TimeOfDay.fromJson(
                   _json['dueTime'] as core.Map<core.String, core.dynamic>)
               : null,
+          gradeCategory: _json.containsKey('gradeCategory')
+              ? GradeCategory.fromJson(
+                  _json['gradeCategory'] as core.Map<core.String, core.dynamic>)
+              : null,
           id: _json.containsKey('id') ? _json['id'] as core.String : null,
           individualStudentsOptions:
               _json.containsKey('individualStudentsOptions')
@@ -4600,6 +4633,7 @@
         if (description != null) 'description': description!,
         if (dueDate != null) 'dueDate': dueDate!,
         if (dueTime != null) 'dueTime': dueTime!,
+        if (gradeCategory != null) 'gradeCategory': gradeCategory!,
         if (id != null) 'id': id!,
         if (individualStudentsOptions != null)
           'individualStudentsOptions': individualStudentsOptions!,
@@ -4822,10 +4856,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// Representation of a Google Drive file.
@@ -5066,6 +5100,58 @@
       };
 }
 
+/// Details for a grade category in a course.
+///
+/// Coursework may have zero or one grade category, and the category may be used
+/// in computing the overall grade. See the
+/// [help center article](https://support.google.com/edu/classroom/answer/9184995)
+/// for details.
+class GradeCategory {
+  /// Default value of denominator.
+  ///
+  /// Only applicable when grade calculation type is TOTAL_POINTS.
+  core.int? defaultGradeDenominator;
+
+  /// ID of the grade category.
+  core.String? id;
+
+  /// Name of the grade category.
+  core.String? name;
+
+  /// The weight of the category average as part of overall average.
+  ///
+  /// A weight of 12.34% is represented as 123400 (100% is 1,000,000). The last
+  /// two digits should always be zero since we use two decimal precision. Only
+  /// applicable when grade calculation type is WEIGHTED_CATEGORIES.
+  core.int? weight;
+
+  GradeCategory({
+    this.defaultGradeDenominator,
+    this.id,
+    this.name,
+    this.weight,
+  });
+
+  GradeCategory.fromJson(core.Map _json)
+      : this(
+          defaultGradeDenominator: _json.containsKey('defaultGradeDenominator')
+              ? _json['defaultGradeDenominator'] as core.int
+              : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          weight:
+              _json.containsKey('weight') ? _json['weight'] as core.int : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (defaultGradeDenominator != null)
+          'defaultGradeDenominator': defaultGradeDenominator!,
+        if (id != null) 'id': id!,
+        if (name != null) 'name': name!,
+        if (weight != null) 'weight': weight!,
+      };
+}
+
 /// The history of each grade on this submission.
 class GradeHistory {
   /// The teacher who made the grade change.
@@ -5127,6 +5213,67 @@
       };
 }
 
+/// The gradebook settings for a course.
+///
+/// See the
+/// [help center article](https://support.google.com/edu/classroom/answer/9184995)
+/// for details.
+class GradebookSettings {
+  /// Indicates how the overall grade is calculated.
+  /// Possible string values are:
+  /// - "CALCULATION_TYPE_UNSPECIFIED" : No method specified. This is never
+  /// returned.
+  /// - "TOTAL_POINTS" : Overall grade is the sum of grades divided by the sum
+  /// of total points regardless of category.
+  /// - "WEIGHTED_CATEGORIES" : Overall grade is the weighted average by
+  /// category.
+  core.String? calculationType;
+
+  /// Indicates who can see the overall grade..
+  /// Possible string values are:
+  /// - "DISPLAY_SETTING_UNSPECIFIED" : No setting specified. This is never
+  /// returned.
+  /// - "SHOW_OVERALL_GRADE" : Shows overall grade in the gradebook and student
+  /// profile to both teachers and students.
+  /// - "HIDE_OVERALL_GRADE" : Does not show overall grade in the gradebook or
+  /// student profile.
+  /// - "SHOW_TEACHERS_ONLY" : Shows the overall grade to teachers in the
+  /// gradebook and student profile. Hides from students in their student
+  /// profile.
+  core.String? displaySetting;
+
+  /// Grade categories that are available for coursework in the course.
+  core.List<GradeCategory>? gradeCategories;
+
+  GradebookSettings({
+    this.calculationType,
+    this.displaySetting,
+    this.gradeCategories,
+  });
+
+  GradebookSettings.fromJson(core.Map _json)
+      : this(
+          calculationType: _json.containsKey('calculationType')
+              ? _json['calculationType'] as core.String
+              : null,
+          displaySetting: _json.containsKey('displaySetting')
+              ? _json['displaySetting'] as core.String
+              : null,
+          gradeCategories: _json.containsKey('gradeCategories')
+              ? (_json['gradeCategories'] as core.List)
+                  .map((value) => GradeCategory.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (calculationType != null) 'calculationType': calculationType!,
+        if (displaySetting != null) 'displaySetting': displaySetting!,
+        if (gradeCategories != null) 'gradeCategories': gradeCategories!,
+      };
+}
+
 /// Association between a student and a guardian of that student.
 ///
 /// The guardian may receive information about the student's course work.
diff --git a/generated/googleapis/lib/cloudasset/v1.dart b/generated/googleapis/lib/cloudasset/v1.dart
index 28d0484..1833a2f 100644
--- a/generated/googleapis/lib/cloudasset/v1.dart
+++ b/generated/googleapis/lib/cloudasset/v1.dart
@@ -74,8 +74,8 @@
   ///
   /// Request parameters:
   ///
-  /// [parent] - Required. Name of the organization or project the assets belong
-  /// to. Format: "organizations/\[organization-number\]" (such as
+  /// [parent] - Required. Name of the organization, folder, or project the
+  /// assets belong to. Format: "organizations/\[organization-number\]" (such as
   /// "organizations/123"), "projects/\[project-id\]" (such as
   /// "projects/my-project-id"), "projects/\[project-number\]" (such as
   /// "projects/12345"), or "folders/\[folder-number\]" (such as
@@ -2180,10 +2180,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// A generic empty message that you can re-use to avoid defining duplicated
@@ -2367,18 +2367,17 @@
   /// updates matching specified asset_names or asset_types are exported to the
   /// feed. Example:
   /// `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
-  /// See
-  /// [Resource Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
-  /// for more info.
+  /// For a list of the full names for supported asset types, see \[Resource
+  /// name format\](/asset-inventory/docs/resource-name-format).
   core.List<core.String>? assetNames;
 
   /// A list of types of the assets to receive updates.
   ///
   /// You must specify either or both of asset_names and asset_types. Only asset
   /// updates matching specified asset_names or asset_types are exported to the
-  /// feed. Example: `"compute.googleapis.com/Disk"` See
-  /// [this topic](https://cloud.google.com/asset-inventory/docs/supported-asset-types)
-  /// for a list of all supported asset types.
+  /// feed. Example: `"compute.googleapis.com/Disk"` For a list of all supported
+  /// asset types, see \[Supported asset
+  /// types\](/asset-inventory/docs/supported-asset-types).
   core.List<core.String>? assetTypes;
 
   /// A condition which determines whether an asset update should be published.
diff --git a/generated/googleapis/lib/cloudbilling/v1.dart b/generated/googleapis/lib/cloudbilling/v1.dart
index 09f2030..1e8fbe7 100644
--- a/generated/googleapis/lib/cloudbilling/v1.dart
+++ b/generated/googleapis/lib/cloudbilling/v1.dart
@@ -1787,7 +1787,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/cloudchannel/v1.dart b/generated/googleapis/lib/cloudchannel/v1.dart
index e7f3476..4043776 100644
--- a/generated/googleapis/lib/cloudchannel/v1.dart
+++ b/generated/googleapis/lib/cloudchannel/v1.dart
@@ -865,6 +865,11 @@
   /// customers from. Parent uses the format: accounts/{account_id}.
   /// Value must have pattern `^accounts/\[^/\]+/channelPartnerLinks/\[^/\]+$`.
   ///
+  /// [filter] - Optional. Filters applied to the
+  /// \[CloudChannelService.ListCustomers\] results. See
+  /// https://cloud.google.com/channel/docs/concepts/google-cloud/filter-customers
+  /// for more information.
+  ///
   /// [pageSize] - Optional. The maximum number of customers to return. The
   /// service may return fewer than this value. If unspecified, returns at most
   /// 10 customers. The maximum value is 50.
@@ -885,11 +890,13 @@
   /// this method will complete with the same error.
   async.Future<GoogleCloudChannelV1ListCustomersResponse> list(
     core.String parent, {
+    core.String? filter,
     core.int? pageSize,
     core.String? pageToken,
     core.String? $fields,
   }) async {
     final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
       if (pageSize != null) 'pageSize': ['${pageSize}'],
       if (pageToken != null) 'pageToken': [pageToken],
       if ($fields != null) 'fields': [$fields],
@@ -1168,6 +1175,11 @@
   /// customers from. Parent uses the format: accounts/{account_id}.
   /// Value must have pattern `^accounts/\[^/\]+$`.
   ///
+  /// [filter] - Optional. Filters applied to the
+  /// \[CloudChannelService.ListCustomers\] results. See
+  /// https://cloud.google.com/channel/docs/concepts/google-cloud/filter-customers
+  /// for more information.
+  ///
   /// [pageSize] - Optional. The maximum number of customers to return. The
   /// service may return fewer than this value. If unspecified, returns at most
   /// 10 customers. The maximum value is 50.
@@ -1188,11 +1200,13 @@
   /// this method will complete with the same error.
   async.Future<GoogleCloudChannelV1ListCustomersResponse> list(
     core.String parent, {
+    core.String? filter,
     core.int? pageSize,
     core.String? pageToken,
     core.String? $fields,
   }) async {
     final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
       if (pageSize != null) 'pageSize': ['${pageSize}'],
       if (pageToken != null) 'pageToken': [pageToken],
       if ($fields != null) 'fields': [$fields],
@@ -5084,7 +5098,8 @@
 
   /// Provisioning ID of the entitlement.
   ///
-  /// For Google Workspace, this would be the underlying Subscription ID.
+  /// For Google Workspace, this is the underlying Subscription ID. For Google
+  /// Cloud Platform, this is the Billing Account ID of the billing subaccount."
   ///
   /// Output only.
   core.String? provisioningId;
@@ -5848,4 +5863,4 @@
 /// be presented with UI elements for input or editing of fields outside
 /// countries where that field is used. For more guidance on how to use this
 /// schema, please see: https://support.google.com/business/answer/6397478
-typedef GoogleTypePostalAddress = $PostalAddress;
+typedef GoogleTypePostalAddress = $PostalAddress00;
diff --git a/generated/googleapis/lib/clouddeploy/v1.dart b/generated/googleapis/lib/clouddeploy/v1.dart
index 9ea3502..f9b5696 100644
--- a/generated/googleapis/lib/clouddeploy/v1.dart
+++ b/generated/googleapis/lib/clouddeploy/v1.dart
@@ -1567,8 +1567,7 @@
   /// Request parameters:
   ///
   /// [name] - Optional. Name of the `Target`. Format is
-  /// projects/{project}/locations/{location}/
-  /// deliveryPipelines/{deliveryPipeline}/targets/a-z{0,62}.
+  /// projects/{project}/locations/{location}/targets/a-z{0,62}.
   /// Value must have pattern
   /// `^projects/\[^/\]+/locations/\[^/\]+/targets/\[^/\]+$`.
   ///
@@ -1733,6 +1732,31 @@
   }
 }
 
+/// Information specifying an Anthos Cluster.
+class AnthosCluster {
+  /// Membership of the GKE Hub-registered cluster to which to apply the
+  /// Skaffold configuration.
+  ///
+  /// Format is
+  /// `projects/{project}/locations/{location}/memberships/{membership_name}`.
+  core.String? membership;
+
+  AnthosCluster({
+    this.membership,
+  });
+
+  AnthosCluster.fromJson(core.Map _json)
+      : this(
+          membership: _json.containsKey('membership')
+              ? _json['membership'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (membership != null) 'membership': membership!,
+      };
+}
+
 /// The request object used by `ApproveRollout`.
 class ApproveRolloutRequest {
   /// True = approve; false = reject
@@ -1977,10 +2001,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// Execution using the default Cloud Build pool.
@@ -2167,6 +2191,15 @@
 
 /// Configuration of the environment to use when calling Skaffold.
 class ExecutionConfig {
+  /// Cloud Storage location in which to store execution outputs.
+  ///
+  /// This can either be a bucket ("gs://my-bucket") or a path within a bucket
+  /// ("gs://my-bucket/my-dir"). If unspecified, a default bucket located in the
+  /// same region will be used.
+  ///
+  /// Optional.
+  core.String? artifactStorage;
+
   /// Use default Cloud Build pool.
   ///
   /// Optional.
@@ -2177,19 +2210,42 @@
   /// Optional.
   PrivatePool? privatePool;
 
+  /// Google service account to use for execution.
+  ///
+  /// If unspecified, the project execution service account
+  /// (-compute@developer.gserviceaccount.com) is used.
+  ///
+  /// Optional.
+  core.String? serviceAccount;
+
   /// Usages when this configuration should be applied.
   ///
   /// Required.
   core.List<core.String>? usages;
 
+  /// The resource name of the `WorkerPool`, with the format
+  /// `projects/{project}/locations/{location}/workerPools/{worker_pool}`.
+  ///
+  /// If this optional field is unspecified, the default Cloud Build pool will
+  /// be used.
+  ///
+  /// Optional.
+  core.String? workerPool;
+
   ExecutionConfig({
+    this.artifactStorage,
     this.defaultPool,
     this.privatePool,
+    this.serviceAccount,
     this.usages,
+    this.workerPool,
   });
 
   ExecutionConfig.fromJson(core.Map _json)
       : this(
+          artifactStorage: _json.containsKey('artifactStorage')
+              ? _json['artifactStorage'] as core.String
+              : null,
           defaultPool: _json.containsKey('defaultPool')
               ? DefaultPool.fromJson(
                   _json['defaultPool'] as core.Map<core.String, core.dynamic>)
@@ -2198,17 +2254,26 @@
               ? PrivatePool.fromJson(
                   _json['privatePool'] as core.Map<core.String, core.dynamic>)
               : null,
+          serviceAccount: _json.containsKey('serviceAccount')
+              ? _json['serviceAccount'] as core.String
+              : null,
           usages: _json.containsKey('usages')
               ? (_json['usages'] as core.List)
                   .map((value) => value as core.String)
                   .toList()
               : null,
+          workerPool: _json.containsKey('workerPool')
+              ? _json['workerPool'] as core.String
+              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (artifactStorage != null) 'artifactStorage': artifactStorage!,
         if (defaultPool != null) 'defaultPool': defaultPool!,
         if (privatePool != null) 'privatePool': privatePool!,
+        if (serviceAccount != null) 'serviceAccount': serviceAccount!,
         if (usages != null) 'usages': usages!,
+        if (workerPool != null) 'workerPool': workerPool!,
       };
 }
 
@@ -2240,8 +2305,21 @@
   /// \`projects/{project_id}/locations/{location_id}/clusters/{cluster_id}.
   core.String? cluster;
 
+  /// If true, `cluster` is accessed using the private IP address of the control
+  /// plane endpoint.
+  ///
+  /// Otherwise, the default IP address of the control plane endpoint is used.
+  /// The default IP address is the private IP address for clusters with private
+  /// control-plane endpoints and the public IP address otherwise. Only specify
+  /// this option when `cluster` is a
+  /// [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept).
+  ///
+  /// Optional.
+  core.bool? internalIp;
+
   GkeCluster({
     this.cluster,
+    this.internalIp,
   });
 
   GkeCluster.fromJson(core.Map _json)
@@ -2249,10 +2327,14 @@
           cluster: _json.containsKey('cluster')
               ? _json['cluster'] as core.String
               : null,
+          internalIp: _json.containsKey('internalIp')
+              ? _json['internalIp'] as core.bool
+              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (cluster != null) 'cluster': cluster!,
+        if (internalIp != null) 'internalIp': internalIp!,
       };
 }
 
@@ -2917,7 +2999,7 @@
   /// Output only.
   core.Map<core.String, TargetRender>? targetRenders;
 
-  /// Snapshot of the parent pipeline's targets taken at release creation time.
+  /// Snapshot of the targets taken at release creation time.
   ///
   /// Output only.
   core.List<Target>? targetSnapshots;
@@ -3401,9 +3483,9 @@
   ///
   /// This field refers exclusively to the last segment of a target name. For
   /// example, this field would just be `my-target` (rather than
-  /// `projects/project/deliveryPipelines/pipeline/targets/my-target`). The
-  /// parent `DeliveryPipeline` of the `Target` is inferred to be the parent
-  /// `DeliveryPipeline` of the `Release` in which this `Stage` lives.
+  /// `projects/project/locations/location/targets/my-target`). The location of
+  /// the `Target` is inferred to be the same as the location of the
+  /// `DeliveryPipeline` that contains this `Stage`.
   core.String? targetId;
 
   Stage({
@@ -3452,6 +3534,9 @@
   /// Optional.
   core.Map<core.String, core.String>? annotations;
 
+  /// Information specifying an Anthos Cluster.
+  AnthosCluster? anthosCluster;
+
   /// Time at which the `Target` was created.
   ///
   /// Output only.
@@ -3498,8 +3583,7 @@
 
   /// Name of the `Target`.
   ///
-  /// Format is projects/{project}/locations/{location}/
-  /// deliveryPipelines/{deliveryPipeline}/targets/a-z{0,62}.
+  /// Format is projects/{project}/locations/{location}/targets/a-z{0,62}.
   ///
   /// Optional.
   core.String? name;
@@ -3526,6 +3610,7 @@
 
   Target({
     this.annotations,
+    this.anthosCluster,
     this.createTime,
     this.description,
     this.etag,
@@ -3550,6 +3635,10 @@
                   ),
                 )
               : null,
+          anthosCluster: _json.containsKey('anthosCluster')
+              ? AnthosCluster.fromJson(
+                  _json['anthosCluster'] as core.Map<core.String, core.dynamic>)
+              : null,
           createTime: _json.containsKey('createTime')
               ? _json['createTime'] as core.String
               : null,
@@ -3590,6 +3679,7 @@
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (annotations != null) 'annotations': annotations!,
+        if (anthosCluster != null) 'anthosCluster': anthosCluster!,
         if (createTime != null) 'createTime': createTime!,
         if (description != null) 'description': description!,
         if (etag != null) 'etag': etag!,
@@ -3756,7 +3846,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/cloudfunctions/v1.dart b/generated/googleapis/lib/cloudfunctions/v1.dart
index 6cfbbf5..ef6daf9 100644
--- a/generated/googleapis/lib/cloudfunctions/v1.dart
+++ b/generated/googleapis/lib/cloudfunctions/v1.dart
@@ -1007,6 +1007,23 @@
   /// User-provided description of a function.
   core.String? description;
 
+  /// Docker Registry to use for this deployment.
+  ///
+  /// If `docker_repository` field is specified, this field will be
+  /// automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently
+  /// defaults to `CONTAINER_REGISTRY`. This field may be overridden by the
+  /// backend for eligible deployments.
+  /// Possible string values are:
+  /// - "DOCKER_REGISTRY_UNSPECIFIED" : Unspecified.
+  /// - "CONTAINER_REGISTRY" : Docker images will be stored in multi-regional
+  /// Container Registry repositories named `gcf`.
+  /// - "ARTIFACT_REGISTRY" : Docker images will be stored in regional Artifact
+  /// Registry repositories. By default, GCF will create and use repositories
+  /// named `gcf-artifacts` in every region in which a function is deployed. But
+  /// the repository to use can also be specified by the user using the
+  /// `docker_repository` field.
+  core.String? dockerRegistry;
+
   /// User managed repository created in Artifact Registry optionally with a
   /// customer managed encryption key.
   ///
@@ -1212,6 +1229,7 @@
     this.buildName,
     this.buildWorkerPool,
     this.description,
+    this.dockerRegistry,
     this.dockerRepository,
     this.entryPoint,
     this.environmentVariables,
@@ -1268,6 +1286,9 @@
           description: _json.containsKey('description')
               ? _json['description'] as core.String
               : null,
+          dockerRegistry: _json.containsKey('dockerRegistry')
+              ? _json['dockerRegistry'] as core.String
+              : null,
           dockerRepository: _json.containsKey('dockerRepository')
               ? _json['dockerRepository'] as core.String
               : null,
@@ -1377,6 +1398,7 @@
         if (buildName != null) 'buildName': buildName!,
         if (buildWorkerPool != null) 'buildWorkerPool': buildWorkerPool!,
         if (description != null) 'description': description!,
+        if (dockerRegistry != null) 'dockerRegistry': dockerRegistry!,
         if (dockerRepository != null) 'dockerRepository': dockerRepository!,
         if (entryPoint != null) 'entryPoint': entryPoint!,
         if (environmentVariables != null)
@@ -2204,7 +2226,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/cloudidentity/v1.dart b/generated/googleapis/lib/cloudidentity/v1.dart
index 99cc4e6..19529c2 100644
--- a/generated/googleapis/lib/cloudidentity/v1.dart
+++ b/generated/googleapis/lib/cloudidentity/v1.dart
@@ -3191,7 +3191,7 @@
 
   /// The `EntityKey` of the `Group`.
   ///
-  /// Required. Immutable.
+  /// Required.
   EntityKey? groupKey;
 
   /// One or more label entries that apply to the Group.
diff --git a/generated/googleapis/lib/cloudiot/v1.dart b/generated/googleapis/lib/cloudiot/v1.dart
index 0d37d2e..a9fa1a6 100644
--- a/generated/googleapis/lib/cloudiot/v1.dart
+++ b/generated/googleapis/lib/cloudiot/v1.dart
@@ -2677,7 +2677,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/cloudkms/v1.dart b/generated/googleapis/lib/cloudkms/v1.dart
index 185cd41..2696891 100644
--- a/generated/googleapis/lib/cloudkms/v1.dart
+++ b/generated/googleapis/lib/cloudkms/v1.dart
@@ -224,6 +224,90 @@
   ProjectsLocationsEkmConnectionsResource(commons.ApiRequester client)
       : _requester = client;
 
+  /// Creates a new EkmConnection in a given Project and Location.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the location associated with the
+  /// EkmConnection, in the format `projects / * /locations / * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [ekmConnectionId] - Required. It must be unique within a location and
+  /// match the regular expression `[a-zA-Z0-9_-]{1,63}`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [EkmConnection].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<EkmConnection> create(
+    EkmConnection request,
+    core.String parent, {
+    core.String? ekmConnectionId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (ekmConnectionId != null) 'ekmConnectionId': [ekmConnectionId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/ekmConnections';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return EkmConnection.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns metadata for a given EkmConnection.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the EkmConnection to get.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/ekmConnections/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [EkmConnection].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<EkmConnection> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return EkmConnection.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
   /// Gets the access control policy for a resource.
   ///
   /// Returns an empty policy if the resource exists and does not have a policy
@@ -280,6 +364,116 @@
     return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
   }
 
+  /// Lists EkmConnections.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the location associated with the
+  /// EkmConnections to list, in the format `projects / * /locations / * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. Only include resources that match the filter in the
+  /// response. For more information, see
+  /// [Sorting and filtering list results](https://cloud.google.com/kms/docs/sorting-and-filtering).
+  ///
+  /// [orderBy] - Optional. Specify how the results should be sorted. If not
+  /// specified, the results will be sorted in the default order. For more
+  /// information, see
+  /// [Sorting and filtering list results](https://cloud.google.com/kms/docs/sorting-and-filtering).
+  ///
+  /// [pageSize] - Optional. Optional limit on the number of EkmConnections to
+  /// include in the response. Further EkmConnections can subsequently be
+  /// obtained by including the ListEkmConnectionsResponse.next_page_token in a
+  /// subsequent request. If unspecified, the server will pick an appropriate
+  /// default.
+  ///
+  /// [pageToken] - Optional. Optional pagination token, returned earlier via
+  /// ListEkmConnectionsResponse.next_page_token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListEkmConnectionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListEkmConnectionsResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/ekmConnections';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListEkmConnectionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates an EkmConnection's metadata.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The resource name for the EkmConnection in the
+  /// format `projects / * /locations / * /ekmConnections / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/ekmConnections/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. List of fields to be updated in this request.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [EkmConnection].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<EkmConnection> patch(
+    EkmConnection request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return EkmConnection.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
   /// Sets the access control policy on the specified resource.
   ///
   /// Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`,
@@ -2164,6 +2358,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   /// Integrity verification field.
@@ -2312,6 +2508,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   /// The created signature.
@@ -2536,6 +2734,133 @@
       };
 }
 
+/// A Certificate represents an X.509 certificate used to authenticate HTTPS
+/// connections to EKM replicas.
+class Certificate {
+  /// The issuer distinguished name in RFC 2253 format.
+  ///
+  /// Only present if parsed is true.
+  ///
+  /// Output only.
+  core.String? issuer;
+
+  /// The certificate is not valid after this time.
+  ///
+  /// Only present if parsed is true.
+  ///
+  /// Output only.
+  core.String? notAfterTime;
+
+  /// The certificate is not valid before this time.
+  ///
+  /// Only present if parsed is true.
+  ///
+  /// Output only.
+  core.String? notBeforeTime;
+
+  /// True if the certificate was parsed successfully.
+  ///
+  /// Output only.
+  core.bool? parsed;
+
+  /// The raw certificate bytes in DER format.
+  ///
+  /// Required.
+  core.String? rawDer;
+  core.List<core.int> get rawDerAsBytes => convert.base64.decode(rawDer!);
+
+  set rawDerAsBytes(core.List<core.int> _bytes) {
+    rawDer =
+        convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
+  }
+
+  /// The certificate serial number as a hex string.
+  ///
+  /// Only present if parsed is true.
+  ///
+  /// Output only.
+  core.String? serialNumber;
+
+  /// The SHA-256 certificate fingerprint as a hex string.
+  ///
+  /// Only present if parsed is true.
+  ///
+  /// Output only.
+  core.String? sha256Fingerprint;
+
+  /// The subject distinguished name in RFC 2253 format.
+  ///
+  /// Only present if parsed is true.
+  ///
+  /// Output only.
+  core.String? subject;
+
+  /// The subject Alternative DNS names.
+  ///
+  /// Only present if parsed is true.
+  ///
+  /// Output only.
+  core.List<core.String>? subjectAlternativeDnsNames;
+
+  Certificate({
+    this.issuer,
+    this.notAfterTime,
+    this.notBeforeTime,
+    this.parsed,
+    this.rawDer,
+    this.serialNumber,
+    this.sha256Fingerprint,
+    this.subject,
+    this.subjectAlternativeDnsNames,
+  });
+
+  Certificate.fromJson(core.Map _json)
+      : this(
+          issuer: _json.containsKey('issuer')
+              ? _json['issuer'] as core.String
+              : null,
+          notAfterTime: _json.containsKey('notAfterTime')
+              ? _json['notAfterTime'] as core.String
+              : null,
+          notBeforeTime: _json.containsKey('notBeforeTime')
+              ? _json['notBeforeTime'] as core.String
+              : null,
+          parsed:
+              _json.containsKey('parsed') ? _json['parsed'] as core.bool : null,
+          rawDer: _json.containsKey('rawDer')
+              ? _json['rawDer'] as core.String
+              : null,
+          serialNumber: _json.containsKey('serialNumber')
+              ? _json['serialNumber'] as core.String
+              : null,
+          sha256Fingerprint: _json.containsKey('sha256Fingerprint')
+              ? _json['sha256Fingerprint'] as core.String
+              : null,
+          subject: _json.containsKey('subject')
+              ? _json['subject'] as core.String
+              : null,
+          subjectAlternativeDnsNames:
+              _json.containsKey('subjectAlternativeDnsNames')
+                  ? (_json['subjectAlternativeDnsNames'] as core.List)
+                      .map((value) => value as core.String)
+                      .toList()
+                  : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (issuer != null) 'issuer': issuer!,
+        if (notAfterTime != null) 'notAfterTime': notAfterTime!,
+        if (notBeforeTime != null) 'notBeforeTime': notBeforeTime!,
+        if (parsed != null) 'parsed': parsed!,
+        if (rawDer != null) 'rawDer': rawDer!,
+        if (serialNumber != null) 'serialNumber': serialNumber!,
+        if (sha256Fingerprint != null) 'sha256Fingerprint': sha256Fingerprint!,
+        if (subject != null) 'subject': subject!,
+        if (subjectAlternativeDnsNames != null)
+          'subjectAlternativeDnsNames': subjectAlternativeDnsNames!,
+      };
+}
+
 /// Certificate chains needed to verify the attestation.
 ///
 /// Certificates in chains are PEM-encoded and are ordered based on
@@ -2594,6 +2919,18 @@
   /// Output only.
   core.String? createTime;
 
+  /// The resource name of the backend environment where the key material for
+  /// all CryptoKeyVersions associated with this CryptoKey reside and where all
+  /// related cryptographic operations are performed.
+  ///
+  /// Only applicable if CryptoKeyVersions have a ProtectionLevel of
+  /// EXTERNAL_VPC, with the resource name in the format `projects / *
+  /// /locations / * /ekmConnections / * `. Note, this list is non-exhaustive
+  /// and may apply to additional ProtectionLevels in the future.
+  ///
+  /// Immutable.
+  core.String? cryptoKeyBackend;
+
   /// The period of time that versions of this key spend in the
   /// DESTROY_SCHEDULED state before transitioning to DESTROYED.
   ///
@@ -2669,6 +3006,7 @@
 
   CryptoKey({
     this.createTime,
+    this.cryptoKeyBackend,
     this.destroyScheduledDuration,
     this.importOnly,
     this.labels,
@@ -2685,6 +3023,9 @@
           createTime: _json.containsKey('createTime')
               ? _json['createTime'] as core.String
               : null,
+          cryptoKeyBackend: _json.containsKey('cryptoKeyBackend')
+              ? _json['cryptoKeyBackend'] as core.String
+              : null,
           destroyScheduledDuration:
               _json.containsKey('destroyScheduledDuration')
                   ? _json['destroyScheduledDuration'] as core.String
@@ -2722,6 +3063,7 @@
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (createTime != null) 'createTime': createTime!,
+        if (cryptoKeyBackend != null) 'cryptoKeyBackend': cryptoKeyBackend!,
         if (destroyScheduledDuration != null)
           'destroyScheduledDuration': destroyScheduledDuration!,
         if (importOnly != null) 'importOnly': importOnly!,
@@ -2828,7 +3170,7 @@
 
   /// ExternalProtectionLevelOptions stores a group of additional fields for
   /// configuring a CryptoKeyVersion that are specific to the EXTERNAL
-  /// protection level.
+  /// protection level and EXTERNAL_VPC protection levels.
   ExternalProtectionLevelOptions? externalProtectionLevelOptions;
 
   /// The time this CryptoKeyVersion's key material was generated.
@@ -2872,6 +3214,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   /// Whether or not this key version is eligible for reimport, by being
@@ -3058,6 +3402,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   CryptoKeyVersionTemplate({
@@ -3211,6 +3557,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   /// Whether the Decryption was performed using the primary key version.
@@ -3305,6 +3653,64 @@
       };
 }
 
+/// An EkmConnection represents an individual EKM connection.
+///
+/// It can be used for creating CryptoKeys and CryptoKeyVersions with a
+/// ProtectionLevel of EXTERNAL_VPC, as well as performing cryptographic
+/// operations using keys created within the EkmConnection.
+class EkmConnection {
+  /// The time at which the EkmConnection was created.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// This checksum is computed by the server based on the value of other
+  /// fields, and may be sent on update requests to ensure the client has an
+  /// up-to-date value before proceeding.
+  core.String? etag;
+
+  /// The resource name for the EkmConnection in the format `projects / *
+  /// /locations / * /ekmConnections / * `.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// A list of ServiceResolvers where the EKM can be reached.
+  ///
+  /// There should be one ServiceResolver per EKM replica. Currently, only a
+  /// single ServiceResolver is supported.
+  core.List<ServiceResolver>? serviceResolvers;
+
+  EkmConnection({
+    this.createTime,
+    this.etag,
+    this.name,
+    this.serviceResolvers,
+  });
+
+  EkmConnection.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          etag: _json.containsKey('etag') ? _json['etag'] as core.String : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          serviceResolvers: _json.containsKey('serviceResolvers')
+              ? (_json['serviceResolvers'] as core.List)
+                  .map((value) => ServiceResolver.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (etag != null) 'etag': etag!,
+        if (name != null) 'name': name!,
+        if (serviceResolvers != null) 'serviceResolvers': serviceResolvers!,
+      };
+}
+
 /// Request message for KeyManagementService.Encrypt.
 class EncryptRequest {
   /// Optional data that, if specified, must also be provided during decryption
@@ -3450,6 +3856,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   /// Integrity verification field.
@@ -3540,23 +3948,35 @@
 
 /// ExternalProtectionLevelOptions stores a group of additional fields for
 /// configuring a CryptoKeyVersion that are specific to the EXTERNAL protection
-/// level.
+/// level and EXTERNAL_VPC protection levels.
 class ExternalProtectionLevelOptions {
+  /// The path to the external key material on the EKM when using EkmConnection
+  /// e.g., "v0/my/key".
+  ///
+  /// Set this field instead of external_key_uri when using an EkmConnection.
+  core.String? ekmConnectionKeyPath;
+
   /// The URI for an external resource that this CryptoKeyVersion represents.
   core.String? externalKeyUri;
 
   ExternalProtectionLevelOptions({
+    this.ekmConnectionKeyPath,
     this.externalKeyUri,
   });
 
   ExternalProtectionLevelOptions.fromJson(core.Map _json)
       : this(
+          ekmConnectionKeyPath: _json.containsKey('ekmConnectionKeyPath')
+              ? _json['ekmConnectionKeyPath'] as core.String
+              : null,
           externalKeyUri: _json.containsKey('externalKeyUri')
               ? _json['externalKeyUri'] as core.String
               : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (ekmConnectionKeyPath != null)
+          'ekmConnectionKeyPath': ekmConnectionKeyPath!,
         if (externalKeyUri != null) 'externalKeyUri': externalKeyUri!,
       };
 }
@@ -3576,6 +3996,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   GenerateRandomBytesRequest({
@@ -3862,6 +4284,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   /// The public key with which to wrap key material prior to import.
@@ -4124,6 +4548,49 @@
       };
 }
 
+/// Response message for KeyManagementService.ListEkmConnections.
+class ListEkmConnectionsResponse {
+  /// The list of EkmConnections.
+  core.List<EkmConnection>? ekmConnections;
+
+  /// A token to retrieve next page of results.
+  ///
+  /// Pass this value in ListEkmConnectionsRequest.page_token to retrieve the
+  /// next page of results.
+  core.String? nextPageToken;
+
+  /// The total number of EkmConnections that matched the query.
+  core.int? totalSize;
+
+  ListEkmConnectionsResponse({
+    this.ekmConnections,
+    this.nextPageToken,
+    this.totalSize,
+  });
+
+  ListEkmConnectionsResponse.fromJson(core.Map _json)
+      : this(
+          ekmConnections: _json.containsKey('ekmConnections')
+              ? (_json['ekmConnections'] as core.List)
+                  .map((value) => EkmConnection.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          totalSize: _json.containsKey('totalSize')
+              ? _json['totalSize'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (ekmConnections != null) 'ekmConnections': ekmConnections!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (totalSize != null) 'totalSize': totalSize!,
+      };
+}
+
 /// Response message for KeyManagementService.ListImportJobs.
 class ListImportJobsResponse {
   /// The list of ImportJobs.
@@ -4332,6 +4799,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   /// Integrity verification field.
@@ -4477,6 +4946,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   /// This field indicates whether or not the verification operation for
@@ -4765,6 +5236,8 @@
   /// - "SOFTWARE" : Crypto operations are performed in software.
   /// - "HSM" : Crypto operations are performed in a Hardware Security Module.
   /// - "EXTERNAL" : Crypto operations are performed by an external key manager.
+  /// - "EXTERNAL_VPC" : Crypto operations are performed in an EKM-over-VPC
+  /// backend.
   core.String? protectionLevel;
 
   PublicKey({
@@ -4802,6 +5275,75 @@
 /// Request message for KeyManagementService.RestoreCryptoKeyVersion.
 typedef RestoreCryptoKeyVersionRequest = $Empty;
 
+/// A ServiceResolver represents an EKM replica that can be reached within an
+/// EkmConnection.
+class ServiceResolver {
+  /// The filter applied to the endpoints of the resolved service.
+  ///
+  /// If no filter is specified, all endpoints will be considered. An endpoint
+  /// will be chosen arbitrarily from the filtered list for each request. For
+  /// endpoint filter syntax and examples, see
+  /// https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest.
+  ///
+  /// Optional.
+  core.String? endpointFilter;
+
+  /// The hostname of the EKM replica used at TLS and HTTP layers.
+  ///
+  /// Required.
+  core.String? hostname;
+
+  /// A list of leaf server certificates used to authenticate HTTPS connections
+  /// to the EKM replica.
+  ///
+  /// Currently, a maximum of 10 Certificate is supported.
+  ///
+  /// Required.
+  core.List<Certificate>? serverCertificates;
+
+  /// The resource name of the Service Directory service pointing to an EKM
+  /// replica, in the format `projects / * /locations / * /namespaces / *
+  /// /services / * `.
+  ///
+  /// Required.
+  core.String? serviceDirectoryService;
+
+  ServiceResolver({
+    this.endpointFilter,
+    this.hostname,
+    this.serverCertificates,
+    this.serviceDirectoryService,
+  });
+
+  ServiceResolver.fromJson(core.Map _json)
+      : this(
+          endpointFilter: _json.containsKey('endpointFilter')
+              ? _json['endpointFilter'] as core.String
+              : null,
+          hostname: _json.containsKey('hostname')
+              ? _json['hostname'] as core.String
+              : null,
+          serverCertificates: _json.containsKey('serverCertificates')
+              ? (_json['serverCertificates'] as core.List)
+                  .map((value) => Certificate.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          serviceDirectoryService: _json.containsKey('serviceDirectoryService')
+              ? _json['serviceDirectoryService'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (endpointFilter != null) 'endpointFilter': endpointFilter!,
+        if (hostname != null) 'hostname': hostname!,
+        if (serverCertificates != null)
+          'serverCertificates': serverCertificates!,
+        if (serviceDirectoryService != null)
+          'serviceDirectoryService': serviceDirectoryService!,
+      };
+}
+
 /// Request message for `SetIamPolicy` method.
 class SetIamPolicyRequest {
   /// REQUIRED: The complete policy to be applied to the `resource`.
@@ -4840,7 +5382,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/cloudresourcemanager/v1.dart b/generated/googleapis/lib/cloudresourcemanager/v1.dart
index 30c0a5b..7fbc7fe 100644
--- a/generated/googleapis/lib/cloudresourcemanager/v1.dart
+++ b/generated/googleapis/lib/cloudresourcemanager/v1.dart
@@ -3205,7 +3205,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/cloudresourcemanager/v2.dart b/generated/googleapis/lib/cloudresourcemanager/v2.dart
index 66a4322..e8fee41 100644
--- a/generated/googleapis/lib/cloudresourcemanager/v2.dart
+++ b/generated/googleapis/lib/cloudresourcemanager/v2.dart
@@ -1321,7 +1321,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/cloudresourcemanager/v3.dart b/generated/googleapis/lib/cloudresourcemanager/v3.dart
index bf66280..f0795cc 100644
--- a/generated/googleapis/lib/cloudresourcemanager/v3.dart
+++ b/generated/googleapis/lib/cloudresourcemanager/v3.dart
@@ -4073,7 +4073,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/cloudsearch/v1.dart b/generated/googleapis/lib/cloudsearch/v1.dart
index 9a7ed4e..61c8ac1 100644
--- a/generated/googleapis/lib/cloudsearch/v1.dart
+++ b/generated/googleapis/lib/cloudsearch/v1.dart
@@ -674,9 +674,9 @@
   /// the queued Item using lexical ordering. Cloud Search Indexing won't delete
   /// any queued item with a version value that is less than or equal to the
   /// version of the currently indexed item. The maximum length for this field
-  /// is 1024 bytes. See
-  /// [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations)
-  /// to understand how item version affects reindexing after delete item.
+  /// is 1024 bytes. For information on how item version affects the deletion
+  /// process, refer to
+  /// [Handle revisions after manual deletes](https://developers.google.com/cloud-search/docs/guides/operations).
   ///
   /// [$fields] - Selector specifying which fields to include in a partial
   /// response.
@@ -4976,9 +4976,9 @@
   ///
   /// Cloud Search Indexing won't index or delete any queued item with a version
   /// value that is less than or equal to the version of the currently indexed
-  /// item. The maximum length for this field is 1024 bytes. See
-  /// [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations)
-  /// to understand how item version affects reindexing after delete item.
+  /// item. The maximum length for this field is 1024 bytes. For information on
+  /// how item version affects the deletion process, refer to
+  /// [Handle revisions after manual deletes](https://developers.google.com/cloud-search/docs/guides/operations).
   ///
   /// Required.
   core.String? version;
@@ -5333,8 +5333,8 @@
 
   /// Link to the source repository serving the data.
   ///
-  /// Search results apply this link to the title. Whitespace or special
-  /// characters may cause Cloud Search result links to trigger a redirect
+  /// Seach results apply this link to the title. Whitespace or special
+  /// characters may cause Cloud Seach result links to trigger a redirect
   /// notice; to avoid this, encode the URL. The maximum length is 2048
   /// characters.
   core.String? sourceRepositoryUrl;
@@ -8005,7 +8005,7 @@
   /// The raw query string.
   ///
   /// See supported search operators in the
-  /// [Cloud search Cheat Sheet](https://support.google.com/a/users/answer/9299929)
+  /// [Narrow your search with operators](https://support.google.com/cloudsearch/answer/6172299)
   core.String? query;
 
   /// Options to interpret the user query.
@@ -9146,8 +9146,8 @@
 
 /// Represents an upload session reference.
 ///
-/// This reference is created via upload method. UploadItemRef may be used upto
-/// 30 days since creation. Updating of item content may refer to this uploaded
+/// This reference is created via upload method. This reference is valid for 30
+/// days after its creation. Updating of item content may refer to this uploaded
 /// content via contentDataRef.
 class UploadItemRef {
   /// Name of the content reference.
diff --git a/generated/googleapis/lib/cloudtasks/v2.dart b/generated/googleapis/lib/cloudtasks/v2.dart
index 95106c5..2212bcd 100644
--- a/generated/googleapis/lib/cloudtasks/v2.dart
+++ b/generated/googleapis/lib/cloudtasks/v2.dart
@@ -2566,7 +2566,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/composer/v1.dart b/generated/googleapis/lib/composer/v1.dart
index bb68b3b..0195060 100644
--- a/generated/googleapis/lib/composer/v1.dart
+++ b/generated/googleapis/lib/composer/v1.dart
@@ -659,10 +659,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// A generic empty message that you can re-use to avoid defining duplicated
@@ -1636,6 +1636,14 @@
 /// The configuration information for configuring a Private IP Cloud Composer
 /// environment.
 class PrivateEnvironmentConfig {
+  /// When specified, the environment will use Private Service Connect instead
+  /// of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC
+  /// endpoint in the Customer Project will use an IP address from this
+  /// subnetwork.
+  ///
+  /// Optional.
+  core.String? cloudComposerConnectionSubnetwork;
+
   /// The CIDR block from which IP range for Cloud Composer Network in tenant
   /// project will be reserved.
   ///
@@ -1695,6 +1703,7 @@
   core.String? webServerIpv4ReservedRange;
 
   PrivateEnvironmentConfig({
+    this.cloudComposerConnectionSubnetwork,
     this.cloudComposerNetworkIpv4CidrBlock,
     this.cloudComposerNetworkIpv4ReservedRange,
     this.cloudSqlIpv4CidrBlock,
@@ -1706,6 +1715,10 @@
 
   PrivateEnvironmentConfig.fromJson(core.Map _json)
       : this(
+          cloudComposerConnectionSubnetwork:
+              _json.containsKey('cloudComposerConnectionSubnetwork')
+                  ? _json['cloudComposerConnectionSubnetwork'] as core.String
+                  : null,
           cloudComposerNetworkIpv4CidrBlock:
               _json.containsKey('cloudComposerNetworkIpv4CidrBlock')
                   ? _json['cloudComposerNetworkIpv4CidrBlock'] as core.String
@@ -1735,6 +1748,9 @@
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (cloudComposerConnectionSubnetwork != null)
+          'cloudComposerConnectionSubnetwork':
+              cloudComposerConnectionSubnetwork!,
         if (cloudComposerNetworkIpv4CidrBlock != null)
           'cloudComposerNetworkIpv4CidrBlock':
               cloudComposerNetworkIpv4CidrBlock!,
diff --git a/generated/googleapis/lib/compute/v1.dart b/generated/googleapis/lib/compute/v1.dart
index e39bd21..e2587c1 100644
--- a/generated/googleapis/lib/compute/v1.dart
+++ b/generated/googleapis/lib/compute/v1.dart
@@ -14557,6 +14557,71 @@
     return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
   }
 
+  /// Resumes an instance that was suspended using the instances().suspend
+  /// method.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// `(?:(?:\[-a-z0-9\]{1,63}\.)*(?:\[a-z\](?:\[-a-z0-9\]{0,61}\[a-z0-9\])?):)?(?:\[0-9\]{1,19}|(?:\[a-z0-9\](?:\[-a-z0-9\]{0,61}\[a-z0-9\])?))`.
+  ///
+  /// [zone] - The name of the zone for this request.
+  /// Value must have pattern `\[a-z\](?:\[-a-z0-9\]{0,61}\[a-z0-9\])?`.
+  ///
+  /// [instance] - Name of the instance resource to resume.
+  /// Value must have pattern
+  /// `\[a-z\](?:\[-a-z0-9\]{0,61}\[a-z0-9\])?|\[1-9\]\[0-9\]{0,19}`.
+  ///
+  /// [requestId] - An optional request ID to identify requests. Specify a
+  /// unique request ID so that if you must retry your request, the server will
+  /// know to ignore the request if it has already been completed. For example,
+  /// consider a situation where you make an initial request and the request
+  /// times out. If you make the request again with the same request ID, the
+  /// server can check if original operation with the same request ID was
+  /// received, and if so, will ignore the second request. This prevents clients
+  /// from accidentally creating duplicate commitments. The request ID must be a
+  /// valid UUID with the exception that zero UUID is not supported (
+  /// 00000000-0000-0000-0000-000000000000).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> resume(
+    core.String project,
+    core.String zone,
+    core.String instance, {
+    core.String? requestId,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (requestId != null) 'requestId': [requestId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'projects/' +
+        commons.escapeVariable('$project') +
+        '/zones/' +
+        commons.escapeVariable('$zone') +
+        '/instances/' +
+        commons.escapeVariable('$instance') +
+        '/resume';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
   /// Sends diagnostic interrupt to the instance.
   ///
   /// Request parameters:
@@ -15166,7 +15231,8 @@
   ///
   /// You can only call this method on a stopped instance, that is, a VM
   /// instance that is in a `TERMINATED` state. See Instance Life Cycle for more
-  /// information on the possible instance states.
+  /// information on the possible instance states. For more information about
+  /// setting scheduling options for a VM, see Set VM availability policies.
   ///
   /// [request] - The metadata request object.
   ///
@@ -15449,7 +15515,9 @@
     return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
   }
 
-  /// Simulates a maintenance event on the instance.
+  /// Simulates a host maintenance event on a VM.
+  ///
+  /// For more information, see Simulate a host maintenance event.
   ///
   /// Request parameters:
   ///
@@ -15707,6 +15775,77 @@
     return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
   }
 
+  /// This method suspends a running instance, saving its state to persistent
+  /// storage, and allows you to resume the instance at a later time.
+  ///
+  /// Suspended instances have no compute costs (cores or RAM), and incur only
+  /// storage charges for the saved VM memory and localSSD data. Any charged
+  /// resources the virtual machine was using, such as persistent disks and
+  /// static IP addresses, will continue to be charged while the instance is
+  /// suspended. For more information, see Suspending and resuming an instance.
+  ///
+  /// Request parameters:
+  ///
+  /// [project] - Project ID for this request.
+  /// Value must have pattern
+  /// `(?:(?:\[-a-z0-9\]{1,63}\.)*(?:\[a-z\](?:\[-a-z0-9\]{0,61}\[a-z0-9\])?):)?(?:\[0-9\]{1,19}|(?:\[a-z0-9\](?:\[-a-z0-9\]{0,61}\[a-z0-9\])?))`.
+  ///
+  /// [zone] - The name of the zone for this request.
+  /// Value must have pattern `\[a-z\](?:\[-a-z0-9\]{0,61}\[a-z0-9\])?`.
+  ///
+  /// [instance] - Name of the instance resource to suspend.
+  /// Value must have pattern
+  /// `\[a-z\](?:\[-a-z0-9\]{0,61}\[a-z0-9\])?|\[1-9\]\[0-9\]{0,19}`.
+  ///
+  /// [requestId] - An optional request ID to identify requests. Specify a
+  /// unique request ID so that if you must retry your request, the server will
+  /// know to ignore the request if it has already been completed. For example,
+  /// consider a situation where you make an initial request and the request
+  /// times out. If you make the request again with the same request ID, the
+  /// server can check if original operation with the same request ID was
+  /// received, and if so, will ignore the second request. This prevents clients
+  /// from accidentally creating duplicate commitments. The request ID must be a
+  /// valid UUID with the exception that zero UUID is not supported (
+  /// 00000000-0000-0000-0000-000000000000).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> suspend(
+    core.String project,
+    core.String zone,
+    core.String instance, {
+    core.String? requestId,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (requestId != null) 'requestId': [requestId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'projects/' +
+        commons.escapeVariable('$project') +
+        '/zones/' +
+        commons.escapeVariable('$zone') +
+        '/instances/' +
+        commons.escapeVariable('$instance') +
+        '/suspend';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
   /// Returns permissions that a caller has on the specified resource.
   ///
   /// [request] - The metadata request object.
@@ -47840,12 +47979,10 @@
   /// Output only.
   core.String? securityPolicy;
 
-  /// This field specifies the security policy that applies to this backend
+  /// This field specifies the security settings that apply to this backend
   /// service.
   ///
-  /// This field is applicable to either: - A regional backend service with the
-  /// service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme
-  /// set to INTERNAL_MANAGED. - A global backend service with the
+  /// This field is applicable to a global backend service with the
   /// load_balancing_scheme set to INTERNAL_SELF_MANAGED.
   SecuritySettings? securitySettings;
 
@@ -90478,7 +90615,7 @@
   ///
   /// For standard instances, the default behavior is MIGRATE. For preemptible
   /// instances, the default and only possible behavior is TERMINATE. For more
-  /// information, see Setting Instance Scheduling Options.
+  /// information, see Set VM availability policies.
   /// Possible string values are:
   /// - "MIGRATE" : *\[Default\]* Allows Compute Engine to automatically migrate
   /// instances out of the way of maintenance events.
diff --git a/generated/googleapis/lib/connectors/v1.dart b/generated/googleapis/lib/connectors/v1.dart
index a514eef..b9fb05d 100644
--- a/generated/googleapis/lib/connectors/v1.dart
+++ b/generated/googleapis/lib/connectors/v1.dart
@@ -1880,11 +1880,6 @@
   /// Output only.
   core.String? imageLocation;
 
-  /// Inactive indicates the connection is active to use or not.
-  ///
-  /// Optional.
-  core.bool? inactive;
-
   /// Resource labels to represent user-provided metadata.
   ///
   /// Refer to cloud documentation on labels for more details.
@@ -1923,6 +1918,11 @@
   /// Output only.
   ConnectionStatus? status;
 
+  /// Suspended indicates if a user has suspended a connection or not.
+  ///
+  /// Optional.
+  core.bool? suspended;
+
   /// Updated time.
   ///
   /// Output only.
@@ -1937,13 +1937,13 @@
     this.egressBackends,
     this.envoyImageLocation,
     this.imageLocation,
-    this.inactive,
     this.labels,
     this.lockConfig,
     this.name,
     this.serviceAccount,
     this.serviceDirectory,
     this.status,
+    this.suspended,
     this.updateTime,
   });
 
@@ -1979,9 +1979,6 @@
           imageLocation: _json.containsKey('imageLocation')
               ? _json['imageLocation'] as core.String
               : null,
-          inactive: _json.containsKey('inactive')
-              ? _json['inactive'] as core.bool
-              : null,
           labels: _json.containsKey('labels')
               ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
                   (key, item) => core.MapEntry(
@@ -2005,6 +2002,9 @@
               ? ConnectionStatus.fromJson(
                   _json['status'] as core.Map<core.String, core.dynamic>)
               : null,
+          suspended: _json.containsKey('suspended')
+              ? _json['suspended'] as core.bool
+              : null,
           updateTime: _json.containsKey('updateTime')
               ? _json['updateTime'] as core.String
               : null,
@@ -2020,13 +2020,13 @@
         if (envoyImageLocation != null)
           'envoyImageLocation': envoyImageLocation!,
         if (imageLocation != null) 'imageLocation': imageLocation!,
-        if (inactive != null) 'inactive': inactive!,
         if (labels != null) 'labels': labels!,
         if (lockConfig != null) 'lockConfig': lockConfig!,
         if (name != null) 'name': name!,
         if (serviceAccount != null) 'serviceAccount': serviceAccount!,
         if (serviceDirectory != null) 'serviceDirectory': serviceDirectory!,
         if (status != null) 'status': status!,
+        if (suspended != null) 'suspended': suspended!,
         if (updateTime != null) 'updateTime': updateTime!,
       };
 }
@@ -4079,7 +4079,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/container/v1.dart b/generated/googleapis/lib/container/v1.dart
index 5562bd1..aaaffd4 100644
--- a/generated/googleapis/lib/container/v1.dart
+++ b/generated/googleapis/lib/container/v1.dart
@@ -233,7 +233,7 @@
   ///
   /// Request parameters:
   ///
-  /// [name] - The name (project, location, cluster id) of the cluster to
+  /// [name] - The name (project, location, cluster name) of the cluster to
   /// complete IP rotation. Specified in the format `projects / * /locations / *
   /// /clusters / * `.
   /// Value must have pattern
@@ -444,7 +444,7 @@
   ///
   /// Request parameters:
   ///
-  /// [parent] - The cluster (project, location, cluster id) to get keys for.
+  /// [parent] - The cluster (project, location, cluster name) to get keys for.
   /// Specified in the format `projects / * /locations / * /clusters / * `.
   /// Value must have pattern
   /// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
@@ -579,7 +579,7 @@
   ///
   /// Request parameters:
   ///
-  /// [name] - The name (project, location, cluster id) of the cluster to set
+  /// [name] - The name (project, location, cluster name) of the cluster to set
   /// legacy abac. Specified in the format `projects / * /locations / *
   /// /clusters / * `.
   /// Value must have pattern
@@ -712,7 +712,7 @@
   ///
   /// Request parameters:
   ///
-  /// [name] - The name (project, location, cluster id) of the cluster to set
+  /// [name] - The name (project, location, cluster name) of the cluster to set
   /// maintenance policy. Specified in the format `projects / * /locations / *
   /// /clusters / * `.
   /// Value must have pattern
@@ -843,7 +843,7 @@
   ///
   /// Request parameters:
   ///
-  /// [name] - The name (project, location, cluster id) of the cluster to set
+  /// [name] - The name (project, location, cluster name) of the cluster to set
   /// networking policy. Specified in the format `projects / * /locations / *
   /// /clusters / * `.
   /// Value must have pattern
@@ -886,7 +886,7 @@
   ///
   /// Request parameters:
   ///
-  /// [name] - The name (project, location, cluster id) of the cluster to set
+  /// [name] - The name (project, location, cluster name) of the cluster to set
   /// labels. Specified in the format `projects / * /locations / * /clusters / *
   /// `.
   /// Value must have pattern
@@ -929,8 +929,8 @@
   ///
   /// Request parameters:
   ///
-  /// [name] - The name (project, location, cluster id) of the cluster to start
-  /// IP rotation. Specified in the format `projects / * /locations / *
+  /// [name] - The name (project, location, cluster name) of the cluster to
+  /// start IP rotation. Specified in the format `projects / * /locations / *
   /// /clusters / * `.
   /// Value must have pattern
   /// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
@@ -1063,8 +1063,8 @@
   ///
   /// Request parameters:
   ///
-  /// [parent] - The parent (project, location, cluster id) where the node pool
-  /// will be created. Specified in the format `projects / * /locations / *
+  /// [parent] - The parent (project, location, cluster name) where the node
+  /// pool will be created. Specified in the format `projects / * /locations / *
   /// /clusters / * `.
   /// Value must have pattern
   /// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
@@ -1226,8 +1226,8 @@
   ///
   /// Request parameters:
   ///
-  /// [parent] - The parent (project, location, cluster id) where the node pools
-  /// will be listed. Specified in the format `projects / * /locations / *
+  /// [parent] - The parent (project, location, cluster name) where the node
+  /// pools will be listed. Specified in the format `projects / * /locations / *
   /// /clusters / * `.
   /// Value must have pattern
   /// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
@@ -1515,7 +1515,7 @@
   ///
   /// Request parameters:
   ///
-  /// [parent] - The cluster (project, location, cluster id) to get the
+  /// [parent] - The cluster (project, location, cluster name) to get the
   /// discovery document for. Specified in the format `projects / * /locations /
   /// * /clusters / * `.
   /// Value must have pattern
@@ -3027,8 +3027,8 @@
   /// [clusterId] - Deprecated. The name of the cluster. This field has been
   /// deprecated and replaced by the parent field.
   ///
-  /// [parent] - The parent (project, location, cluster id) where the node pools
-  /// will be listed. Specified in the format `projects / * /locations / *
+  /// [parent] - The parent (project, location, cluster name) where the node
+  /// pools will be listed. Specified in the format `projects / * /locations / *
   /// /clusters / * `.
   ///
   /// [$fields] - Selector specifying which fields to include in a partial
@@ -4117,7 +4117,9 @@
   /// Which conditions caused the current cluster state.
   core.List<StatusCondition>? conditions;
 
-  /// Configuration of Confidential Nodes
+  /// Configuration of Confidential Nodes.
+  ///
+  /// All the nodes in the cluster will be Confidential VM once enabled.
   ConfidentialNodes? confidentialNodes;
 
   /// The time the cluster was created, in
@@ -4192,6 +4194,9 @@
   /// Output only.
   core.String? id;
 
+  /// Configuration for Identity Service component.
+  IdentityServiceConfig? identityServiceConfig;
+
   /// The initial Kubernetes version for this cluster.
   ///
   /// Valid versions are those found in validMasterVersions returned by
@@ -4463,6 +4468,7 @@
     this.endpoint,
     this.expireTime,
     this.id,
+    this.identityServiceConfig,
     this.initialClusterVersion,
     this.initialNodeCount,
     this.instanceGroupUrls,
@@ -4578,6 +4584,10 @@
               ? _json['expireTime'] as core.String
               : null,
           id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          identityServiceConfig: _json.containsKey('identityServiceConfig')
+              ? IdentityServiceConfig.fromJson(_json['identityServiceConfig']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
           initialClusterVersion: _json.containsKey('initialClusterVersion')
               ? _json['initialClusterVersion'] as core.String
               : null,
@@ -4757,6 +4767,8 @@
         if (endpoint != null) 'endpoint': endpoint!,
         if (expireTime != null) 'expireTime': expireTime!,
         if (id != null) 'id': id!,
+        if (identityServiceConfig != null)
+          'identityServiceConfig': identityServiceConfig!,
         if (initialClusterVersion != null)
           'initialClusterVersion': initialClusterVersion!,
         if (initialNodeCount != null) 'initialNodeCount': initialNodeCount!,
@@ -4923,6 +4935,9 @@
   /// The desired GCFS config for the cluster
   GcfsConfig? desiredGcfsConfig;
 
+  /// The desired Identity Service component configuration.
+  IdentityServiceConfig? desiredIdentityServiceConfig;
+
   /// The desired image type for the node pool.
   ///
   /// NOTE: Set the "desired_node_pool" field as well.
@@ -5059,6 +5074,7 @@
     this.desiredDefaultSnatStatus,
     this.desiredDnsConfig,
     this.desiredGcfsConfig,
+    this.desiredIdentityServiceConfig,
     this.desiredImageType,
     this.desiredIntraNodeVisibilityConfig,
     this.desiredL4ilbSubsettingConfig,
@@ -5127,6 +5143,12 @@
               ? GcfsConfig.fromJson(_json['desiredGcfsConfig']
                   as core.Map<core.String, core.dynamic>)
               : null,
+          desiredIdentityServiceConfig:
+              _json.containsKey('desiredIdentityServiceConfig')
+                  ? IdentityServiceConfig.fromJson(
+                      _json['desiredIdentityServiceConfig']
+                          as core.Map<core.String, core.dynamic>)
+                  : null,
           desiredImageType: _json.containsKey('desiredImageType')
               ? _json['desiredImageType'] as core.String
               : null,
@@ -5252,6 +5274,8 @@
           'desiredDefaultSnatStatus': desiredDefaultSnatStatus!,
         if (desiredDnsConfig != null) 'desiredDnsConfig': desiredDnsConfig!,
         if (desiredGcfsConfig != null) 'desiredGcfsConfig': desiredGcfsConfig!,
+        if (desiredIdentityServiceConfig != null)
+          'desiredIdentityServiceConfig': desiredIdentityServiceConfig!,
         if (desiredImageType != null) 'desiredImageType': desiredImageType!,
         if (desiredIntraNodeVisibilityConfig != null)
           'desiredIntraNodeVisibilityConfig': desiredIntraNodeVisibilityConfig!,
@@ -5308,7 +5332,7 @@
   /// Deprecated.
   core.String? clusterId;
 
-  /// The name (project, location, cluster id) of the cluster to complete IP
+  /// The name (project, location, cluster name) of the cluster to complete IP
   /// rotation.
   ///
   /// Specified in the format `projects / * /locations / * /clusters / * `.
@@ -5361,8 +5385,7 @@
 /// ConfidentialNodes is configuration for the confidential nodes feature, which
 /// makes nodes run on confidential VMs.
 class ConfidentialNodes {
-  /// Whether Confidential Nodes feature is enabled for all nodes in this
-  /// cluster.
+  /// Whether Confidential Nodes feature is enabled.
   core.bool? enabled;
 
   ConfidentialNodes({
@@ -5500,7 +5523,7 @@
   /// Required.
   NodePool? nodePool;
 
-  /// The parent (project, location, cluster id) where the node pool will be
+  /// The parent (project, location, cluster name) where the node pool will be
   /// created.
   ///
   /// Specified in the format `projects / * /locations / * /clusters / * `.
@@ -6241,6 +6264,28 @@
       };
 }
 
+/// IdentityServiceConfig is configuration for Identity Service which allows
+/// customers to use external identity providers with the K8S API
+class IdentityServiceConfig {
+  /// Whether to enable the Identity Service component
+  core.bool? enabled;
+
+  IdentityServiceConfig({
+    this.enabled,
+  });
+
+  IdentityServiceConfig.fromJson(core.Map _json)
+      : this(
+          enabled: _json.containsKey('enabled')
+              ? _json['enabled'] as core.bool
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (enabled != null) 'enabled': enabled!,
+      };
+}
+
 /// IntraNodeVisibilityConfig contains the desired config of the intra-node
 /// visibility on this cluster.
 class IntraNodeVisibilityConfig {
@@ -8989,7 +9034,7 @@
   /// Required.
   core.String? labelFingerprint;
 
-  /// The name (project, location, cluster id) of the cluster to set labels.
+  /// The name (project, location, cluster name) of the cluster to set labels.
   ///
   /// Specified in the format `projects / * /locations / * /clusters / * `.
   core.String? name;
@@ -9074,7 +9119,7 @@
   /// Required.
   core.bool? enabled;
 
-  /// The name (project, location, cluster id) of the cluster to set legacy
+  /// The name (project, location, cluster name) of the cluster to set legacy
   /// abac.
   ///
   /// Specified in the format `projects / * /locations / * /clusters / * `.
@@ -9296,8 +9341,8 @@
   /// Required.
   MaintenancePolicy? maintenancePolicy;
 
-  /// The name (project, location, cluster id) of the cluster to set maintenance
-  /// policy.
+  /// The name (project, location, cluster name) of the cluster to set
+  /// maintenance policy.
   ///
   /// Specified in the format `projects / * /locations / * /clusters / * `.
   core.String? name;
@@ -9520,8 +9565,8 @@
   /// Deprecated.
   core.String? clusterId;
 
-  /// The name (project, location, cluster id) of the cluster to set networking
-  /// policy.
+  /// The name (project, location, cluster name) of the cluster to set
+  /// networking policy.
   ///
   /// Specified in the format `projects / * /locations / * /clusters / * `.
   core.String? name;
@@ -9901,7 +9946,7 @@
   /// Deprecated.
   core.String? clusterId;
 
-  /// The name (project, location, cluster id) of the cluster to start IP
+  /// The name (project, location, cluster name) of the cluster to start IP
   /// rotation.
   ///
   /// Specified in the format `projects / * /locations / * /clusters / * `.
diff --git a/generated/googleapis/lib/containeranalysis/v1.dart b/generated/googleapis/lib/containeranalysis/v1.dart
index 2598a22..51cf99e 100644
--- a/generated/googleapis/lib/containeranalysis/v1.dart
+++ b/generated/googleapis/lib/containeranalysis/v1.dart
@@ -4184,7 +4184,7 @@
 typedef Subject = $Subject;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/content/v2_1.dart b/generated/googleapis/lib/content/v2_1.dart
index 7f69460..3d1414b 100644
--- a/generated/googleapis/lib/content/v2_1.dart
+++ b/generated/googleapis/lib/content/v2_1.dart
@@ -12182,10 +12182,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// Represents civil time (or occasionally physical time).
@@ -12560,8 +12560,8 @@
   /// If program is successfully onboarded for at least one region.
   /// Possible string values are:
   /// - "PROGRAM_STATE_UNSPECIFIED" : State is not known.
-  /// - "ONBOARDED" : Program is onboarded for at least one country.
-  /// - "NOT_ONBOARDED" : Program is not onboarded for any country.
+  /// - "ENABLED" : Program is enabled for at least one country.
+  /// - "NOT_ENABLED" : Program is not enabled for any country.
   core.String? state;
 
   FreeListingsProgramStatus({
@@ -27888,8 +27888,8 @@
   /// If program is successfully onboarded for at least one region.
   /// Possible string values are:
   /// - "PROGRAM_STATE_UNSPECIFIED" : State is not known.
-  /// - "ONBOARDED" : Program is onboarded for at least one country.
-  /// - "NOT_ONBOARDED" : Program is not onboarded for any country.
+  /// - "ENABLED" : Program is enabled for at least one country.
+  /// - "NOT_ENABLED" : Program is not enabled for any country.
   core.String? state;
 
   ShoppingAdsProgramStatus({
diff --git a/generated/googleapis/lib/datacatalog/v1.dart b/generated/googleapis/lib/datacatalog/v1.dart
index 8821db5..2ca1065 100644
--- a/generated/googleapis/lib/datacatalog/v1.dart
+++ b/generated/googleapis/lib/datacatalog/v1.dart
@@ -1810,8 +1810,7 @@
   /// are overwritten. If such fields are non-required and omitted in the
   /// request body, their values are emptied. Note: Updating the
   /// `is_publicly_readable` field may require up to 12 hours to take effect in
-  /// search results. Additionally, it also requires the
-  /// `tagTemplates.getIamPolicy` and `tagTemplates.setIamPolicy` permissions.
+  /// search results.
   ///
   /// [$fields] - Selector specifying which fields to include in a partial
   /// response.
@@ -3639,9 +3638,19 @@
   /// - "BIGQUERY" : BigQuery service.
   core.String? service;
 
+  /// Data Catalog entry name, if applicable.
+  ///
+  /// Output only.
+  core.String? sourceEntry;
+
+  /// Detailed properties of the underlying storage.
+  GoogleCloudDatacatalogV1StorageProperties? storageProperties;
+
   GoogleCloudDatacatalogV1DataSource({
     this.resource,
     this.service,
+    this.sourceEntry,
+    this.storageProperties,
   });
 
   GoogleCloudDatacatalogV1DataSource.fromJson(core.Map _json)
@@ -3652,11 +3661,21 @@
           service: _json.containsKey('service')
               ? _json['service'] as core.String
               : null,
+          sourceEntry: _json.containsKey('sourceEntry')
+              ? _json['sourceEntry'] as core.String
+              : null,
+          storageProperties: _json.containsKey('storageProperties')
+              ? GoogleCloudDatacatalogV1StorageProperties.fromJson(
+                  _json['storageProperties']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (resource != null) 'resource': resource!,
         if (service != null) 'service': service!,
+        if (sourceEntry != null) 'sourceEntry': sourceEntry!,
+        if (storageProperties != null) 'storageProperties': storageProperties!,
       };
 }
 
@@ -3690,6 +3709,10 @@
 ///
 /// Valid only for entries with the `TABLE` type.
 class GoogleCloudDatacatalogV1DatabaseTableSpec {
+  /// Fields specific to a Dataplex table and present only in the Dataplex table
+  /// entries.
+  GoogleCloudDatacatalogV1DataplexTableSpec? dataplexTable;
+
   /// Type of this table.
   /// Possible string values are:
   /// - "TABLE_TYPE_UNSPECIFIED" : Default unknown table type.
@@ -3698,19 +3721,201 @@
   core.String? type;
 
   GoogleCloudDatacatalogV1DatabaseTableSpec({
+    this.dataplexTable,
     this.type,
   });
 
   GoogleCloudDatacatalogV1DatabaseTableSpec.fromJson(core.Map _json)
       : this(
+          dataplexTable: _json.containsKey('dataplexTable')
+              ? GoogleCloudDatacatalogV1DataplexTableSpec.fromJson(
+                  _json['dataplexTable'] as core.Map<core.String, core.dynamic>)
+              : null,
           type: _json.containsKey('type') ? _json['type'] as core.String : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (dataplexTable != null) 'dataplexTable': dataplexTable!,
         if (type != null) 'type': type!,
       };
 }
 
+/// External table registered by Dataplex.
+///
+/// Dataplex publishes data discovered from an asset into multiple other systems
+/// (BigQuery, DPMS) in form of tables. We call them "external tables". External
+/// tables are also synced into the Data Catalog. This message contains pointers
+/// to those external tables (fully qualified name, resource name et cetera)
+/// within the Data Catalog.
+class GoogleCloudDatacatalogV1DataplexExternalTable {
+  /// Name of the Data Catalog entry representing the external table.
+  core.String? dataCatalogEntry;
+
+  /// Fully qualified name (FQN) of the external table.
+  core.String? fullyQualifiedName;
+
+  /// Google Cloud resource name of the external table.
+  core.String? googleCloudResource;
+
+  /// Service in which the external table is registered.
+  /// Possible string values are:
+  /// - "INTEGRATED_SYSTEM_UNSPECIFIED" : Default unknown system.
+  /// - "BIGQUERY" : BigQuery.
+  /// - "CLOUD_PUBSUB" : Cloud Pub/Sub.
+  /// - "DATAPROC_METASTORE" : Dataproc Metastore.
+  /// - "DATAPLEX" : Dataplex.
+  core.String? system;
+
+  GoogleCloudDatacatalogV1DataplexExternalTable({
+    this.dataCatalogEntry,
+    this.fullyQualifiedName,
+    this.googleCloudResource,
+    this.system,
+  });
+
+  GoogleCloudDatacatalogV1DataplexExternalTable.fromJson(core.Map _json)
+      : this(
+          dataCatalogEntry: _json.containsKey('dataCatalogEntry')
+              ? _json['dataCatalogEntry'] as core.String
+              : null,
+          fullyQualifiedName: _json.containsKey('fullyQualifiedName')
+              ? _json['fullyQualifiedName'] as core.String
+              : null,
+          googleCloudResource: _json.containsKey('googleCloudResource')
+              ? _json['googleCloudResource'] as core.String
+              : null,
+          system: _json.containsKey('system')
+              ? _json['system'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (dataCatalogEntry != null) 'dataCatalogEntry': dataCatalogEntry!,
+        if (fullyQualifiedName != null)
+          'fullyQualifiedName': fullyQualifiedName!,
+        if (googleCloudResource != null)
+          'googleCloudResource': googleCloudResource!,
+        if (system != null) 'system': system!,
+      };
+}
+
+/// Entry specyfication for a Dataplex fileset.
+class GoogleCloudDatacatalogV1DataplexFilesetSpec {
+  /// Common Dataplex fields.
+  GoogleCloudDatacatalogV1DataplexSpec? dataplexSpec;
+
+  GoogleCloudDatacatalogV1DataplexFilesetSpec({
+    this.dataplexSpec,
+  });
+
+  GoogleCloudDatacatalogV1DataplexFilesetSpec.fromJson(core.Map _json)
+      : this(
+          dataplexSpec: _json.containsKey('dataplexSpec')
+              ? GoogleCloudDatacatalogV1DataplexSpec.fromJson(
+                  _json['dataplexSpec'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (dataplexSpec != null) 'dataplexSpec': dataplexSpec!,
+      };
+}
+
+/// Common Dataplex fields.
+class GoogleCloudDatacatalogV1DataplexSpec {
+  /// Fully qualified resource name of an asset in Dataplex, to which the
+  /// underlying data source (Cloud Storage bucket or BigQuery dataset) of the
+  /// entity is attached.
+  core.String? asset;
+
+  /// Compression format of the data, e.g., zip, gzip etc.
+  core.String? compressionFormat;
+
+  /// Format of the data.
+  GoogleCloudDatacatalogV1PhysicalSchema? dataFormat;
+
+  /// Project ID of the underlying Cloud Storage or BigQuery data.
+  ///
+  /// Note that this may not be the same project as the correspondingly Dataplex
+  /// lake / zone / asset.
+  core.String? projectId;
+
+  GoogleCloudDatacatalogV1DataplexSpec({
+    this.asset,
+    this.compressionFormat,
+    this.dataFormat,
+    this.projectId,
+  });
+
+  GoogleCloudDatacatalogV1DataplexSpec.fromJson(core.Map _json)
+      : this(
+          asset:
+              _json.containsKey('asset') ? _json['asset'] as core.String : null,
+          compressionFormat: _json.containsKey('compressionFormat')
+              ? _json['compressionFormat'] as core.String
+              : null,
+          dataFormat: _json.containsKey('dataFormat')
+              ? GoogleCloudDatacatalogV1PhysicalSchema.fromJson(
+                  _json['dataFormat'] as core.Map<core.String, core.dynamic>)
+              : null,
+          projectId: _json.containsKey('projectId')
+              ? _json['projectId'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (asset != null) 'asset': asset!,
+        if (compressionFormat != null) 'compressionFormat': compressionFormat!,
+        if (dataFormat != null) 'dataFormat': dataFormat!,
+        if (projectId != null) 'projectId': projectId!,
+      };
+}
+
+/// Entry specification for a Dataplex table.
+class GoogleCloudDatacatalogV1DataplexTableSpec {
+  /// Common Dataplex fields.
+  GoogleCloudDatacatalogV1DataplexSpec? dataplexSpec;
+
+  /// List of external tables registered by Dataplex in other systems based on
+  /// the same underlying data.
+  ///
+  /// External tables allow to query this data in those systems.
+  core.List<GoogleCloudDatacatalogV1DataplexExternalTable>? externalTables;
+
+  /// Indicates if the table schema is managed by the user or not.
+  core.bool? userManaged;
+
+  GoogleCloudDatacatalogV1DataplexTableSpec({
+    this.dataplexSpec,
+    this.externalTables,
+    this.userManaged,
+  });
+
+  GoogleCloudDatacatalogV1DataplexTableSpec.fromJson(core.Map _json)
+      : this(
+          dataplexSpec: _json.containsKey('dataplexSpec')
+              ? GoogleCloudDatacatalogV1DataplexSpec.fromJson(
+                  _json['dataplexSpec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          externalTables: _json.containsKey('externalTables')
+              ? (_json['externalTables'] as core.List)
+                  .map((value) =>
+                      GoogleCloudDatacatalogV1DataplexExternalTable.fromJson(
+                          value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          userManaged: _json.containsKey('userManaged')
+              ? _json['userManaged'] as core.bool
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (dataplexSpec != null) 'dataplexSpec': dataplexSpec!,
+        if (externalTables != null) 'externalTables': externalTables!,
+        if (userManaged != null) 'userManaged': userManaged!,
+      };
+}
+
 /// Entry metadata.
 ///
 /// A Data Catalog entry represents another resource in Google Cloud Platform
@@ -3733,6 +3938,8 @@
   GoogleCloudDatacatalogV1BigQueryTableSpec? bigqueryTableSpec;
 
   /// Business Context of the entry.
+  ///
+  /// Not supported for BigQuery datasets
   GoogleCloudDatacatalogV1BusinessContext? businessContext;
 
   /// Physical location of the entry.
@@ -3767,6 +3974,11 @@
   /// string.
   core.String? displayName;
 
+  /// Specification that applies to a fileset resource.
+  ///
+  /// Valid only for entries with the `FILESET` type.
+  GoogleCloudDatacatalogV1FilesetSpec? filesetSpec;
+
   /// Fully qualified name (FQN) of the resource.
   ///
   /// Set automatically for entries representing resources from synced systems.
@@ -3794,6 +4006,7 @@
   /// - "BIGQUERY" : BigQuery.
   /// - "CLOUD_PUBSUB" : Cloud Pub/Sub.
   /// - "DATAPROC_METASTORE" : Dataproc Metastore.
+  /// - "DATAPLEX" : Dataplex.
   core.String? integratedSystem;
 
   /// Cloud labels attached to the entry.
@@ -3870,6 +4083,8 @@
   /// - "DATA_SOURCE_CONNECTION" : Output only. Connection to a data source. For
   /// example, a BigQuery connection.
   /// - "ROUTINE" : Output only. Routine, for example, a BigQuery routine.
+  /// - "LAKE" : A Dataproc Metastore lake.
+  /// - "ZONE" : A Dataproc Metastore zone.
   /// - "SERVICE" : A service, for example, a Dataproc Metastore service.
   core.String? type;
 
@@ -3907,6 +4122,7 @@
     this.databaseTableSpec,
     this.description,
     this.displayName,
+    this.filesetSpec,
     this.fullyQualifiedName,
     this.gcsFilesetSpec,
     this.integratedSystem,
@@ -3961,6 +4177,10 @@
           displayName: _json.containsKey('displayName')
               ? _json['displayName'] as core.String
               : null,
+          filesetSpec: _json.containsKey('filesetSpec')
+              ? GoogleCloudDatacatalogV1FilesetSpec.fromJson(
+                  _json['filesetSpec'] as core.Map<core.String, core.dynamic>)
+              : null,
           fullyQualifiedName: _json.containsKey('fullyQualifiedName')
               ? _json['fullyQualifiedName'] as core.String
               : null,
@@ -4026,6 +4246,7 @@
         if (databaseTableSpec != null) 'databaseTableSpec': databaseTableSpec!,
         if (description != null) 'description': description!,
         if (displayName != null) 'displayName': displayName!,
+        if (filesetSpec != null) 'filesetSpec': filesetSpec!,
         if (fullyQualifiedName != null)
           'fullyQualifiedName': fullyQualifiedName!,
         if (gcsFilesetSpec != null) 'gcsFilesetSpec': gcsFilesetSpec!,
@@ -4253,6 +4474,32 @@
       };
 }
 
+/// Specification that applies to a fileset.
+///
+/// Valid only for entries with the 'FILESET' type.
+class GoogleCloudDatacatalogV1FilesetSpec {
+  /// Fields specific to a Dataplex fileset and present only in the Dataplex
+  /// fileset entries.
+  GoogleCloudDatacatalogV1DataplexFilesetSpec? dataplexFileset;
+
+  GoogleCloudDatacatalogV1FilesetSpec({
+    this.dataplexFileset,
+  });
+
+  GoogleCloudDatacatalogV1FilesetSpec.fromJson(core.Map _json)
+      : this(
+          dataplexFileset: _json.containsKey('dataplexFileset')
+              ? GoogleCloudDatacatalogV1DataplexFilesetSpec.fromJson(
+                  _json['dataplexFileset']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (dataplexFileset != null) 'dataplexFileset': dataplexFileset!,
+      };
+}
+
 /// Specification of a single file in Cloud Storage.
 class GoogleCloudDatacatalogV1GcsFileSpec {
   /// Full file path.
@@ -4689,6 +4936,141 @@
       };
 }
 
+/// Native schema used by a resource represented as an entry.
+///
+/// Used by query engines for deserializing and parsing source data.
+class GoogleCloudDatacatalogV1PhysicalSchema {
+  /// Schema in Avro JSON format.
+  GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema? avro;
+
+  /// Marks a CSV-encoded data source.
+  GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema? csv;
+
+  /// Marks an ORC-encoded data source.
+  GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema? orc;
+
+  /// Marks a Parquet-encoded data source.
+  GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema? parquet;
+
+  /// Schema in protocol buffer format.
+  GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema? protobuf;
+
+  /// Schema in Thrift format.
+  GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema? thrift;
+
+  GoogleCloudDatacatalogV1PhysicalSchema({
+    this.avro,
+    this.csv,
+    this.orc,
+    this.parquet,
+    this.protobuf,
+    this.thrift,
+  });
+
+  GoogleCloudDatacatalogV1PhysicalSchema.fromJson(core.Map _json)
+      : this(
+          avro: _json.containsKey('avro')
+              ? GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema.fromJson(
+                  _json['avro'] as core.Map<core.String, core.dynamic>)
+              : null,
+          csv: _json.containsKey('csv')
+              ? GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema.fromJson(
+                  _json['csv'] as core.Map<core.String, core.dynamic>)
+              : null,
+          orc: _json.containsKey('orc')
+              ? GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema.fromJson(
+                  _json['orc'] as core.Map<core.String, core.dynamic>)
+              : null,
+          parquet: _json.containsKey('parquet')
+              ? GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema.fromJson(
+                  _json['parquet'] as core.Map<core.String, core.dynamic>)
+              : null,
+          protobuf: _json.containsKey('protobuf')
+              ? GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema.fromJson(
+                  _json['protobuf'] as core.Map<core.String, core.dynamic>)
+              : null,
+          thrift: _json.containsKey('thrift')
+              ? GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema.fromJson(
+                  _json['thrift'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (avro != null) 'avro': avro!,
+        if (csv != null) 'csv': csv!,
+        if (orc != null) 'orc': orc!,
+        if (parquet != null) 'parquet': parquet!,
+        if (protobuf != null) 'protobuf': protobuf!,
+        if (thrift != null) 'thrift': thrift!,
+      };
+}
+
+/// Schema in Avro JSON format.
+class GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema {
+  /// JSON source of the Avro schema.
+  core.String? text;
+
+  GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema({
+    this.text,
+  });
+
+  GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema.fromJson(core.Map _json)
+      : this(
+          text: _json.containsKey('text') ? _json['text'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (text != null) 'text': text!,
+      };
+}
+
+/// Marks a CSV-encoded data source.
+typedef GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema = $Empty;
+
+/// Marks an ORC-encoded data source.
+typedef GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema = $Empty;
+
+/// Marks a Parquet-encoded data source.
+typedef GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema = $Empty;
+
+/// Schema in protocol buffer format.
+class GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema {
+  /// Protocol buffer source of the schema.
+  core.String? text;
+
+  GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema({
+    this.text,
+  });
+
+  GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema.fromJson(core.Map _json)
+      : this(
+          text: _json.containsKey('text') ? _json['text'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (text != null) 'text': text!,
+      };
+}
+
+/// Schema in Thrift format.
+class GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema {
+  /// Thrift IDL source of the schema.
+  core.String? text;
+
+  GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema({
+    this.text,
+  });
+
+  GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema.fromJson(core.Map _json)
+      : this(
+          text: _json.containsKey('text') ? _json['text'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (text != null) 'text': text!,
+      };
+}
+
 /// Denotes one policy tag in a taxonomy, for example, SSN.
 ///
 /// Policy tags can be defined in a hierarchy. For example: ``` + Geolocation +
@@ -5096,12 +5478,9 @@
   /// numbers, see \[Projects\](/docs/overview/#projects).
   core.List<core.String>? includeProjectIds;
 
-  /// If `true`, include public tag templates in the search results.
+  /// This field is deprecated.
   ///
-  /// By default, they are included only if you have explicit permissions on
-  /// them to view them. For example, if you are the owner. Other scope fields,
-  /// for example, `include_org_ids`, still restrict the returned public tag
-  /// templates and at least one of them is required.
+  /// The search mechanism for public and private tag templates is the same.
   ///
   /// Optional.
   core.bool? includePublicTagTemplates;
@@ -5257,6 +5636,7 @@
   /// - "BIGQUERY" : BigQuery.
   /// - "CLOUD_PUBSUB" : Cloud Pub/Sub.
   /// - "DATAPROC_METASTORE" : Dataproc Metastore.
+  /// - "DATAPLEX" : Dataplex.
   core.String? integratedSystem;
 
   /// The full name of the Google Cloud resource the entry belongs to.
@@ -5491,6 +5871,51 @@
 /// Empty for now
 typedef GoogleCloudDatacatalogV1StarEntryResponse = $Empty;
 
+/// Details the properties of the underlying storage.
+class GoogleCloudDatacatalogV1StorageProperties {
+  /// Patterns to identify a set of files for this fileset.
+  ///
+  /// Examples of a valid `file_pattern`: * `gs://bucket_name/dir / * `: matches
+  /// all files in the `bucket_name/dir` directory * `gs://bucket_name/dir / *
+  /// *`: matches all files in the `bucket_name/dir` and all subdirectories
+  /// recursively * `gs://bucket_name/file*`: matches files prefixed by `file`
+  /// in `bucket_name` * `gs://bucket_name/??.txt`: matches files with two
+  /// characters followed by `.txt` in `bucket_name` *
+  /// `gs://bucket_name/[aeiou].txt`: matches files that contain a single vowel
+  /// character followed by `.txt` in `bucket_name` *
+  /// `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... or
+  /// `m` followed by `.txt` in `bucket_name` * `gs://bucket_name/a / * /b`:
+  /// matches all files in `bucket_name` that match the `a / * /b` pattern, such
+  /// as `a/c/b`, `a/d/b` * `gs://another_bucket/a.txt`: matches
+  /// `gs://another_bucket/a.txt`
+  core.List<core.String>? filePattern;
+
+  /// File type in MIME format, for example, `text/plain`.
+  core.String? fileType;
+
+  GoogleCloudDatacatalogV1StorageProperties({
+    this.filePattern,
+    this.fileType,
+  });
+
+  GoogleCloudDatacatalogV1StorageProperties.fromJson(core.Map _json)
+      : this(
+          filePattern: _json.containsKey('filePattern')
+              ? (_json['filePattern'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          fileType: _json.containsKey('fileType')
+              ? _json['fileType'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (filePattern != null) 'filePattern': filePattern!,
+        if (fileType != null) 'fileType': fileType!,
+      };
+}
+
 /// Timestamps associated with this resource in a particular system.
 class GoogleCloudDatacatalogV1SystemTimestamps {
   /// Creation timestamp of the resource within the given system.
@@ -5791,23 +6216,11 @@
   /// Required.
   core.Map<core.String, GoogleCloudDatacatalogV1TagTemplateField>? fields;
 
-  /// Indicates whether this is a public tag template.
+  /// Indicates whether tags created with this template are public.
   ///
-  /// Every user has view access to a *public* tag template by default. This
-  /// means that: * Every user can use this tag template to tag an entry. * If
-  /// an entry is tagged using the tag template, the tag is always shown in the
-  /// response to ``ListTags`` called on the entry. * To get the template using
-  /// the GetTagTemplate method, you need view access either on the project or
-  /// the organization the tag template resides in but no other permission is
-  /// needed. * Operations on the tag template other than viewing (for example,
-  /// editing IAM policies) follow standard IAM structures. Tags created with a
-  /// public tag template are referred to as public tags. You can search for a
-  /// public tag by value with a simple search query instead of using a ``tag:``
-  /// predicate. Public tag templates may not appear in search results depending
-  /// on scope, see: include_public_tag_templates Note: If an
-  /// [IAM domain restriction](https://cloud.google.com/resource-manager/docs/organization-policy/restricting-domains)
-  /// is configured in the tag template's location, the public access will not
-  /// be enabled but the simple search for tag values will still work.
+  /// Public tags do not require tag template access to appear in ListTags API
+  /// response. Additionally, you can search for a public tag by value with a
+  /// simple search query instead of using a ``tag:`` predicate.
   core.bool? isPubliclyReadable;
 
   /// The resource name of the tag template in URL format.
@@ -6296,7 +6709,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/datafusion/v1.dart b/generated/googleapis/lib/datafusion/v1.dart
index f7fc911..ed9f735 100644
--- a/generated/googleapis/lib/datafusion/v1.dart
+++ b/generated/googleapis/lib/datafusion/v1.dart
@@ -1873,7 +1873,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/datamigration/v1.dart b/generated/googleapis/lib/datamigration/v1.dart
index c93765d..25d55db 100644
--- a/generated/googleapis/lib/datamigration/v1.dart
+++ b/generated/googleapis/lib/datamigration/v1.dart
@@ -1951,6 +1951,7 @@
   /// - "DATABASE_PROVIDER_UNSPECIFIED" : The database provider is unknown.
   /// - "CLOUDSQL" : CloudSQL runs the database.
   /// - "RDS" : RDS runs the database.
+  /// - "AURORA" : Amazon Aurora.
   core.String? provider;
 
   /// The current connection profile state (e.g. DRAFT, READY, or FAILED).
@@ -2060,6 +2061,7 @@
   /// - "DATABASE_PROVIDER_UNSPECIFIED" : The database provider is unknown.
   /// - "CLOUDSQL" : CloudSQL runs the database.
   /// - "RDS" : RDS runs the database.
+  /// - "AURORA" : Amazon Aurora.
   core.String? provider;
 
   DatabaseType({
@@ -3227,7 +3229,7 @@
 typedef StopMigrationJobRequest = $Empty;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/dataplex/v1.dart b/generated/googleapis/lib/dataplex/v1.dart
new file mode 100644
index 0000000..fc4b634
--- /dev/null
+++ b/generated/googleapis/lib/dataplex/v1.dart
@@ -0,0 +1,8084 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+// ignore_for_file: camel_case_types
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_string_interpolations
+
+/// Cloud Dataplex API - v1
+///
+/// Dataplex API is used to manage the lifecycle of data lakes.
+///
+/// For more information, see <https://cloud.google.com/dataplex/docs>
+///
+/// Create an instance of [CloudDataplexApi] to access these resources:
+///
+/// - [ProjectsResource]
+///   - [ProjectsLocationsResource]
+///     - [ProjectsLocationsLakesResource]
+///       - [ProjectsLocationsLakesActionsResource]
+///       - [ProjectsLocationsLakesContentResource]
+///       - [ProjectsLocationsLakesContentitemsResource]
+///       - [ProjectsLocationsLakesEnvironmentsResource]
+///         - [ProjectsLocationsLakesEnvironmentsSessionsResource]
+///       - [ProjectsLocationsLakesTasksResource]
+///         - [ProjectsLocationsLakesTasksJobsResource]
+///       - [ProjectsLocationsLakesZonesResource]
+///         - [ProjectsLocationsLakesZonesActionsResource]
+///         - [ProjectsLocationsLakesZonesAssetsResource]
+///           - [ProjectsLocationsLakesZonesAssetsActionsResource]
+///         - [ProjectsLocationsLakesZonesEntitiesResource]
+///           - [ProjectsLocationsLakesZonesEntitiesPartitionsResource]
+///     - [ProjectsLocationsOperationsResource]
+library dataplex.v1;
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+// ignore: deprecated_member_use_from_same_package
+import '../shared.dart';
+import '../src/user_agent.dart';
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+/// Dataplex API is used to manage the lifecycle of data lakes.
+class CloudDataplexApi {
+  /// See, edit, configure, and delete your Google Cloud data and see the email
+  /// address for your Google Account.
+  static const cloudPlatformScope =
+      'https://www.googleapis.com/auth/cloud-platform';
+
+  final commons.ApiRequester _requester;
+
+  ProjectsResource get projects => ProjectsResource(_requester);
+
+  CloudDataplexApi(http.Client client,
+      {core.String rootUrl = 'https://dataplex.googleapis.com/',
+      core.String servicePath = ''})
+      : _requester =
+            commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
+}
+
+class ProjectsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsResource get locations =>
+      ProjectsLocationsResource(_requester);
+
+  ProjectsResource(commons.ApiRequester client) : _requester = client;
+}
+
+class ProjectsLocationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesResource get lakes =>
+      ProjectsLocationsLakesResource(_requester);
+  ProjectsLocationsOperationsResource get operations =>
+      ProjectsLocationsOperationsResource(_requester);
+
+  ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
+
+  /// Gets information about a location.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Resource name for the location.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudLocationLocation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudLocationLocation> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudLocationLocation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists information about the supported locations for this service.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource that owns the locations collection, if applicable.
+  /// Value must have pattern `^projects/\[^/\]+$`.
+  ///
+  /// [filter] - A filter to narrow down results to a preferred subset. The
+  /// filtering language accepts strings like "displayName=tokyo", and is
+  /// documented in more detail in AIP-160 (https://google.aip.dev/160).
+  ///
+  /// [pageSize] - The maximum number of results to return. If not set, the
+  /// service selects a default.
+  ///
+  /// [pageToken] - A page token received from the next_page_token field in the
+  /// response. Send that page token to receive the subsequent page.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudLocationListLocationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudLocationListLocationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name') + '/locations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudLocationListLocationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesActionsResource get actions =>
+      ProjectsLocationsLakesActionsResource(_requester);
+  ProjectsLocationsLakesContentResource get content =>
+      ProjectsLocationsLakesContentResource(_requester);
+  ProjectsLocationsLakesContentitemsResource get contentitems =>
+      ProjectsLocationsLakesContentitemsResource(_requester);
+  ProjectsLocationsLakesEnvironmentsResource get environments =>
+      ProjectsLocationsLakesEnvironmentsResource(_requester);
+  ProjectsLocationsLakesTasksResource get tasks =>
+      ProjectsLocationsLakesTasksResource(_requester);
+  ProjectsLocationsLakesZonesResource get zones =>
+      ProjectsLocationsLakesZonesResource(_requester);
+
+  ProjectsLocationsLakesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a lake resource.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the lake location, of the form:
+  /// projects/{project_number}/locations/{location_id} where location_id refers
+  /// to a GCP region.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [lakeId] - Required. Lake identifier. This ID will be used to generate
+  /// names such as database and dataset names when publishing metadata to Hive
+  /// Metastore and BigQuery. * Must contain only lowercase letters, numbers and
+  /// hyphens. * Must start with a letter. * Must end with a number or a letter.
+  /// * Must be between 1-63 characters. * Must be unique within the customer
+  /// project / location.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> create(
+    GoogleCloudDataplexV1Lake request,
+    core.String parent, {
+    core.String? lakeId,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (lakeId != null) 'lakeId': [lakeId],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/lakes';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a lake resource.
+  ///
+  /// All zones within the lake must be deleted before the lake can be deleted.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the lake:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Retrieves a lake resource.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the lake:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Lake].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Lake> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Lake.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets the access control policy for a resource.
+  ///
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy.Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected.Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset.The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists lake resources in a project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the lake location, of the form:
+  /// projects/{project_number}/locations/{location_id} where location_id refers
+  /// to a GCP region.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. Filter request.
+  ///
+  /// [orderBy] - Optional. Order by fields for the result.
+  ///
+  /// [pageSize] - Optional. Maximum number of Lakes to return. The service may
+  /// return fewer than this value. If unspecified, at most 10 lakes will be
+  /// returned. The maximum value is 1000; values above 1000 will be coerced to
+  /// 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous ListLakes
+  /// call. Provide this to retrieve the subsequent page. When paginating, all
+  /// other parameters provided to ListLakes must match the call that provided
+  /// the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListLakesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListLakesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/lakes';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListLakesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates a lake resource.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The relative resource name of the lake, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. Mask of fields to update.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> patch(
+    GoogleCloudDataplexV1Lake request,
+    core.String name, {
+    core.String? updateMask,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the access control policy on the specified resource.
+  ///
+  /// Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and
+  /// PERMISSION_DENIED errors.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> setIamPolicy(
+    GoogleIamV1SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  ///
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a NOT_FOUND error.Note: This operation is designed to be
+  /// used for building permission-aware UIs and command-line tools, not for
+  /// authorization checking. This operation may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1TestIamPermissionsResponse> testIamPermissions(
+    GoogleIamV1TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesActionsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesActionsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Lists action resources in a lake.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent lake:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [pageSize] - Optional. Maximum number of actions to return. The service
+  /// may return fewer than this value. If unspecified, at most 10 actions will
+  /// be returned. The maximum value is 1000; values above 1000 will be coerced
+  /// to 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous
+  /// ListLakeActions call. Provide this to retrieve the subsequent page. When
+  /// paginating, all other parameters provided to ListLakeActions must match
+  /// the call that provided the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListActionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListActionsResponse> list(
+    core.String parent, {
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/actions';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListActionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesContentResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesContentResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Gets the access control policy for a resource.
+  ///
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/content/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy.Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected.Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset.The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the access control policy on the specified resource.
+  ///
+  /// Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and
+  /// PERMISSION_DENIED errors.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/content/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> setIamPolicy(
+    GoogleIamV1SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  ///
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a NOT_FOUND error.Note: This operation is designed to be
+  /// used for building permission-aware UIs and command-line tools, not for
+  /// authorization checking. This operation may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/content/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1TestIamPermissionsResponse> testIamPermissions(
+    GoogleIamV1TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesContentitemsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesContentitemsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Create a content.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent lake:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Content].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Content> create(
+    GoogleCloudDataplexV1Content request,
+    core.String parent, {
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/contentitems';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Content.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Delete a content.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the content:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/contentitems/.*$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get a content resource.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the content:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/contentitems/.*$`.
+  ///
+  /// [view] - Optional. Specify content view to make a partial request.
+  /// Possible string values are:
+  /// - "CONTENT_VIEW_UNSPECIFIED" : Content view not specified. Defaults to
+  /// BASIC. The API will default to the BASIC view.
+  /// - "BASIC" : Will not return the data_text field.
+  /// - "FULL" : Returns the complete proto.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Content].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Content> get(
+    core.String name, {
+    core.String? view,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (view != null) 'view': [view],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Content.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List content.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent lake:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. Filter request. Filters are case-sensitive. The
+  /// following formats are supported:labels.key1 = "value1" labels:key1 type =
+  /// "NOTEBOOK" type = "SQL_SCRIPT"These restrictions can be coinjoined with
+  /// AND, OR and NOT conjunctions.
+  ///
+  /// [pageSize] - Optional. Maximum number of content to return. The service
+  /// may return fewer than this value. If unspecified, at most 10 content will
+  /// be returned. The maximum value is 1000; values above 1000 will be coerced
+  /// to 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous ListContent
+  /// call. Provide this to retrieve the subsequent page. When paginating, all
+  /// other parameters provided to ListContent must match the call that provided
+  /// the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListContentResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListContentResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/contentitems';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListContentResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Update a content.
+  ///
+  /// Only supports full resource update.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The relative resource name of the content, of the
+  /// form:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/contentitems/.*$`.
+  ///
+  /// [updateMask] - Required. Mask of fields to update.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Content].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Content> patch(
+    GoogleCloudDataplexV1Content request,
+    core.String name, {
+    core.String? updateMask,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Content.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesEnvironmentsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesEnvironmentsSessionsResource get sessions =>
+      ProjectsLocationsLakesEnvironmentsSessionsResource(_requester);
+
+  ProjectsLocationsLakesEnvironmentsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Create an environment resource.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent lake:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [environmentId] - Required. Environment identifier. * Must contain only
+  /// lowercase letters, numbers and hyphens. * Must start with a letter. * Must
+  /// be between 1-63 characters. * Must end with a number or a letter. * Must
+  /// be unique within the lake.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> create(
+    GoogleCloudDataplexV1Environment request,
+    core.String parent, {
+    core.String? environmentId,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (environmentId != null) 'environmentId': [environmentId],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/environments';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Delete the environment resource.
+  ///
+  /// All the child resources must have been deleted before environment deletion
+  /// can be initiated.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the environment:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environments/{environment_id}\`
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/environments/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get environment resource.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the environment:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environments/{environment_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/environments/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Environment].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Environment> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Environment.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets the access control policy for a resource.
+  ///
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/environments/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy.Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected.Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset.The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists environments under the given lake.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent lake:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. Filter request.
+  ///
+  /// [orderBy] - Optional. Order by fields for the result.
+  ///
+  /// [pageSize] - Optional. Maximum number of environments to return. The
+  /// service may return fewer than this value. If unspecified, at most 10
+  /// environments will be returned. The maximum value is 1000; values above
+  /// 1000 will be coerced to 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous
+  /// ListEnvironments call. Provide this to retrieve the subsequent page. When
+  /// paginating, all other parameters provided to ListEnvironments must match
+  /// the call that provided the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListEnvironmentsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListEnvironmentsResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/environments';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListEnvironmentsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Update the environment resource.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The relative resource name of the environment, of
+  /// the form:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/environments/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. Mask of fields to update.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> patch(
+    GoogleCloudDataplexV1Environment request,
+    core.String name, {
+    core.String? updateMask,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the access control policy on the specified resource.
+  ///
+  /// Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and
+  /// PERMISSION_DENIED errors.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/environments/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> setIamPolicy(
+    GoogleIamV1SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  ///
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a NOT_FOUND error.Note: This operation is designed to be
+  /// used for building permission-aware UIs and command-line tools, not for
+  /// authorization checking. This operation may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/environments/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1TestIamPermissionsResponse> testIamPermissions(
+    GoogleIamV1TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesEnvironmentsSessionsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesEnvironmentsSessionsResource(
+      commons.ApiRequester client)
+      : _requester = client;
+
+  /// Lists session resources in an environment.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent environment:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/environments/\[^/\]+$`.
+  ///
+  /// [pageSize] - Optional. Maximum number of sessions to return. The service
+  /// may return fewer than this value. If unspecified, at most 10 sessions will
+  /// be returned. The maximum value is 1000; values above 1000 will be coerced
+  /// to 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous ListSessions
+  /// call. Provide this to retrieve the subsequent page. When paginating, all
+  /// other parameters provided to ListSessions must match the call that
+  /// provided the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListSessionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListSessionsResponse> list(
+    core.String parent, {
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/sessions';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListSessionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesTasksResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesTasksJobsResource get jobs =>
+      ProjectsLocationsLakesTasksJobsResource(_requester);
+
+  ProjectsLocationsLakesTasksResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a task resource within a lake.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent lake:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [taskId] - Required. Task identifier.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> create(
+    GoogleCloudDataplexV1Task request,
+    core.String parent, {
+    core.String? taskId,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (taskId != null) 'taskId': [taskId],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/tasks';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Delete the task resource.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the task:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /task/{task_id}\`
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/tasks/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get task resource.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the task:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /tasks/{tasks_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/tasks/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Task].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Task> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Task.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets the access control policy for a resource.
+  ///
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/tasks/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy.Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected.Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset.The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists tasks under the given lake.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent lake:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. Filter request.
+  ///
+  /// [orderBy] - Optional. Order by fields for the result.
+  ///
+  /// [pageSize] - Optional. Maximum number of tasks to return. The service may
+  /// return fewer than this value. If unspecified, at most 10 tasks will be
+  /// returned. The maximum value is 1000; values above 1000 will be coerced to
+  /// 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous ListZones
+  /// call. Provide this to retrieve the subsequent page. When paginating, all
+  /// other parameters provided to ListZones must match the call that provided
+  /// the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListTasksResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListTasksResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/tasks';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListTasksResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Update the task resource.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The relative resource name of the task, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/
+  /// tasks/{task_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/tasks/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. Mask of fields to update.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> patch(
+    GoogleCloudDataplexV1Task request,
+    core.String name, {
+    core.String? updateMask,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the access control policy on the specified resource.
+  ///
+  /// Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and
+  /// PERMISSION_DENIED errors.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/tasks/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> setIamPolicy(
+    GoogleIamV1SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  ///
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a NOT_FOUND error.Note: This operation is designed to be
+  /// used for building permission-aware UIs and command-line tools, not for
+  /// authorization checking. This operation may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/tasks/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1TestIamPermissionsResponse> testIamPermissions(
+    GoogleIamV1TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesTasksJobsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesTasksJobsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Cancel jobs running for the task resource.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the job:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /task/{task_id}/job/{job_id}\`
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/tasks/\[^/\]+/jobs/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> cancel(
+    GoogleCloudDataplexV1CancelJobRequest request,
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name') + ':cancel';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get job resource.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the job:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /tasks/{task_id}/jobs/{job_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/tasks/\[^/\]+/jobs/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Job].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Job> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Job.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists Jobs under the given task.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent environment:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/tasks/{task_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/tasks/\[^/\]+$`.
+  ///
+  /// [pageSize] - Optional. Maximum number of jobs to return. The service may
+  /// return fewer than this value. If unspecified, at most 10 jobs will be
+  /// returned. The maximum value is 1000; values above 1000 will be coerced to
+  /// 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous ListJobs call.
+  /// Provide this to retrieve the subsequent page. When paginating, all other
+  /// parameters provided to ListJobs must match the call that provided the page
+  /// token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListJobsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListJobsResponse> list(
+    core.String parent, {
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/jobs';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListJobsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesZonesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesZonesActionsResource get actions =>
+      ProjectsLocationsLakesZonesActionsResource(_requester);
+  ProjectsLocationsLakesZonesAssetsResource get assets =>
+      ProjectsLocationsLakesZonesAssetsResource(_requester);
+  ProjectsLocationsLakesZonesEntitiesResource get entities =>
+      ProjectsLocationsLakesZonesEntitiesResource(_requester);
+
+  ProjectsLocationsLakesZonesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a zone resource within a lake.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent lake:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [zoneId] - Required. Zone identifier. This ID will be used to generate
+  /// names such as database and dataset names when publishing metadata to Hive
+  /// Metastore and BigQuery. * Must contain only lowercase letters, numbers and
+  /// hyphens. * Must start with a letter. * Must end with a number or a letter.
+  /// * Must be between 1-63 characters. * Must be unique across all lakes from
+  /// all locations in a project. * Must not be one of the reserved IDs (i.e.
+  /// "default", "global-temp")
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> create(
+    GoogleCloudDataplexV1Zone request,
+    core.String parent, {
+    core.bool? validateOnly,
+    core.String? zoneId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if (zoneId != null) 'zoneId': [zoneId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/zones';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a zone resource.
+  ///
+  /// All assets within a zone must be deleted before the zone can be deleted.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the zone:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /zones/{zone_id}\`
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Retrieves a zone resource.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the zone:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /zones/{zone_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Zone].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Zone> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Zone.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets the access control policy for a resource.
+  ///
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy.Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected.Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset.The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists zone resources in a lake.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent lake:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. Filter request.
+  ///
+  /// [orderBy] - Optional. Order by fields for the result.
+  ///
+  /// [pageSize] - Optional. Maximum number of zones to return. The service may
+  /// return fewer than this value. If unspecified, at most 10 zones will be
+  /// returned. The maximum value is 1000; values above 1000 will be coerced to
+  /// 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous ListZones
+  /// call. Provide this to retrieve the subsequent page. When paginating, all
+  /// other parameters provided to ListZones must match the call that provided
+  /// the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListZonesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListZonesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/zones';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListZonesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates a zone resource.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The relative resource name of the zone, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. Mask of fields to update.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> patch(
+    GoogleCloudDataplexV1Zone request,
+    core.String name, {
+    core.String? updateMask,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the access control policy on the specified resource.
+  ///
+  /// Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and
+  /// PERMISSION_DENIED errors.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> setIamPolicy(
+    GoogleIamV1SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  ///
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a NOT_FOUND error.Note: This operation is designed to be
+  /// used for building permission-aware UIs and command-line tools, not for
+  /// authorization checking. This operation may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1TestIamPermissionsResponse> testIamPermissions(
+    GoogleIamV1TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesZonesActionsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesZonesActionsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Lists action resources in a zone.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent zone:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [pageSize] - Optional. Maximum number of actions to return. The service
+  /// may return fewer than this value. If unspecified, at most 10 actions will
+  /// be returned. The maximum value is 1000; values above 1000 will be coerced
+  /// to 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous
+  /// ListZoneActions call. Provide this to retrieve the subsequent page. When
+  /// paginating, all other parameters provided to ListZoneActions must match
+  /// the call that provided the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListActionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListActionsResponse> list(
+    core.String parent, {
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/actions';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListActionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesZonesAssetsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesZonesAssetsActionsResource get actions =>
+      ProjectsLocationsLakesZonesAssetsActionsResource(_requester);
+
+  ProjectsLocationsLakesZonesAssetsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates an asset resource.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent zone:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /zones/{zone_id}\`
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [assetId] - Required. Asset identifier. This ID will be used to generate
+  /// names such as table names when publishing metadata to Hive Metastore and
+  /// BigQuery. * Must contain only lowercase letters, numbers and hyphens. *
+  /// Must start with a letter. * Must end with a number or a letter. * Must be
+  /// between 1-63 characters. * Must be unique within the zone.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> create(
+    GoogleCloudDataplexV1Asset request,
+    core.String parent, {
+    core.String? assetId,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (assetId != null) 'assetId': [assetId],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/assets';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes an asset resource.
+  ///
+  /// The referenced storage resource is detached (default) or deleted based on
+  /// the associated Lifecycle policy.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the asset:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /zones/{zone_id}/assets/{asset_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/assets/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Retrieves an asset resource.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the asset:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /zones/{zone_id}/assets/{asset_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/assets/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Asset].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Asset> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Asset.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets the access control policy for a resource.
+  ///
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/assets/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy.Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected.Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset.The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists asset resources in a zone.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent zone:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}
+  /// /zones/{zone_id}\`
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. Filter request.
+  ///
+  /// [orderBy] - Optional. Order by fields for the result.
+  ///
+  /// [pageSize] - Optional. Maximum number of asset to return. The service may
+  /// return fewer than this value. If unspecified, at most 10 assets will be
+  /// returned. The maximum value is 1000; values above 1000 will be coerced to
+  /// 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous ListAssets
+  /// call. Provide this to retrieve the subsequent page. When paginating, all
+  /// other parameters provided to ListAssets must match the call that provided
+  /// the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListAssetsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListAssetsResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/assets';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListAssetsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates an asset resource.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The relative resource name of the asset, of the
+  /// form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/assets/\[^/\]+$`.
+  ///
+  /// [updateMask] - Required. Mask of fields to update.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> patch(
+    GoogleCloudDataplexV1Asset request,
+    core.String name, {
+    core.String? updateMask,
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the access control policy on the specified resource.
+  ///
+  /// Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and
+  /// PERMISSION_DENIED errors.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/assets/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1Policy> setIamPolicy(
+    GoogleIamV1SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1Policy.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  ///
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a NOT_FOUND error.Note: This operation is designed to be
+  /// used for building permission-aware UIs and command-line tools, not for
+  /// authorization checking. This operation may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/assets/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleIamV1TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleIamV1TestIamPermissionsResponse> testIamPermissions(
+    GoogleIamV1TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleIamV1TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesZonesAssetsActionsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesZonesAssetsActionsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Lists action resources in an asset.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent asset:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/assets/\[^/\]+$`.
+  ///
+  /// [pageSize] - Optional. Maximum number of actions to return. The service
+  /// may return fewer than this value. If unspecified, at most 10 actions will
+  /// be returned. The maximum value is 1000; values above 1000 will be coerced
+  /// to 1000.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous
+  /// ListAssetActions call. Provide this to retrieve the subsequent page. When
+  /// paginating, all other parameters provided to ListAssetActions must match
+  /// the call that provided the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListActionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListActionsResponse> list(
+    core.String parent, {
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/actions';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListActionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesZonesEntitiesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesZonesEntitiesPartitionsResource get partitions =>
+      ProjectsLocationsLakesZonesEntitiesPartitionsResource(_requester);
+
+  ProjectsLocationsLakesZonesEntitiesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Create a metadata entity.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent zone:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Entity].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Entity> create(
+    GoogleCloudDataplexV1Entity request,
+    core.String parent, {
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/entities';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Entity.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Delete a metadata entity.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the entity:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/entities/\[^/\]+$`.
+  ///
+  /// [etag] - Required. The etag associated with the partition if it was
+  /// previously retrieved.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(
+    core.String name, {
+    core.String? etag,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (etag != null) 'etag': [etag],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get a metadata entity.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the entity:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/entities/\[^/\]+$`.
+  ///
+  /// [view] - Optional. Used to select the subset of entity information to
+  /// return. Defaults to BASIC.
+  /// Possible string values are:
+  /// - "ENTITY_VIEW_UNSPECIFIED" : The API will default to the BASIC view.
+  /// - "BASIC" : Minimal view that does not include the schema.
+  /// - "SCHEMA" : Include basic information and schema.
+  /// - "FULL" : Include everything. Currently, this is the same as the SCHEMA
+  /// view.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Entity].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Entity> get(
+    core.String name, {
+    core.String? view,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (view != null) 'view': [view],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Entity.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List metadata entities in a zone.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent zone:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. The following filter parameters can be added to the
+  /// URL to limit the entities returned by the API: Entity ID:
+  /// ?filter="id=entityID" Asset ID: ?filter="asset=assetID" Data path
+  /// ?filter="data_path=gs://my-bucket" Is HIVE compatible:
+  /// ?filter=”hive_compatible=true” Is BigQuery compatible:
+  /// ?filter=”bigquery_compatible=true”
+  ///
+  /// [pageSize] - Optional. Maximum number of entities to return. The service
+  /// may return fewer than this value. If unspecified, 100 entities will be
+  /// returned by default. The maximum value is 500; larger values will will be
+  /// truncated to 500.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous ListEntities
+  /// call. Provide this to retrieve the subsequent page. When paginating, all
+  /// other parameters provided to ListEntities must match the call that
+  /// provided the page token.
+  ///
+  /// [view] - Required. Specify the entity view to make a partial list request.
+  /// Possible string values are:
+  /// - "ENTITY_VIEW_UNSPECIFIED" : The default unset value. The API will
+  /// default to the FULL view.
+  /// - "TABLES" : Only list table entities.
+  /// - "FILESETS" : Only list fileset entities.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListEntitiesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListEntitiesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? view,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if (view != null) 'view': [view],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/entities';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListEntitiesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Update a metadata entity.
+  ///
+  /// Only supports full resource update.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The resource name of the entity, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/entities/\[^/\]+$`.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Entity].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Entity> update(
+    GoogleCloudDataplexV1Entity request,
+    core.String name, {
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PUT',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Entity.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsLakesZonesEntitiesPartitionsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsLakesZonesEntitiesPartitionsResource(
+      commons.ApiRequester client)
+      : _requester = client;
+
+  /// Create a metadata partition.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent zone:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/entities/\[^/\]+$`.
+  ///
+  /// [validateOnly] - Optional. Only validate the request, but do not perform
+  /// mutations. The default is false.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Partition].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Partition> create(
+    GoogleCloudDataplexV1Partition request,
+    core.String parent, {
+    core.bool? validateOnly,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (validateOnly != null) 'validateOnly': ['${validateOnly}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/partitions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Partition.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Delete a metadata partition.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the partition. format:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}/partitions/{partition_value_path}.
+  /// The {partition_value_path} segment consists of an ordered sequence of
+  /// partition values separated by "/". All values must be provided.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/entities/\[^/\]+/partitions/.*$`.
+  ///
+  /// [etag] - Optional. The etag associated with the partition if it was
+  /// previously retrieved.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(
+    core.String name, {
+    core.String? etag,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (etag != null) 'etag': [etag],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get a metadata partition of an entity.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the partition:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}/partitions/{partition_value_path}.
+  /// The {partition_value_path} segment consists of an ordered sequence of
+  /// partition values separated by "/". All values must be provided.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/entities/\[^/\]+/partitions/.*$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1Partition].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1Partition> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1Partition.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List metadata partitions of an entity.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The resource name of the parent entity:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/lakes/\[^/\]+/zones/\[^/\]+/entities/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. Filter the partitions returned to the caller using a
+  /// key vslue pair expression. The filter expression supports: logical
+  /// operators: AND, OR comparison operators: \<, \>, \>=, \<= ,=, != LIKE
+  /// operators: The right hand of a LIKE operator supports “.” and “*” for
+  /// wildcard searches, for example "value1 LIKE ".*oo.*" parenthetical
+  /// grouping: ( )Sample filter expression: \`?filter="key1 \< value1 OR key2
+  /// \> value2"Notes: Keys to the left of operators are case insensitive.
+  /// Partition results are sorted first by creation time, then by lexicographic
+  /// order. Up to 20 key value filter pairs are allowed, but due to performance
+  /// considerations, only the first 10 will be used as a filter.
+  ///
+  /// [pageSize] - Optional. Maximum number of partitions to return. The service
+  /// may return fewer than this value. If unspecified, 100 partitions will be
+  /// returned by default. The maximum page size is 500; larger values will will
+  /// be truncated to 500.
+  ///
+  /// [pageToken] - Optional. Page token received from a previous ListPartitions
+  /// call. Provide this to retrieve the subsequent page. When paginating, all
+  /// other parameters provided to ListPartitions must match the call that
+  /// provided the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleCloudDataplexV1ListPartitionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleCloudDataplexV1ListPartitionsResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/partitions';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleCloudDataplexV1ListPartitionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsOperationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsOperationsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Starts asynchronous cancellation on a long-running operation.
+  ///
+  /// The server makes a best effort to cancel the operation, but success is not
+  /// guaranteed. If the server doesn't support this method, it returns
+  /// google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation or
+  /// other methods to check whether the cancellation succeeded or whether the
+  /// operation completed despite cancellation. On successful cancellation, the
+  /// operation is not deleted; instead, it becomes an operation with an
+  /// Operation.error value with a google.rpc.Status.code of 1, corresponding to
+  /// Code.CANCELLED.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource to be cancelled.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> cancel(
+    GoogleLongrunningCancelOperationRequest request,
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name') + ':cancel';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a long-running operation.
+  ///
+  /// This method indicates that the client is no longer interested in the
+  /// operation result. It does not cancel the operation. If the server doesn't
+  /// support this method, it returns google.rpc.Code.UNIMPLEMENTED.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource to be deleted.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// 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.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists operations that match the specified filter in the request.
+  ///
+  /// If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE:
+  /// the name binding allows API services to override the binding to use
+  /// different resource name schemes, such as users / * /operations. To
+  /// override the binding, API services can add a binding such as
+  /// "/v1/{name=users / * }/operations" to their service configuration. For
+  /// backwards compatibility, the default name includes the operations
+  /// collection id, however overriding users must ensure the name binding is
+  /// the parent resource, without the operations collection id.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation's parent resource.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [pageSize] - The standard list page size.
+  ///
+  /// [pageToken] - The standard list page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningListOperationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningListOperationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name') + '/operations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningListOperationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+/// 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 {}.
+typedef Empty = $Empty;
+
+/// Action represents an issue requiring administrator action for resolution.
+class GoogleCloudDataplexV1Action {
+  /// The relative resource name of the asset, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}.
+  ///
+  /// Output only.
+  core.String? asset;
+
+  /// The category of issue associated with the action.
+  /// Possible string values are:
+  /// - "CATEGORY_UNSPECIFIED" : Unspecified category.
+  /// - "RESOURCE_MANAGEMENT" : Resource management related issues.
+  /// - "SECURITY_POLICY" : Security policy related issues.
+  /// - "DATA_DISCOVERY" : Data and discovery related issues.
+  core.String? category;
+
+  /// The list of data locations associated with this action.
+  ///
+  /// Cloud Storage locations are represented as URI paths(E.g.
+  /// gs://bucket/table1/year=2020/month=Jan/). BigQuery locations refer to
+  /// resource names(E.g.
+  /// bigquery.googleapis.com/projects/project-id/datasets/dataset-id).
+  core.List<core.String>? dataLocations;
+
+  /// The time that the issue was detected.
+  core.String? detectTime;
+
+  /// Details for issues related to applying security policy.
+  GoogleCloudDataplexV1ActionFailedSecurityPolicyApply?
+      failedSecurityPolicyApply;
+
+  /// Details for issues related to incompatible schemas detected within data.
+  GoogleCloudDataplexV1ActionIncompatibleDataSchema? incompatibleDataSchema;
+
+  /// Details for issues related to invalid or unsupported data formats.
+  GoogleCloudDataplexV1ActionInvalidDataFormat? invalidDataFormat;
+
+  /// Details for issues related to invalid data arrangement.
+  GoogleCloudDataplexV1ActionInvalidDataOrganization? invalidDataOrganization;
+
+  /// Details for issues related to invalid or unsupported data partition
+  /// structure.
+  GoogleCloudDataplexV1ActionInvalidDataPartition? invalidDataPartition;
+
+  /// Detailed description of the issue requiring action.
+  core.String? issue;
+
+  /// The relative resource name of the lake, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}.
+  ///
+  /// Output only.
+  core.String? lake;
+
+  /// Details for issues related to absence of data within managed resources.
+  GoogleCloudDataplexV1ActionMissingData? missingData;
+
+  /// Details for issues related to absence of a managed resource.
+  GoogleCloudDataplexV1ActionMissingResource? missingResource;
+
+  /// The relative resource name of the action, of the form:
+  /// projects/{project}/locations/{location}/lakes/{lake}/actions/{action}
+  /// projects/{project}/locations/{location}/lakes/{lake}/zones/{zone}/actions/{action}
+  /// projects/{project}/locations/{location}/lakes/{lake}/zones/{zone}/assets/{asset}/actions/{action}.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Details for issues related to lack of permissions to access data
+  /// resources.
+  GoogleCloudDataplexV1ActionUnauthorizedResource? unauthorizedResource;
+
+  /// The relative resource name of the zone, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.
+  ///
+  /// Output only.
+  core.String? zone;
+
+  GoogleCloudDataplexV1Action({
+    this.asset,
+    this.category,
+    this.dataLocations,
+    this.detectTime,
+    this.failedSecurityPolicyApply,
+    this.incompatibleDataSchema,
+    this.invalidDataFormat,
+    this.invalidDataOrganization,
+    this.invalidDataPartition,
+    this.issue,
+    this.lake,
+    this.missingData,
+    this.missingResource,
+    this.name,
+    this.unauthorizedResource,
+    this.zone,
+  });
+
+  GoogleCloudDataplexV1Action.fromJson(core.Map _json)
+      : this(
+          asset:
+              _json.containsKey('asset') ? _json['asset'] as core.String : null,
+          category: _json.containsKey('category')
+              ? _json['category'] as core.String
+              : null,
+          dataLocations: _json.containsKey('dataLocations')
+              ? (_json['dataLocations'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          detectTime: _json.containsKey('detectTime')
+              ? _json['detectTime'] as core.String
+              : null,
+          failedSecurityPolicyApply: _json
+                  .containsKey('failedSecurityPolicyApply')
+              ? GoogleCloudDataplexV1ActionFailedSecurityPolicyApply.fromJson(
+                  _json['failedSecurityPolicyApply']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          incompatibleDataSchema: _json.containsKey('incompatibleDataSchema')
+              ? GoogleCloudDataplexV1ActionIncompatibleDataSchema.fromJson(
+                  _json['incompatibleDataSchema']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          invalidDataFormat: _json.containsKey('invalidDataFormat')
+              ? GoogleCloudDataplexV1ActionInvalidDataFormat.fromJson(
+                  _json['invalidDataFormat']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          invalidDataOrganization: _json.containsKey('invalidDataOrganization')
+              ? GoogleCloudDataplexV1ActionInvalidDataOrganization.fromJson(
+                  _json['invalidDataOrganization']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          invalidDataPartition: _json.containsKey('invalidDataPartition')
+              ? GoogleCloudDataplexV1ActionInvalidDataPartition.fromJson(
+                  _json['invalidDataPartition']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          issue:
+              _json.containsKey('issue') ? _json['issue'] as core.String : null,
+          lake: _json.containsKey('lake') ? _json['lake'] as core.String : null,
+          missingData: _json.containsKey('missingData')
+              ? GoogleCloudDataplexV1ActionMissingData.fromJson(
+                  _json['missingData'] as core.Map<core.String, core.dynamic>)
+              : null,
+          missingResource: _json.containsKey('missingResource')
+              ? GoogleCloudDataplexV1ActionMissingResource.fromJson(
+                  _json['missingResource']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          unauthorizedResource: _json.containsKey('unauthorizedResource')
+              ? GoogleCloudDataplexV1ActionUnauthorizedResource.fromJson(
+                  _json['unauthorizedResource']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          zone: _json.containsKey('zone') ? _json['zone'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (asset != null) 'asset': asset!,
+        if (category != null) 'category': category!,
+        if (dataLocations != null) 'dataLocations': dataLocations!,
+        if (detectTime != null) 'detectTime': detectTime!,
+        if (failedSecurityPolicyApply != null)
+          'failedSecurityPolicyApply': failedSecurityPolicyApply!,
+        if (incompatibleDataSchema != null)
+          'incompatibleDataSchema': incompatibleDataSchema!,
+        if (invalidDataFormat != null) 'invalidDataFormat': invalidDataFormat!,
+        if (invalidDataOrganization != null)
+          'invalidDataOrganization': invalidDataOrganization!,
+        if (invalidDataPartition != null)
+          'invalidDataPartition': invalidDataPartition!,
+        if (issue != null) 'issue': issue!,
+        if (lake != null) 'lake': lake!,
+        if (missingData != null) 'missingData': missingData!,
+        if (missingResource != null) 'missingResource': missingResource!,
+        if (name != null) 'name': name!,
+        if (unauthorizedResource != null)
+          'unauthorizedResource': unauthorizedResource!,
+        if (zone != null) 'zone': zone!,
+      };
+}
+
+/// Failed to apply security policy to the managed resource(s) under a lake,
+/// zone or an asset.
+///
+/// For a lake or zone resource, one or more underlying assets has a failure
+/// applying security policy to the associated managed resource.
+class GoogleCloudDataplexV1ActionFailedSecurityPolicyApply {
+  /// Resource name of one of the assets with failing security policy
+  /// application.
+  ///
+  /// Populated for a lake or zone resource only.
+  core.String? asset;
+
+  GoogleCloudDataplexV1ActionFailedSecurityPolicyApply({
+    this.asset,
+  });
+
+  GoogleCloudDataplexV1ActionFailedSecurityPolicyApply.fromJson(core.Map _json)
+      : this(
+          asset:
+              _json.containsKey('asset') ? _json['asset'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (asset != null) 'asset': asset!,
+      };
+}
+
+/// Action details for incompatible schemas detected by discovery.
+class GoogleCloudDataplexV1ActionIncompatibleDataSchema {
+  /// The existing and expected schema of the table.
+  ///
+  /// The schema is provided as a JSON formatted structure listing columns and
+  /// data types.
+  core.String? existingSchema;
+
+  /// The new and incompatible schema within the table.
+  ///
+  /// The schema is provided as a JSON formatted structured listing columns and
+  /// data types.
+  core.String? newSchema;
+
+  /// The list of data locations sampled and used for format/schema inference.
+  core.List<core.String>? sampledDataLocations;
+
+  /// Whether the action relates to a schema that is incompatible or modified.
+  /// Possible string values are:
+  /// - "SCHEMA_CHANGE_UNSPECIFIED" : Schema change unspecified.
+  /// - "INCOMPATIBLE" : Newly discovered schema is incompatible with existing
+  /// schema.
+  /// - "MODIFIED" : Newly discovered schema has changed from existing schema
+  /// for data in a curated zone.
+  core.String? schemaChange;
+
+  /// The name of the table containing invalid data.
+  core.String? table;
+
+  GoogleCloudDataplexV1ActionIncompatibleDataSchema({
+    this.existingSchema,
+    this.newSchema,
+    this.sampledDataLocations,
+    this.schemaChange,
+    this.table,
+  });
+
+  GoogleCloudDataplexV1ActionIncompatibleDataSchema.fromJson(core.Map _json)
+      : this(
+          existingSchema: _json.containsKey('existingSchema')
+              ? _json['existingSchema'] as core.String
+              : null,
+          newSchema: _json.containsKey('newSchema')
+              ? _json['newSchema'] as core.String
+              : null,
+          sampledDataLocations: _json.containsKey('sampledDataLocations')
+              ? (_json['sampledDataLocations'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          schemaChange: _json.containsKey('schemaChange')
+              ? _json['schemaChange'] as core.String
+              : null,
+          table:
+              _json.containsKey('table') ? _json['table'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (existingSchema != null) 'existingSchema': existingSchema!,
+        if (newSchema != null) 'newSchema': newSchema!,
+        if (sampledDataLocations != null)
+          'sampledDataLocations': sampledDataLocations!,
+        if (schemaChange != null) 'schemaChange': schemaChange!,
+        if (table != null) 'table': table!,
+      };
+}
+
+/// Action details for invalid or unsupported data files detected by discovery.
+class GoogleCloudDataplexV1ActionInvalidDataFormat {
+  /// The expected data format of the entity.
+  core.String? expectedFormat;
+
+  /// The new unexpected data format within the entity.
+  core.String? newFormat;
+
+  /// The list of data locations sampled and used for format/schema inference.
+  core.List<core.String>? sampledDataLocations;
+
+  GoogleCloudDataplexV1ActionInvalidDataFormat({
+    this.expectedFormat,
+    this.newFormat,
+    this.sampledDataLocations,
+  });
+
+  GoogleCloudDataplexV1ActionInvalidDataFormat.fromJson(core.Map _json)
+      : this(
+          expectedFormat: _json.containsKey('expectedFormat')
+              ? _json['expectedFormat'] as core.String
+              : null,
+          newFormat: _json.containsKey('newFormat')
+              ? _json['newFormat'] as core.String
+              : null,
+          sampledDataLocations: _json.containsKey('sampledDataLocations')
+              ? (_json['sampledDataLocations'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (expectedFormat != null) 'expectedFormat': expectedFormat!,
+        if (newFormat != null) 'newFormat': newFormat!,
+        if (sampledDataLocations != null)
+          'sampledDataLocations': sampledDataLocations!,
+      };
+}
+
+/// Action details for invalid data arrangement.
+typedef GoogleCloudDataplexV1ActionInvalidDataOrganization = $Empty;
+
+/// Action details for invalid or unsupported partitions detected by discovery.
+class GoogleCloudDataplexV1ActionInvalidDataPartition {
+  /// The issue type of InvalidDataPartition.
+  /// Possible string values are:
+  /// - "PARTITION_STRUCTURE_UNSPECIFIED" : PartitionStructure unspecified.
+  /// - "CONSISTENT_KEYS" : Consistent hive-style partition definition (both raw
+  /// and curated zone).
+  /// - "HIVE_STYLE_KEYS" : Hive style partition definition (curated zone only).
+  core.String? expectedStructure;
+
+  GoogleCloudDataplexV1ActionInvalidDataPartition({
+    this.expectedStructure,
+  });
+
+  GoogleCloudDataplexV1ActionInvalidDataPartition.fromJson(core.Map _json)
+      : this(
+          expectedStructure: _json.containsKey('expectedStructure')
+              ? _json['expectedStructure'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (expectedStructure != null) 'expectedStructure': expectedStructure!,
+      };
+}
+
+/// Action details for absence of data detected by discovery.
+typedef GoogleCloudDataplexV1ActionMissingData = $Empty;
+
+/// Action details for resource references in assets that cannot be located.
+typedef GoogleCloudDataplexV1ActionMissingResource = $Empty;
+
+/// Action details for unauthorized resource issues raised to indicate that the
+/// service account associated with the lake instance is not authorized to
+/// access or manage the resource associated with an asset.
+typedef GoogleCloudDataplexV1ActionUnauthorizedResource = $Empty;
+
+/// An asset represents a cloud resource that is being managed within a lake as
+/// a member of a zone.
+class GoogleCloudDataplexV1Asset {
+  /// The time when the asset was created.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// Description of the asset.
+  ///
+  /// Optional.
+  core.String? description;
+
+  /// Specification of the discovery feature applied to data referenced by this
+  /// asset.
+  ///
+  /// When this spec is left unset, the asset will use the spec set on the
+  /// parent zone.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1AssetDiscoverySpec? discoverySpec;
+
+  /// Status of the discovery feature applied to data referenced by this asset.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1AssetDiscoveryStatus? discoveryStatus;
+
+  /// User friendly display name.
+  ///
+  /// Optional.
+  core.String? displayName;
+
+  /// User defined labels for the asset.
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? labels;
+
+  /// The relative resource name of the asset, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Specification of the resource that is referenced by this asset.
+  ///
+  /// Required.
+  GoogleCloudDataplexV1AssetResourceSpec? resourceSpec;
+
+  /// Status of the resource referenced by this asset.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1AssetResourceStatus? resourceStatus;
+
+  /// Status of the security policy applied to resource referenced by this
+  /// asset.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1AssetSecurityStatus? securityStatus;
+
+  /// Current state of the asset.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State is not specified.
+  /// - "ACTIVE" : Resource is active, i.e., ready to use.
+  /// - "CREATING" : Resource is under creation.
+  /// - "DELETING" : Resource is under deletion.
+  /// - "ACTION_REQUIRED" : Resource is active but has unresolved actions.
+  core.String? state;
+
+  /// System generated globally unique ID for the asset.
+  ///
+  /// This ID will be different if the asset is deleted and re-created with the
+  /// same name.
+  ///
+  /// Output only.
+  core.String? uid;
+
+  /// The time when the asset was last updated.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1Asset({
+    this.createTime,
+    this.description,
+    this.discoverySpec,
+    this.discoveryStatus,
+    this.displayName,
+    this.labels,
+    this.name,
+    this.resourceSpec,
+    this.resourceStatus,
+    this.securityStatus,
+    this.state,
+    this.uid,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1Asset.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          discoverySpec: _json.containsKey('discoverySpec')
+              ? GoogleCloudDataplexV1AssetDiscoverySpec.fromJson(
+                  _json['discoverySpec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          discoveryStatus: _json.containsKey('discoveryStatus')
+              ? GoogleCloudDataplexV1AssetDiscoveryStatus.fromJson(
+                  _json['discoveryStatus']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          displayName: _json.containsKey('displayName')
+              ? _json['displayName'] as core.String
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          resourceSpec: _json.containsKey('resourceSpec')
+              ? GoogleCloudDataplexV1AssetResourceSpec.fromJson(
+                  _json['resourceSpec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          resourceStatus: _json.containsKey('resourceStatus')
+              ? GoogleCloudDataplexV1AssetResourceStatus.fromJson(
+                  _json['resourceStatus']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          securityStatus: _json.containsKey('securityStatus')
+              ? GoogleCloudDataplexV1AssetSecurityStatus.fromJson(
+                  _json['securityStatus']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          uid: _json.containsKey('uid') ? _json['uid'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (discoverySpec != null) 'discoverySpec': discoverySpec!,
+        if (discoveryStatus != null) 'discoveryStatus': discoveryStatus!,
+        if (displayName != null) 'displayName': displayName!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (resourceSpec != null) 'resourceSpec': resourceSpec!,
+        if (resourceStatus != null) 'resourceStatus': resourceStatus!,
+        if (securityStatus != null) 'securityStatus': securityStatus!,
+        if (state != null) 'state': state!,
+        if (uid != null) 'uid': uid!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Settings to manage the metadata discovery and publishing for an asset.
+class GoogleCloudDataplexV1AssetDiscoverySpec {
+  /// Configuration for CSV data.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions? csvOptions;
+
+  /// Whether discovery is enabled.
+  ///
+  /// Optional.
+  core.bool? enabled;
+
+  /// The list of patterns to apply for selecting data to exclude during
+  /// discovery.
+  ///
+  /// For Cloud Storage bucket assets, these are interpreted as glob patterns
+  /// used to match object names. For BigQuery dataset assets, these are
+  /// interpreted as patterns to match table names.
+  ///
+  /// Optional.
+  core.List<core.String>? excludePatterns;
+
+  /// The list of patterns to apply for selecting data to include during
+  /// discovery if only a subset of the data should considered.
+  ///
+  /// For Cloud Storage bucket assets, these are interpreted as glob patterns
+  /// used to match object names. For BigQuery dataset assets, these are
+  /// interpreted as patterns to match table names.
+  ///
+  /// Optional.
+  core.List<core.String>? includePatterns;
+
+  /// Configuration for Json data.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions? jsonOptions;
+
+  /// Cron schedule (https://en.wikipedia.org/wiki/Cron) for running discovery
+  /// periodically.
+  ///
+  /// Successive discovery runs must be scheduled at least 60 minutes apart. The
+  /// default value is to run discovery every 60 minutes. To explicitly set a
+  /// timezone to the cron tab, apply a prefix in the cron tab:
+  /// "CRON_TZ=${IANA_TIME_ZONE}" or TZ=${IANA_TIME_ZONE}". The
+  /// ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database.
+  /// For example, "CRON_TZ=America/New_York 1 * * * *", or "TZ=America/New_York
+  /// 1 * * * *".
+  ///
+  /// Optional.
+  core.String? schedule;
+
+  GoogleCloudDataplexV1AssetDiscoverySpec({
+    this.csvOptions,
+    this.enabled,
+    this.excludePatterns,
+    this.includePatterns,
+    this.jsonOptions,
+    this.schedule,
+  });
+
+  GoogleCloudDataplexV1AssetDiscoverySpec.fromJson(core.Map _json)
+      : this(
+          csvOptions: _json.containsKey('csvOptions')
+              ? GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions.fromJson(
+                  _json['csvOptions'] as core.Map<core.String, core.dynamic>)
+              : null,
+          enabled: _json.containsKey('enabled')
+              ? _json['enabled'] as core.bool
+              : null,
+          excludePatterns: _json.containsKey('excludePatterns')
+              ? (_json['excludePatterns'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          includePatterns: _json.containsKey('includePatterns')
+              ? (_json['includePatterns'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          jsonOptions: _json.containsKey('jsonOptions')
+              ? GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions.fromJson(
+                  _json['jsonOptions'] as core.Map<core.String, core.dynamic>)
+              : null,
+          schedule: _json.containsKey('schedule')
+              ? _json['schedule'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (csvOptions != null) 'csvOptions': csvOptions!,
+        if (enabled != null) 'enabled': enabled!,
+        if (excludePatterns != null) 'excludePatterns': excludePatterns!,
+        if (includePatterns != null) 'includePatterns': includePatterns!,
+        if (jsonOptions != null) 'jsonOptions': jsonOptions!,
+        if (schedule != null) 'schedule': schedule!,
+      };
+}
+
+/// Describe CSV and similar semi-structured data formats.
+typedef GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions
+    = $DiscoverySpecCsvOptions;
+
+/// Describe JSON data format.
+typedef GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions
+    = $DiscoverySpecJsonOptions;
+
+/// Status of discovery for an asset.
+class GoogleCloudDataplexV1AssetDiscoveryStatus {
+  /// The duration of the last discovery run.
+  core.String? lastRunDuration;
+
+  /// The start time of the last discovery run.
+  core.String? lastRunTime;
+
+  /// Additional information about the current state.
+  core.String? message;
+
+  /// The current status of the discovery feature.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State is unspecified.
+  /// - "SCHEDULED" : Discovery for the asset is scheduled.
+  /// - "IN_PROGRESS" : Discovery for the asset is running.
+  /// - "PAUSED" : Discovery for the asset is currently paused (e.g. due to a
+  /// lack of available resources). It will be automatically resumed.
+  /// - "DISABLED" : Discovery for the asset is disabled.
+  core.String? state;
+
+  /// Data Stats of the asset reported by discovery.
+  GoogleCloudDataplexV1AssetDiscoveryStatusStats? stats;
+
+  /// Last update time of the status.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1AssetDiscoveryStatus({
+    this.lastRunDuration,
+    this.lastRunTime,
+    this.message,
+    this.state,
+    this.stats,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1AssetDiscoveryStatus.fromJson(core.Map _json)
+      : this(
+          lastRunDuration: _json.containsKey('lastRunDuration')
+              ? _json['lastRunDuration'] as core.String
+              : null,
+          lastRunTime: _json.containsKey('lastRunTime')
+              ? _json['lastRunTime'] as core.String
+              : null,
+          message: _json.containsKey('message')
+              ? _json['message'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          stats: _json.containsKey('stats')
+              ? GoogleCloudDataplexV1AssetDiscoveryStatusStats.fromJson(
+                  _json['stats'] as core.Map<core.String, core.dynamic>)
+              : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (lastRunDuration != null) 'lastRunDuration': lastRunDuration!,
+        if (lastRunTime != null) 'lastRunTime': lastRunTime!,
+        if (message != null) 'message': message!,
+        if (state != null) 'state': state!,
+        if (stats != null) 'stats': stats!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// The aggregated data statistics for the asset reported by discovery.
+class GoogleCloudDataplexV1AssetDiscoveryStatusStats {
+  /// The count of data items within the referenced resource.
+  core.String? dataItems;
+
+  /// The number of stored data bytes within the referenced resource.
+  core.String? dataSize;
+
+  /// The count of fileset entities within the referenced resource.
+  core.String? filesets;
+
+  /// The count of table entities within the referenced resource.
+  core.String? tables;
+
+  GoogleCloudDataplexV1AssetDiscoveryStatusStats({
+    this.dataItems,
+    this.dataSize,
+    this.filesets,
+    this.tables,
+  });
+
+  GoogleCloudDataplexV1AssetDiscoveryStatusStats.fromJson(core.Map _json)
+      : this(
+          dataItems: _json.containsKey('dataItems')
+              ? _json['dataItems'] as core.String
+              : null,
+          dataSize: _json.containsKey('dataSize')
+              ? _json['dataSize'] as core.String
+              : null,
+          filesets: _json.containsKey('filesets')
+              ? _json['filesets'] as core.String
+              : null,
+          tables: _json.containsKey('tables')
+              ? _json['tables'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (dataItems != null) 'dataItems': dataItems!,
+        if (dataSize != null) 'dataSize': dataSize!,
+        if (filesets != null) 'filesets': filesets!,
+        if (tables != null) 'tables': tables!,
+      };
+}
+
+/// Identifies the cloud resource that is referenced by this asset.
+class GoogleCloudDataplexV1AssetResourceSpec {
+  /// Relative name of the cloud resource that contains the data that is being
+  /// managed within a lake.
+  ///
+  /// For example: projects/{project_number}/buckets/{bucket_id}
+  /// projects/{project_number}/datasets/{dataset_id}
+  ///
+  /// Immutable.
+  core.String? name;
+
+  /// Type of resource.
+  ///
+  /// Required. Immutable.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : Type not specified.
+  /// - "STORAGE_BUCKET" : Cloud Storage bucket.
+  /// - "BIGQUERY_DATASET" : BigQuery dataset.
+  core.String? type;
+
+  GoogleCloudDataplexV1AssetResourceSpec({
+    this.name,
+    this.type,
+  });
+
+  GoogleCloudDataplexV1AssetResourceSpec.fromJson(core.Map _json)
+      : this(
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (name != null) 'name': name!,
+        if (type != null) 'type': type!,
+      };
+}
+
+/// Status of the resource referenced by an asset.
+class GoogleCloudDataplexV1AssetResourceStatus {
+  /// Additional information about the current state.
+  core.String? message;
+
+  /// The current state of the managed resource.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State unspecified.
+  /// - "READY" : Resource does not have any errors.
+  /// - "ERROR" : Resource has errors.
+  core.String? state;
+
+  /// Last update time of the status.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1AssetResourceStatus({
+    this.message,
+    this.state,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1AssetResourceStatus.fromJson(core.Map _json)
+      : this(
+          message: _json.containsKey('message')
+              ? _json['message'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (message != null) 'message': message!,
+        if (state != null) 'state': state!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Security policy status of the asset.
+///
+/// Data security policy, i.e., readers, writers & owners, should be specified
+/// in the lake/zone/asset IAM policy.
+class GoogleCloudDataplexV1AssetSecurityStatus {
+  /// Additional information about the current state.
+  core.String? message;
+
+  /// The current state of the security policy applied to the attached resource.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State unspecified.
+  /// - "READY" : Security policy has been successfully applied to the attached
+  /// resource.
+  /// - "APPLYING" : Security policy is in the process of being applied to the
+  /// attached resource.
+  /// - "ERROR" : Security policy could not be applied to the attached resource
+  /// due to errors.
+  core.String? state;
+
+  /// Last update time of the status.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1AssetSecurityStatus({
+    this.message,
+    this.state,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1AssetSecurityStatus.fromJson(core.Map _json)
+      : this(
+          message: _json.containsKey('message')
+              ? _json['message'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (message != null) 'message': message!,
+        if (state != null) 'state': state!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Aggregated status of the underlying assets of a lake or zone.
+class GoogleCloudDataplexV1AssetStatus {
+  /// Number of active assets.
+  core.int? activeAssets;
+
+  /// Number of assets that are in process of updating the security policy on
+  /// attached resources.
+  core.int? securityPolicyApplyingAssets;
+
+  /// Last update time of the status.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1AssetStatus({
+    this.activeAssets,
+    this.securityPolicyApplyingAssets,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1AssetStatus.fromJson(core.Map _json)
+      : this(
+          activeAssets: _json.containsKey('activeAssets')
+              ? _json['activeAssets'] as core.int
+              : null,
+          securityPolicyApplyingAssets:
+              _json.containsKey('securityPolicyApplyingAssets')
+                  ? _json['securityPolicyApplyingAssets'] as core.int
+                  : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (activeAssets != null) 'activeAssets': activeAssets!,
+        if (securityPolicyApplyingAssets != null)
+          'securityPolicyApplyingAssets': securityPolicyApplyingAssets!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Cancel task jobs.
+typedef GoogleCloudDataplexV1CancelJobRequest = $Empty;
+
+/// Content represents a user-visible notebook or a sql script
+class GoogleCloudDataplexV1Content {
+  /// Content creation time.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// Content data in string format.
+  ///
+  /// Required.
+  core.String? dataText;
+
+  /// Description of the content.
+  ///
+  /// Optional.
+  core.String? description;
+
+  /// User defined labels for the content.
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? labels;
+
+  /// The relative resource name of the content, of the form:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Notebook related configurations.
+  GoogleCloudDataplexV1ContentNotebook? notebook;
+
+  /// The path for the Content file, represented as directory structure.
+  ///
+  /// Unique within a lake. Limited to alphanumerics, hyphens, underscores, dots
+  /// and slashes.
+  ///
+  /// Required.
+  core.String? path;
+
+  /// Sql Script related configurations.
+  GoogleCloudDataplexV1ContentSqlScript? sqlScript;
+
+  /// System generated globally unique ID for the content.
+  ///
+  /// This ID will be different if the content is deleted and re-created with
+  /// the same name.
+  ///
+  /// Output only.
+  core.String? uid;
+
+  /// The time when the content was last updated.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1Content({
+    this.createTime,
+    this.dataText,
+    this.description,
+    this.labels,
+    this.name,
+    this.notebook,
+    this.path,
+    this.sqlScript,
+    this.uid,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1Content.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          dataText: _json.containsKey('dataText')
+              ? _json['dataText'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          notebook: _json.containsKey('notebook')
+              ? GoogleCloudDataplexV1ContentNotebook.fromJson(
+                  _json['notebook'] as core.Map<core.String, core.dynamic>)
+              : null,
+          path: _json.containsKey('path') ? _json['path'] as core.String : null,
+          sqlScript: _json.containsKey('sqlScript')
+              ? GoogleCloudDataplexV1ContentSqlScript.fromJson(
+                  _json['sqlScript'] as core.Map<core.String, core.dynamic>)
+              : null,
+          uid: _json.containsKey('uid') ? _json['uid'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (dataText != null) 'dataText': dataText!,
+        if (description != null) 'description': description!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (notebook != null) 'notebook': notebook!,
+        if (path != null) 'path': path!,
+        if (sqlScript != null) 'sqlScript': sqlScript!,
+        if (uid != null) 'uid': uid!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Configuration for Notebook content.
+class GoogleCloudDataplexV1ContentNotebook {
+  /// Kernel Type of the notebook.
+  ///
+  /// Required.
+  /// Possible string values are:
+  /// - "KERNEL_TYPE_UNSPECIFIED" : Kernel Type unspecified.
+  /// - "PYTHON3" : Python 3 Kernel.
+  core.String? kernelType;
+
+  GoogleCloudDataplexV1ContentNotebook({
+    this.kernelType,
+  });
+
+  GoogleCloudDataplexV1ContentNotebook.fromJson(core.Map _json)
+      : this(
+          kernelType: _json.containsKey('kernelType')
+              ? _json['kernelType'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (kernelType != null) 'kernelType': kernelType!,
+      };
+}
+
+/// Configuration for the Sql Script content.
+class GoogleCloudDataplexV1ContentSqlScript {
+  /// Query Engine to be used for the Sql Query.
+  ///
+  /// Required.
+  /// Possible string values are:
+  /// - "QUERY_ENGINE_UNSPECIFIED" : Value was unspecified.
+  /// - "SPARK" : Spark SQL Query.
+  core.String? engine;
+
+  GoogleCloudDataplexV1ContentSqlScript({
+    this.engine,
+  });
+
+  GoogleCloudDataplexV1ContentSqlScript.fromJson(core.Map _json)
+      : this(
+          engine: _json.containsKey('engine')
+              ? _json['engine'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (engine != null) 'engine': engine!,
+      };
+}
+
+/// Represents tables and fileset metadata contained within a zone.
+class GoogleCloudDataplexV1Entity {
+  /// The ID of the asset associated with the storage location containing the
+  /// entity data.
+  ///
+  /// The entity must be with in the same zone with the asset.
+  ///
+  /// Required. Immutable.
+  core.String? asset;
+
+  /// The name of the associated Data Catalog entry.
+  ///
+  /// Output only.
+  core.String? catalogEntry;
+
+  /// Metadata stores that the entity is compatible with.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1EntityCompatibilityStatus? compatibility;
+
+  /// The time when the entity was created.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// The storage path of the entity data.
+  ///
+  /// For Cloud Storage data, this is the fully-qualified path to the entity,
+  /// such as gs://bucket/path/to/data. For BigQuery data, this is the name of
+  /// the table resource, such as
+  /// projects/project_id/datasets/dataset_id/tables/table_id.
+  ///
+  /// Required. Immutable.
+  core.String? dataPath;
+
+  /// The set of items within the data path constituting the data in the entity,
+  /// represented as a glob path.
+  ///
+  /// Example: gs://bucket/path/to/data / * * / * .csv.
+  ///
+  /// Optional.
+  core.String? dataPathPattern;
+
+  /// User friendly longer description text.
+  ///
+  /// Must be shorter than or equal to 1024 characters.
+  ///
+  /// Optional.
+  core.String? description;
+
+  /// Display name must be shorter than or equal to 63 characters.
+  ///
+  /// Optional.
+  core.String? displayName;
+
+  /// The etag for this entity.
+  ///
+  /// Required for update and delete requests. Must match the server's etag.
+  ///
+  /// Optional.
+  core.String? etag;
+
+  /// Identifies the storage format of the entity data.
+  ///
+  /// It does not apply to entities with data stored in BigQuery.
+  ///
+  /// Required.
+  GoogleCloudDataplexV1StorageFormat? format;
+
+  /// A user-provided entity ID.
+  ///
+  /// It is mutable, and will be used as the published table name. Specifying a
+  /// new ID in an update entity request will override the existing value. The
+  /// ID must contain only letters (a-z, A-Z), numbers (0-9), and underscores.
+  /// Must begin with a letter.
+  ///
+  /// Required.
+  core.String? id;
+
+  /// The resource name of the entity, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{id}.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// The description of the data structure and layout.
+  ///
+  /// The schema is not included in list responses. It is only included in
+  /// SCHEMA and FULL entity views of a GetEntity response.
+  ///
+  /// Required.
+  GoogleCloudDataplexV1Schema? schema;
+
+  /// Identifies the storage system of the entity data.
+  ///
+  /// Required. Immutable.
+  /// Possible string values are:
+  /// - "STORAGE_SYSTEM_UNSPECIFIED" : Storage system unspecified.
+  /// - "CLOUD_STORAGE" : The entity data is contained within a Cloud Storage
+  /// bucket.
+  /// - "BIGQUERY" : The entity data is contained within a BigQuery dataset.
+  core.String? system;
+
+  /// The type of entity.
+  ///
+  /// Required. Immutable.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : Type unspecified.
+  /// - "TABLE" : Structured and semi-structured data.
+  /// - "FILESET" : Unstructured data.
+  core.String? type;
+
+  /// The time when the entity was last updated.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1Entity({
+    this.asset,
+    this.catalogEntry,
+    this.compatibility,
+    this.createTime,
+    this.dataPath,
+    this.dataPathPattern,
+    this.description,
+    this.displayName,
+    this.etag,
+    this.format,
+    this.id,
+    this.name,
+    this.schema,
+    this.system,
+    this.type,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1Entity.fromJson(core.Map _json)
+      : this(
+          asset:
+              _json.containsKey('asset') ? _json['asset'] as core.String : null,
+          catalogEntry: _json.containsKey('catalogEntry')
+              ? _json['catalogEntry'] as core.String
+              : null,
+          compatibility: _json.containsKey('compatibility')
+              ? GoogleCloudDataplexV1EntityCompatibilityStatus.fromJson(
+                  _json['compatibility'] as core.Map<core.String, core.dynamic>)
+              : null,
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          dataPath: _json.containsKey('dataPath')
+              ? _json['dataPath'] as core.String
+              : null,
+          dataPathPattern: _json.containsKey('dataPathPattern')
+              ? _json['dataPathPattern'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          displayName: _json.containsKey('displayName')
+              ? _json['displayName'] as core.String
+              : null,
+          etag: _json.containsKey('etag') ? _json['etag'] as core.String : null,
+          format: _json.containsKey('format')
+              ? GoogleCloudDataplexV1StorageFormat.fromJson(
+                  _json['format'] as core.Map<core.String, core.dynamic>)
+              : null,
+          id: _json.containsKey('id') ? _json['id'] as core.String : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          schema: _json.containsKey('schema')
+              ? GoogleCloudDataplexV1Schema.fromJson(
+                  _json['schema'] as core.Map<core.String, core.dynamic>)
+              : null,
+          system: _json.containsKey('system')
+              ? _json['system'] as core.String
+              : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (asset != null) 'asset': asset!,
+        if (catalogEntry != null) 'catalogEntry': catalogEntry!,
+        if (compatibility != null) 'compatibility': compatibility!,
+        if (createTime != null) 'createTime': createTime!,
+        if (dataPath != null) 'dataPath': dataPath!,
+        if (dataPathPattern != null) 'dataPathPattern': dataPathPattern!,
+        if (description != null) 'description': description!,
+        if (displayName != null) 'displayName': displayName!,
+        if (etag != null) 'etag': etag!,
+        if (format != null) 'format': format!,
+        if (id != null) 'id': id!,
+        if (name != null) 'name': name!,
+        if (schema != null) 'schema': schema!,
+        if (system != null) 'system': system!,
+        if (type != null) 'type': type!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Provides compatibility information for various metadata stores.
+class GoogleCloudDataplexV1EntityCompatibilityStatus {
+  /// Whether this entity is compatible with BigQuery.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility? bigquery;
+
+  /// Whether this entity is compatible with Hive Metastore.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility? hiveMetastore;
+
+  GoogleCloudDataplexV1EntityCompatibilityStatus({
+    this.bigquery,
+    this.hiveMetastore,
+  });
+
+  GoogleCloudDataplexV1EntityCompatibilityStatus.fromJson(core.Map _json)
+      : this(
+          bigquery: _json.containsKey('bigquery')
+              ? GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility
+                  .fromJson(
+                      _json['bigquery'] as core.Map<core.String, core.dynamic>)
+              : null,
+          hiveMetastore: _json.containsKey('hiveMetastore')
+              ? GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility
+                  .fromJson(_json['hiveMetastore']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (bigquery != null) 'bigquery': bigquery!,
+        if (hiveMetastore != null) 'hiveMetastore': hiveMetastore!,
+      };
+}
+
+/// Provides compatibility information for a specific metadata store.
+class GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility {
+  /// Whether the entity is compatible and can be represented in the metadata
+  /// store.
+  ///
+  /// Output only.
+  core.bool? compatible;
+
+  /// Provides additional detail if the entity is incompatible with the metadata
+  /// store.
+  ///
+  /// Output only.
+  core.String? reason;
+
+  GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility({
+    this.compatible,
+    this.reason,
+  });
+
+  GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility.fromJson(
+      core.Map _json)
+      : this(
+          compatible: _json.containsKey('compatible')
+              ? _json['compatible'] as core.bool
+              : null,
+          reason: _json.containsKey('reason')
+              ? _json['reason'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (compatible != null) 'compatible': compatible!,
+        if (reason != null) 'reason': reason!,
+      };
+}
+
+/// Environment represents a user-visible compute infrastructure for analytics
+/// within a lake.
+class GoogleCloudDataplexV1Environment {
+  /// Environment creation time.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// Description of the environment.
+  ///
+  /// Optional.
+  core.String? description;
+
+  /// User friendly display name.
+  ///
+  /// Optional.
+  core.String? displayName;
+
+  /// URI Endpoints to access sessions associated with the Environment.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1EnvironmentEndpoints? endpoints;
+
+  /// Infrastructure specification for the Environment.
+  ///
+  /// Required.
+  GoogleCloudDataplexV1EnvironmentInfrastructureSpec? infrastructureSpec;
+
+  /// User defined labels for the environment.
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? labels;
+
+  /// The relative resource name of the environment, of the form:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Configuration for sessions created for this environment.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1EnvironmentSessionSpec? sessionSpec;
+
+  /// Status of sessions created for this environment.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1EnvironmentSessionStatus? sessionStatus;
+
+  /// Current state of the environment.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State is not specified.
+  /// - "ACTIVE" : Resource is active, i.e., ready to use.
+  /// - "CREATING" : Resource is under creation.
+  /// - "DELETING" : Resource is under deletion.
+  /// - "ACTION_REQUIRED" : Resource is active but has unresolved actions.
+  core.String? state;
+
+  /// System generated globally unique ID for the environment.
+  ///
+  /// This ID will be different if the environment is deleted and re-created
+  /// with the same name.
+  ///
+  /// Output only.
+  core.String? uid;
+
+  /// The time when the environment was last updated.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1Environment({
+    this.createTime,
+    this.description,
+    this.displayName,
+    this.endpoints,
+    this.infrastructureSpec,
+    this.labels,
+    this.name,
+    this.sessionSpec,
+    this.sessionStatus,
+    this.state,
+    this.uid,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1Environment.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          displayName: _json.containsKey('displayName')
+              ? _json['displayName'] as core.String
+              : null,
+          endpoints: _json.containsKey('endpoints')
+              ? GoogleCloudDataplexV1EnvironmentEndpoints.fromJson(
+                  _json['endpoints'] as core.Map<core.String, core.dynamic>)
+              : null,
+          infrastructureSpec: _json.containsKey('infrastructureSpec')
+              ? GoogleCloudDataplexV1EnvironmentInfrastructureSpec.fromJson(
+                  _json['infrastructureSpec']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          sessionSpec: _json.containsKey('sessionSpec')
+              ? GoogleCloudDataplexV1EnvironmentSessionSpec.fromJson(
+                  _json['sessionSpec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          sessionStatus: _json.containsKey('sessionStatus')
+              ? GoogleCloudDataplexV1EnvironmentSessionStatus.fromJson(
+                  _json['sessionStatus'] as core.Map<core.String, core.dynamic>)
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          uid: _json.containsKey('uid') ? _json['uid'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (displayName != null) 'displayName': displayName!,
+        if (endpoints != null) 'endpoints': endpoints!,
+        if (infrastructureSpec != null)
+          'infrastructureSpec': infrastructureSpec!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (sessionSpec != null) 'sessionSpec': sessionSpec!,
+        if (sessionStatus != null) 'sessionStatus': sessionStatus!,
+        if (state != null) 'state': state!,
+        if (uid != null) 'uid': uid!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+class GoogleCloudDataplexV1EnvironmentEndpoints {
+  /// URI to serve notebook APIs
+  ///
+  /// Output only.
+  core.String? notebooks;
+
+  /// URI to serve SQL APIs
+  ///
+  /// Output only.
+  core.String? sql;
+
+  GoogleCloudDataplexV1EnvironmentEndpoints({
+    this.notebooks,
+    this.sql,
+  });
+
+  GoogleCloudDataplexV1EnvironmentEndpoints.fromJson(core.Map _json)
+      : this(
+          notebooks: _json.containsKey('notebooks')
+              ? _json['notebooks'] as core.String
+              : null,
+          sql: _json.containsKey('sql') ? _json['sql'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (notebooks != null) 'notebooks': notebooks!,
+        if (sql != null) 'sql': sql!,
+      };
+}
+
+/// Configuration for the underlying infrastructure used to run workloads.
+class GoogleCloudDataplexV1EnvironmentInfrastructureSpec {
+  /// Compute resources needed for analyze interactive workloads.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources? compute;
+
+  /// Software Runtime Configuration for analyze interactive workloads.
+  ///
+  /// Required.
+  GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime? osImage;
+
+  GoogleCloudDataplexV1EnvironmentInfrastructureSpec({
+    this.compute,
+    this.osImage,
+  });
+
+  GoogleCloudDataplexV1EnvironmentInfrastructureSpec.fromJson(core.Map _json)
+      : this(
+          compute: _json.containsKey('compute')
+              ? GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources
+                  .fromJson(
+                      _json['compute'] as core.Map<core.String, core.dynamic>)
+              : null,
+          osImage: _json.containsKey('osImage')
+              ? GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime
+                  .fromJson(
+                      _json['osImage'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (compute != null) 'compute': compute!,
+        if (osImage != null) 'osImage': osImage!,
+      };
+}
+
+/// Compute resources associated with the analyze interactive workloads.
+class GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources {
+  /// Size in GB of the disk.
+  ///
+  /// Default is 100 GB.
+  ///
+  /// Optional.
+  core.int? diskSizeGb;
+
+  /// Max configurable nodes.
+  ///
+  /// If max_node_count \> node_count, then auto-scaling is enabled.
+  ///
+  /// Optional.
+  core.int? maxNodeCount;
+
+  /// Total number of nodes in the sessions created for this environment.
+  ///
+  /// Optional.
+  core.int? nodeCount;
+
+  GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources({
+    this.diskSizeGb,
+    this.maxNodeCount,
+    this.nodeCount,
+  });
+
+  GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources.fromJson(
+      core.Map _json)
+      : this(
+          diskSizeGb: _json.containsKey('diskSizeGb')
+              ? _json['diskSizeGb'] as core.int
+              : null,
+          maxNodeCount: _json.containsKey('maxNodeCount')
+              ? _json['maxNodeCount'] as core.int
+              : null,
+          nodeCount: _json.containsKey('nodeCount')
+              ? _json['nodeCount'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (diskSizeGb != null) 'diskSizeGb': diskSizeGb!,
+        if (maxNodeCount != null) 'maxNodeCount': maxNodeCount!,
+        if (nodeCount != null) 'nodeCount': nodeCount!,
+      };
+}
+
+/// Software Runtime Configuration to run Analyze.
+class GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime {
+  /// Dataplex Image version.
+  ///
+  /// Required.
+  core.String? imageVersion;
+
+  /// List of Java jars to be included in the runtime environment.
+  ///
+  /// Valid input includes Cloud Storage URIs to Jar binaries. For example,
+  /// gs://bucket-name/my/path/to/file.jar
+  ///
+  /// Optional.
+  core.List<core.String>? javaLibraries;
+
+  /// Spark properties to provide configuration for use in sessions created for
+  /// this environment.
+  ///
+  /// The properties to set on daemon config files. Property keys are specified
+  /// in prefix:property format. The prefix must be "spark".
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? properties;
+
+  /// A list of python packages to be installed.
+  ///
+  /// Valid formats include Cloud Storage URI to a PIP installable library. For
+  /// example, gs://bucket-name/my/path/to/lib.tar.gz
+  ///
+  /// Optional.
+  core.List<core.String>? pythonPackages;
+
+  GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime({
+    this.imageVersion,
+    this.javaLibraries,
+    this.properties,
+    this.pythonPackages,
+  });
+
+  GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime.fromJson(
+      core.Map _json)
+      : this(
+          imageVersion: _json.containsKey('imageVersion')
+              ? _json['imageVersion'] as core.String
+              : null,
+          javaLibraries: _json.containsKey('javaLibraries')
+              ? (_json['javaLibraries'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          properties: _json.containsKey('properties')
+              ? (_json['properties'] as core.Map<core.String, core.dynamic>)
+                  .map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          pythonPackages: _json.containsKey('pythonPackages')
+              ? (_json['pythonPackages'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (imageVersion != null) 'imageVersion': imageVersion!,
+        if (javaLibraries != null) 'javaLibraries': javaLibraries!,
+        if (properties != null) 'properties': properties!,
+        if (pythonPackages != null) 'pythonPackages': pythonPackages!,
+      };
+}
+
+class GoogleCloudDataplexV1EnvironmentSessionSpec {
+  /// If True, this causes sessions to be pre-created and available for faster
+  /// startup to enable interactive exploration use-cases.
+  ///
+  /// This defaults to False to avoid additional billed charges. These can only
+  /// be set to True for the environment with name set to "default", and with
+  /// default configuration.
+  ///
+  /// Optional.
+  core.bool? enableFastStartup;
+
+  /// The idle time configuration of the session.
+  ///
+  /// The session will be auto-terminated at the end of this period.
+  ///
+  /// Optional.
+  core.String? maxIdleDuration;
+
+  GoogleCloudDataplexV1EnvironmentSessionSpec({
+    this.enableFastStartup,
+    this.maxIdleDuration,
+  });
+
+  GoogleCloudDataplexV1EnvironmentSessionSpec.fromJson(core.Map _json)
+      : this(
+          enableFastStartup: _json.containsKey('enableFastStartup')
+              ? _json['enableFastStartup'] as core.bool
+              : null,
+          maxIdleDuration: _json.containsKey('maxIdleDuration')
+              ? _json['maxIdleDuration'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (enableFastStartup != null) 'enableFastStartup': enableFastStartup!,
+        if (maxIdleDuration != null) 'maxIdleDuration': maxIdleDuration!,
+      };
+}
+
+class GoogleCloudDataplexV1EnvironmentSessionStatus {
+  /// Queries over sessions to mark whether the environment is currently active
+  /// or not
+  ///
+  /// Output only.
+  core.bool? active;
+
+  GoogleCloudDataplexV1EnvironmentSessionStatus({
+    this.active,
+  });
+
+  GoogleCloudDataplexV1EnvironmentSessionStatus.fromJson(core.Map _json)
+      : this(
+          active:
+              _json.containsKey('active') ? _json['active'] as core.bool : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (active != null) 'active': active!,
+      };
+}
+
+/// A job represents an instance of a task.
+class GoogleCloudDataplexV1Job {
+  /// The time when the job ended.
+  ///
+  /// Output only.
+  core.String? endTime;
+
+  /// Additional information about the current state.
+  ///
+  /// Output only.
+  core.String? message;
+
+  /// The relative resource name of the job, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/
+  /// tasks/{task_id}/jobs/{job_id}.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// . The number of times the job has been retried (excluding the initial
+  /// attempt).
+  ///
+  /// Output only.
+  core.int? retryCount;
+
+  /// The underlying service running a job.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "SERVICE_UNSPECIFIED" : Service used to run the job is unspecified.
+  /// - "DATAPROC" : Dataproc service is used to run this job.
+  core.String? service;
+
+  /// The full resource name for the job run under a particular service.
+  ///
+  /// Output only.
+  core.String? serviceJob;
+
+  /// The time when the job was started.
+  ///
+  /// Output only.
+  core.String? startTime;
+
+  /// Execution state for the job.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The job state is unknown.
+  /// - "RUNNING" : The job is running.
+  /// - "CANCELLING" : The job is cancelling.
+  /// - "CANCELLED" : The job cancellation was successful.
+  /// - "SUCCEEDED" : The job completed successfully.
+  /// - "FAILED" : The job is no longer running due to an error.
+  /// - "ABORTED" : The job was cancelled outside of Dataplex.
+  core.String? state;
+
+  /// System generated globally unique ID for the job.
+  ///
+  /// Output only.
+  core.String? uid;
+
+  GoogleCloudDataplexV1Job({
+    this.endTime,
+    this.message,
+    this.name,
+    this.retryCount,
+    this.service,
+    this.serviceJob,
+    this.startTime,
+    this.state,
+    this.uid,
+  });
+
+  GoogleCloudDataplexV1Job.fromJson(core.Map _json)
+      : this(
+          endTime: _json.containsKey('endTime')
+              ? _json['endTime'] as core.String
+              : null,
+          message: _json.containsKey('message')
+              ? _json['message'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          retryCount: _json.containsKey('retryCount')
+              ? _json['retryCount'] as core.int
+              : null,
+          service: _json.containsKey('service')
+              ? _json['service'] as core.String
+              : null,
+          serviceJob: _json.containsKey('serviceJob')
+              ? _json['serviceJob'] as core.String
+              : null,
+          startTime: _json.containsKey('startTime')
+              ? _json['startTime'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          uid: _json.containsKey('uid') ? _json['uid'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (endTime != null) 'endTime': endTime!,
+        if (message != null) 'message': message!,
+        if (name != null) 'name': name!,
+        if (retryCount != null) 'retryCount': retryCount!,
+        if (service != null) 'service': service!,
+        if (serviceJob != null) 'serviceJob': serviceJob!,
+        if (startTime != null) 'startTime': startTime!,
+        if (state != null) 'state': state!,
+        if (uid != null) 'uid': uid!,
+      };
+}
+
+/// A lake is a centralized repository for managing enterprise data across the
+/// organization distributed across many cloud projects, and stored in a variety
+/// of storage services such as Google Cloud Storage and BigQuery.
+///
+/// The resources attached to a lake are referred to as managed resources. Data
+/// within these managed resources can be structured or unstructured. A lake
+/// provides data admins with tools to organize, secure and manage their data at
+/// scale, and provides data scientists and data engineers an integrated
+/// experience to easily search, discover, analyze and transform data and
+/// associated metadata.
+class GoogleCloudDataplexV1Lake {
+  /// Aggregated status of the underlying assets of the lake.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1AssetStatus? assetStatus;
+
+  /// The time when the lake was created.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// Description of the lake.
+  ///
+  /// Optional.
+  core.String? description;
+
+  /// User friendly display name.
+  ///
+  /// Optional.
+  core.String? displayName;
+
+  /// User-defined labels for the lake.
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? labels;
+
+  /// Settings to manage lake and Dataproc Metastore service instance
+  /// association.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1LakeMetastore? metastore;
+
+  /// Metastore status of the lake.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1LakeMetastoreStatus? metastoreStatus;
+
+  /// The relative resource name of the lake, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Service account associated with this lake.
+  ///
+  /// This service account must be authorized to access or operate on resources
+  /// managed by the lake.
+  ///
+  /// Output only.
+  core.String? serviceAccount;
+
+  /// Current state of the lake.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State is not specified.
+  /// - "ACTIVE" : Resource is active, i.e., ready to use.
+  /// - "CREATING" : Resource is under creation.
+  /// - "DELETING" : Resource is under deletion.
+  /// - "ACTION_REQUIRED" : Resource is active but has unresolved actions.
+  core.String? state;
+
+  /// System generated globally unique ID for the lake.
+  ///
+  /// This ID will be different if the lake is deleted and re-created with the
+  /// same name.
+  ///
+  /// Output only.
+  core.String? uid;
+
+  /// The time when the lake was last updated.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1Lake({
+    this.assetStatus,
+    this.createTime,
+    this.description,
+    this.displayName,
+    this.labels,
+    this.metastore,
+    this.metastoreStatus,
+    this.name,
+    this.serviceAccount,
+    this.state,
+    this.uid,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1Lake.fromJson(core.Map _json)
+      : this(
+          assetStatus: _json.containsKey('assetStatus')
+              ? GoogleCloudDataplexV1AssetStatus.fromJson(
+                  _json['assetStatus'] as core.Map<core.String, core.dynamic>)
+              : null,
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          displayName: _json.containsKey('displayName')
+              ? _json['displayName'] as core.String
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          metastore: _json.containsKey('metastore')
+              ? GoogleCloudDataplexV1LakeMetastore.fromJson(
+                  _json['metastore'] as core.Map<core.String, core.dynamic>)
+              : null,
+          metastoreStatus: _json.containsKey('metastoreStatus')
+              ? GoogleCloudDataplexV1LakeMetastoreStatus.fromJson(
+                  _json['metastoreStatus']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          serviceAccount: _json.containsKey('serviceAccount')
+              ? _json['serviceAccount'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          uid: _json.containsKey('uid') ? _json['uid'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (assetStatus != null) 'assetStatus': assetStatus!,
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (displayName != null) 'displayName': displayName!,
+        if (labels != null) 'labels': labels!,
+        if (metastore != null) 'metastore': metastore!,
+        if (metastoreStatus != null) 'metastoreStatus': metastoreStatus!,
+        if (name != null) 'name': name!,
+        if (serviceAccount != null) 'serviceAccount': serviceAccount!,
+        if (state != null) 'state': state!,
+        if (uid != null) 'uid': uid!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Settings to manage association of Dataproc Metastore with a lake.
+class GoogleCloudDataplexV1LakeMetastore {
+  /// A relative reference to the Dataproc Metastore
+  /// (https://cloud.google.com/dataproc-metastore/docs) service associated with
+  /// the lake:
+  /// projects/{project_id}/locations/{location_id}/services/{service_id}
+  ///
+  /// Optional.
+  core.String? service;
+
+  GoogleCloudDataplexV1LakeMetastore({
+    this.service,
+  });
+
+  GoogleCloudDataplexV1LakeMetastore.fromJson(core.Map _json)
+      : this(
+          service: _json.containsKey('service')
+              ? _json['service'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (service != null) 'service': service!,
+      };
+}
+
+/// Status of Lake and Dataproc Metastore service instance association.
+class GoogleCloudDataplexV1LakeMetastoreStatus {
+  /// The URI of the endpoint used to access the Metastore service.
+  core.String? endpoint;
+
+  /// Additional information about the current status.
+  core.String? message;
+
+  /// Current state of association.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : Unspecified.
+  /// - "NONE" : A Metastore service instance is not associated with the lake.
+  /// - "READY" : A Metastore service instance is attached to the lake.
+  /// - "UPDATING" : Attach/detach is in progress.
+  /// - "ERROR" : Attach/detach could not be done due to errors.
+  core.String? state;
+
+  /// Last update time of the metastore status of the lake.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1LakeMetastoreStatus({
+    this.endpoint,
+    this.message,
+    this.state,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1LakeMetastoreStatus.fromJson(core.Map _json)
+      : this(
+          endpoint: _json.containsKey('endpoint')
+              ? _json['endpoint'] as core.String
+              : null,
+          message: _json.containsKey('message')
+              ? _json['message'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (endpoint != null) 'endpoint': endpoint!,
+        if (message != null) 'message': message!,
+        if (state != null) 'state': state!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// List actions response.
+class GoogleCloudDataplexV1ListActionsResponse {
+  /// Actions under the given parent lake/zone/asset.
+  core.List<GoogleCloudDataplexV1Action>? actions;
+
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  GoogleCloudDataplexV1ListActionsResponse({
+    this.actions,
+    this.nextPageToken,
+  });
+
+  GoogleCloudDataplexV1ListActionsResponse.fromJson(core.Map _json)
+      : this(
+          actions: _json.containsKey('actions')
+              ? (_json['actions'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Action.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (actions != null) 'actions': actions!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// List assets response.
+class GoogleCloudDataplexV1ListAssetsResponse {
+  /// Asset under the given parent zone.
+  core.List<GoogleCloudDataplexV1Asset>? assets;
+
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  GoogleCloudDataplexV1ListAssetsResponse({
+    this.assets,
+    this.nextPageToken,
+  });
+
+  GoogleCloudDataplexV1ListAssetsResponse.fromJson(core.Map _json)
+      : this(
+          assets: _json.containsKey('assets')
+              ? (_json['assets'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Asset.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (assets != null) 'assets': assets!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// List content response.
+class GoogleCloudDataplexV1ListContentResponse {
+  /// Content under the given parent lake.
+  core.List<GoogleCloudDataplexV1Content>? content;
+
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  GoogleCloudDataplexV1ListContentResponse({
+    this.content,
+    this.nextPageToken,
+  });
+
+  GoogleCloudDataplexV1ListContentResponse.fromJson(core.Map _json)
+      : this(
+          content: _json.containsKey('content')
+              ? (_json['content'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Content.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (content != null) 'content': content!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// List metadata entities response.
+class GoogleCloudDataplexV1ListEntitiesResponse {
+  /// Entities in the specified parent zone.
+  core.List<GoogleCloudDataplexV1Entity>? entities;
+
+  /// Token to retrieve the next page of results, or empty if there are no
+  /// remaining results in the list.
+  core.String? nextPageToken;
+
+  GoogleCloudDataplexV1ListEntitiesResponse({
+    this.entities,
+    this.nextPageToken,
+  });
+
+  GoogleCloudDataplexV1ListEntitiesResponse.fromJson(core.Map _json)
+      : this(
+          entities: _json.containsKey('entities')
+              ? (_json['entities'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Entity.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (entities != null) 'entities': entities!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// List environments response.
+class GoogleCloudDataplexV1ListEnvironmentsResponse {
+  /// Environments under the given parent lake.
+  core.List<GoogleCloudDataplexV1Environment>? environments;
+
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  GoogleCloudDataplexV1ListEnvironmentsResponse({
+    this.environments,
+    this.nextPageToken,
+  });
+
+  GoogleCloudDataplexV1ListEnvironmentsResponse.fromJson(core.Map _json)
+      : this(
+          environments: _json.containsKey('environments')
+              ? (_json['environments'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Environment.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (environments != null) 'environments': environments!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// List jobs response.
+class GoogleCloudDataplexV1ListJobsResponse {
+  /// Jobs under a given task.
+  core.List<GoogleCloudDataplexV1Job>? jobs;
+
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  GoogleCloudDataplexV1ListJobsResponse({
+    this.jobs,
+    this.nextPageToken,
+  });
+
+  GoogleCloudDataplexV1ListJobsResponse.fromJson(core.Map _json)
+      : this(
+          jobs: _json.containsKey('jobs')
+              ? (_json['jobs'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Job.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (jobs != null) 'jobs': jobs!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// List lakes response.
+class GoogleCloudDataplexV1ListLakesResponse {
+  /// Lakes under the given parent location.
+  core.List<GoogleCloudDataplexV1Lake>? lakes;
+
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachableLocations;
+
+  GoogleCloudDataplexV1ListLakesResponse({
+    this.lakes,
+    this.nextPageToken,
+    this.unreachableLocations,
+  });
+
+  GoogleCloudDataplexV1ListLakesResponse.fromJson(core.Map _json)
+      : this(
+          lakes: _json.containsKey('lakes')
+              ? (_json['lakes'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Lake.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachableLocations: _json.containsKey('unreachableLocations')
+              ? (_json['unreachableLocations'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (lakes != null) 'lakes': lakes!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachableLocations != null)
+          'unreachableLocations': unreachableLocations!,
+      };
+}
+
+/// List metadata partitions response.
+class GoogleCloudDataplexV1ListPartitionsResponse {
+  /// Token to retrieve the next page of results, or empty if there are no
+  /// remaining results in the list.
+  core.String? nextPageToken;
+
+  /// Partitions under the specified parent entity.
+  core.List<GoogleCloudDataplexV1Partition>? partitions;
+
+  GoogleCloudDataplexV1ListPartitionsResponse({
+    this.nextPageToken,
+    this.partitions,
+  });
+
+  GoogleCloudDataplexV1ListPartitionsResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          partitions: _json.containsKey('partitions')
+              ? (_json['partitions'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Partition.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (partitions != null) 'partitions': partitions!,
+      };
+}
+
+/// List sessions response.
+class GoogleCloudDataplexV1ListSessionsResponse {
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  /// Sessions under a given environment.
+  core.List<GoogleCloudDataplexV1Session>? sessions;
+
+  GoogleCloudDataplexV1ListSessionsResponse({
+    this.nextPageToken,
+    this.sessions,
+  });
+
+  GoogleCloudDataplexV1ListSessionsResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          sessions: _json.containsKey('sessions')
+              ? (_json['sessions'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Session.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (sessions != null) 'sessions': sessions!,
+      };
+}
+
+/// List tasks response.
+class GoogleCloudDataplexV1ListTasksResponse {
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  /// Tasks under the given parent lake.
+  core.List<GoogleCloudDataplexV1Task>? tasks;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachableLocations;
+
+  GoogleCloudDataplexV1ListTasksResponse({
+    this.nextPageToken,
+    this.tasks,
+    this.unreachableLocations,
+  });
+
+  GoogleCloudDataplexV1ListTasksResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          tasks: _json.containsKey('tasks')
+              ? (_json['tasks'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Task.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          unreachableLocations: _json.containsKey('unreachableLocations')
+              ? (_json['unreachableLocations'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (tasks != null) 'tasks': tasks!,
+        if (unreachableLocations != null)
+          'unreachableLocations': unreachableLocations!,
+      };
+}
+
+/// List zones response.
+class GoogleCloudDataplexV1ListZonesResponse {
+  /// Token to retrieve the next page of results, or empty if there are no more
+  /// results in the list.
+  core.String? nextPageToken;
+
+  /// Zones under the given parent lake.
+  core.List<GoogleCloudDataplexV1Zone>? zones;
+
+  GoogleCloudDataplexV1ListZonesResponse({
+    this.nextPageToken,
+    this.zones,
+  });
+
+  GoogleCloudDataplexV1ListZonesResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          zones: _json.containsKey('zones')
+              ? (_json['zones'] as core.List)
+                  .map((value) => GoogleCloudDataplexV1Zone.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (zones != null) 'zones': zones!,
+      };
+}
+
+/// Represents partition metadata contained within entity instances.
+class GoogleCloudDataplexV1Partition {
+  /// The etag for this partition.
+  ///
+  /// Optional.
+  core.String? etag;
+
+  /// The location of the entity data within the partition, for example,
+  /// gs://bucket/path/to/entity/key1=value1/key2=value2.
+  ///
+  /// Or projects//datasets//tables/
+  ///
+  /// Required. Immutable.
+  core.String? location;
+
+  /// The values must be HTML URL encoded two times before constructing the
+  /// path.
+  ///
+  /// For example, if you have a value of "US:CA", encoded it two times and you
+  /// get "US%253ACA". Then if you have the 2nd value is "CA#Sunnyvale", encoded
+  /// two times and you get "CA%2523Sunnyvale". The partition values path is
+  /// "US%253ACA/CA%2523Sunnyvale". The final URL will be
+  /// "https://.../partitions/US%253ACA/CA%2523Sunnyvale". The name field in the
+  /// responses will always have the encoded format.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// The set of values representing the partition, which correspond to the
+  /// partition schema defined in the parent entity.
+  ///
+  /// Required. Immutable.
+  core.List<core.String>? values;
+
+  GoogleCloudDataplexV1Partition({
+    this.etag,
+    this.location,
+    this.name,
+    this.values,
+  });
+
+  GoogleCloudDataplexV1Partition.fromJson(core.Map _json)
+      : this(
+          etag: _json.containsKey('etag') ? _json['etag'] as core.String : null,
+          location: _json.containsKey('location')
+              ? _json['location'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          values: _json.containsKey('values')
+              ? (_json['values'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (etag != null) 'etag': etag!,
+        if (location != null) 'location': location!,
+        if (name != null) 'name': name!,
+        if (values != null) 'values': values!,
+      };
+}
+
+/// Schema information describing the structure and layout of the data.
+class GoogleCloudDataplexV1Schema {
+  /// The sequence of fields describing data in table entities.
+  ///
+  /// Optional.
+  core.List<GoogleCloudDataplexV1SchemaSchemaField>? fields;
+
+  /// The sequence of fields describing the partition structure in entities.
+  ///
+  /// If this field is empty, there are no partitions within the data.
+  ///
+  /// Optional.
+  core.List<GoogleCloudDataplexV1SchemaPartitionField>? partitionFields;
+
+  /// The structure of paths containing partition data within the entity.
+  ///
+  /// Optional.
+  /// Possible string values are:
+  /// - "PARTITION_STYLE_UNSPECIFIED" : PartitionStyle unspecified
+  /// - "HIVE_COMPATIBLE" : Partitions are hive-compatible. Examples:
+  /// gs://bucket/path/to/table/dt=2019-10-31/lang=en,
+  /// gs://bucket/path/to/table/dt=2019-10-31/lang=en/late.
+  core.String? partitionStyle;
+
+  /// Whether the schema is user-managed or managed by the service.
+  ///
+  /// - Set user_manage to false if you would like Dataplex to help you manage
+  /// the schema. You will get the full service provided by Dataplex discovery,
+  /// including new data discovery, schema inference and schema evolution. You
+  /// can still provide input the schema of the entities, for example renaming a
+  /// schema field, changing CSV or Json options if you think the discovered
+  /// values are not as accurate. Dataplex will consider your input as the
+  /// initial schema (as if they were produced by the previous discovery run),
+  /// and will evolve schema or flag actions based on that. - Set user_manage to
+  /// true if you would like to fully manage the entity schema by yourself. This
+  /// is useful when you would like to manually specify the schema for a table.
+  /// In this case, the schema defined by the user is guaranteed to be kept
+  /// unchanged and would not be overwritten. But this also means Dataplex will
+  /// not provide schema evolution management for you. Dataplex will still be
+  /// able to manage partition registration (i.e., keeping the list of
+  /// partitions up to date) when Dataplex discovery is turned on and
+  /// user_managed is set to true.
+  ///
+  /// Required.
+  core.bool? userManaged;
+
+  GoogleCloudDataplexV1Schema({
+    this.fields,
+    this.partitionFields,
+    this.partitionStyle,
+    this.userManaged,
+  });
+
+  GoogleCloudDataplexV1Schema.fromJson(core.Map _json)
+      : this(
+          fields: _json.containsKey('fields')
+              ? (_json['fields'] as core.List)
+                  .map((value) =>
+                      GoogleCloudDataplexV1SchemaSchemaField.fromJson(
+                          value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          partitionFields: _json.containsKey('partitionFields')
+              ? (_json['partitionFields'] as core.List)
+                  .map((value) =>
+                      GoogleCloudDataplexV1SchemaPartitionField.fromJson(
+                          value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          partitionStyle: _json.containsKey('partitionStyle')
+              ? _json['partitionStyle'] as core.String
+              : null,
+          userManaged: _json.containsKey('userManaged')
+              ? _json['userManaged'] as core.bool
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (fields != null) 'fields': fields!,
+        if (partitionFields != null) 'partitionFields': partitionFields!,
+        if (partitionStyle != null) 'partitionStyle': partitionStyle!,
+        if (userManaged != null) 'userManaged': userManaged!,
+      };
+}
+
+/// Represents a key field within the entity's partition structure.
+///
+/// You could have up to 20 partition fields, but only the first 10 partitions
+/// have the filtering ability due to performance consideration.
+class GoogleCloudDataplexV1SchemaPartitionField {
+  /// Partition name is editable if only the partition style is not HIVE
+  /// compatible.
+  ///
+  /// The maximum length allowed is 767 characters.
+  ///
+  /// Required.
+  core.String? name;
+
+  /// The type of field.
+  ///
+  /// Required. Immutable.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : SchemaType unspecified.
+  /// - "BOOLEAN" : Boolean field.
+  /// - "BYTE" : Single byte numeric field.
+  /// - "INT16" : 16-bit numeric field.
+  /// - "INT32" : 32-bit numeric field.
+  /// - "INT64" : 64-bit numeric field.
+  /// - "FLOAT" : Floating point numeric field.
+  /// - "DOUBLE" : Double precision numeric field.
+  /// - "DECIMAL" : Real value numeric field.
+  /// - "STRING" : Sequence of characters field.
+  /// - "BINARY" : Sequence of bytes field.
+  /// - "TIMESTAMP" : Date and time field.
+  /// - "DATE" : Date field.
+  /// - "TIME" : Time field.
+  /// - "RECORD" : Structured field. Nested fields that define the structure of
+  /// the map. If all nested fields are nullable, this field represents a union.
+  /// - "NULL" : Null field that does not have values.
+  core.String? type;
+
+  GoogleCloudDataplexV1SchemaPartitionField({
+    this.name,
+    this.type,
+  });
+
+  GoogleCloudDataplexV1SchemaPartitionField.fromJson(core.Map _json)
+      : this(
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (name != null) 'name': name!,
+        if (type != null) 'type': type!,
+      };
+}
+
+/// Represents a column field within a table schema.
+class GoogleCloudDataplexV1SchemaSchemaField {
+  /// User friendly field description.
+  ///
+  /// Must be less than or equal to 1024 characters.
+  ///
+  /// Optional.
+  core.String? description;
+
+  /// Any nested field for complex types.
+  ///
+  /// Optional.
+  core.List<GoogleCloudDataplexV1SchemaSchemaField>? fields;
+
+  /// Additional field semantics.
+  ///
+  /// Required.
+  /// Possible string values are:
+  /// - "MODE_UNSPECIFIED" : Mode unspecified.
+  /// - "REQUIRED" : The field has required semantics.
+  /// - "NULLABLE" : The field has optional semantics, and may be null.
+  /// - "REPEATED" : The field has repeated (0 or more) semantics, and is a list
+  /// of values.
+  core.String? mode;
+
+  /// The name of the field.
+  ///
+  /// The maximum length is 767 characters. The name must begins with a letter
+  /// and not contains : and ..
+  ///
+  /// Required.
+  core.String? name;
+
+  /// The type of field.
+  ///
+  /// Required.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : SchemaType unspecified.
+  /// - "BOOLEAN" : Boolean field.
+  /// - "BYTE" : Single byte numeric field.
+  /// - "INT16" : 16-bit numeric field.
+  /// - "INT32" : 32-bit numeric field.
+  /// - "INT64" : 64-bit numeric field.
+  /// - "FLOAT" : Floating point numeric field.
+  /// - "DOUBLE" : Double precision numeric field.
+  /// - "DECIMAL" : Real value numeric field.
+  /// - "STRING" : Sequence of characters field.
+  /// - "BINARY" : Sequence of bytes field.
+  /// - "TIMESTAMP" : Date and time field.
+  /// - "DATE" : Date field.
+  /// - "TIME" : Time field.
+  /// - "RECORD" : Structured field. Nested fields that define the structure of
+  /// the map. If all nested fields are nullable, this field represents a union.
+  /// - "NULL" : Null field that does not have values.
+  core.String? type;
+
+  GoogleCloudDataplexV1SchemaSchemaField({
+    this.description,
+    this.fields,
+    this.mode,
+    this.name,
+    this.type,
+  });
+
+  GoogleCloudDataplexV1SchemaSchemaField.fromJson(core.Map _json)
+      : this(
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          fields: _json.containsKey('fields')
+              ? (_json['fields'] as core.List)
+                  .map((value) =>
+                      GoogleCloudDataplexV1SchemaSchemaField.fromJson(
+                          value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          mode: _json.containsKey('mode') ? _json['mode'] as core.String : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (description != null) 'description': description!,
+        if (fields != null) 'fields': fields!,
+        if (mode != null) 'mode': mode!,
+        if (name != null) 'name': name!,
+        if (type != null) 'type': type!,
+      };
+}
+
+/// Represents an active analyze session running for a user.
+class GoogleCloudDataplexV1Session {
+  /// Session start time.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// The relative resource name of the content, of the form:
+  /// projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}/sessions/{session_id}
+  ///
+  /// Output only.
+  core.String? name;
+
+  ///
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State is not specified.
+  /// - "ACTIVE" : Resource is active, i.e., ready to use.
+  /// - "CREATING" : Resource is under creation.
+  /// - "DELETING" : Resource is under deletion.
+  /// - "ACTION_REQUIRED" : Resource is active but has unresolved actions.
+  core.String? state;
+
+  /// Email of user running the session.
+  ///
+  /// Output only.
+  core.String? userId;
+
+  GoogleCloudDataplexV1Session({
+    this.createTime,
+    this.name,
+    this.state,
+    this.userId,
+  });
+
+  GoogleCloudDataplexV1Session.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          userId: _json.containsKey('userId')
+              ? _json['userId'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (name != null) 'name': name!,
+        if (state != null) 'state': state!,
+        if (userId != null) 'userId': userId!,
+      };
+}
+
+/// Describes the format of the data within its storage location.
+class GoogleCloudDataplexV1StorageFormat {
+  /// The compression type associated with the stored data.
+  ///
+  /// If unspecified, the data is uncompressed.
+  ///
+  /// Optional.
+  /// Possible string values are:
+  /// - "COMPRESSION_FORMAT_UNSPECIFIED" : CompressionFormat unspecified.
+  /// Implies uncompressed data.
+  /// - "GZIP" : GZip compressed set of files.
+  /// - "BZIP2" : BZip2 compressed set of files.
+  core.String? compressionFormat;
+
+  /// Additional information about CSV formatted data.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1StorageFormatCsvOptions? csv;
+
+  /// The data format associated with the stored data, which represents content
+  /// type values.
+  ///
+  /// The value is inferred from mime type.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "FORMAT_UNSPECIFIED" : Format unspecified.
+  /// - "PARQUET" : Parquet-formatted structured data.
+  /// - "AVRO" : Avro-formatted structured data.
+  /// - "ORC" : Orc-formatted structured data.
+  /// - "CSV" : Csv-formatted semi-structured data.
+  /// - "JSON" : Json-formatted semi-structured data.
+  /// - "IMAGE" : Image data formats (such as jpg and png).
+  /// - "AUDIO" : Audio data formats (such as mp3, and wav).
+  /// - "VIDEO" : Video data formats (such as mp4 and mpg).
+  /// - "TEXT" : Textual data formats (such as txt and xml).
+  /// - "TFRECORD" : TensorFlow record format.
+  /// - "OTHER" : Data that doesn't match a specific format.
+  /// - "UNKNOWN" : Data of an unknown format.
+  core.String? format;
+
+  /// Additional information about CSV formatted data.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1StorageFormatJsonOptions? json;
+
+  /// The mime type descriptor for the data.
+  ///
+  /// Must match the pattern {type}/{subtype}. Supported values: -
+  /// application/x-parquet - application/x-avro - application/x-orc -
+  /// application/x-tfrecord - application/json - application/{subtypes} -
+  /// text/csv - text/ - image/{image subtype} - video/{video subtype} -
+  /// audio/{audio subtype}
+  ///
+  /// Required.
+  core.String? mimeType;
+
+  GoogleCloudDataplexV1StorageFormat({
+    this.compressionFormat,
+    this.csv,
+    this.format,
+    this.json,
+    this.mimeType,
+  });
+
+  GoogleCloudDataplexV1StorageFormat.fromJson(core.Map _json)
+      : this(
+          compressionFormat: _json.containsKey('compressionFormat')
+              ? _json['compressionFormat'] as core.String
+              : null,
+          csv: _json.containsKey('csv')
+              ? GoogleCloudDataplexV1StorageFormatCsvOptions.fromJson(
+                  _json['csv'] as core.Map<core.String, core.dynamic>)
+              : null,
+          format: _json.containsKey('format')
+              ? _json['format'] as core.String
+              : null,
+          json: _json.containsKey('json')
+              ? GoogleCloudDataplexV1StorageFormatJsonOptions.fromJson(
+                  _json['json'] as core.Map<core.String, core.dynamic>)
+              : null,
+          mimeType: _json.containsKey('mimeType')
+              ? _json['mimeType'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (compressionFormat != null) 'compressionFormat': compressionFormat!,
+        if (csv != null) 'csv': csv!,
+        if (format != null) 'format': format!,
+        if (json != null) 'json': json!,
+        if (mimeType != null) 'mimeType': mimeType!,
+      };
+}
+
+/// Describes CSV and similar semi-structured data formats.
+class GoogleCloudDataplexV1StorageFormatCsvOptions {
+  /// The delimiter used to separate values.
+  ///
+  /// Defaults to ','.
+  ///
+  /// Optional.
+  core.String? delimiter;
+
+  /// The character encoding of the data.
+  ///
+  /// Accepts "US-ASCII", "UTF-8", and "ISO-8859-1". Defaults to UTF-8 if
+  /// unspecified.
+  ///
+  /// Optional.
+  core.String? encoding;
+
+  /// The number of rows to interpret as header rows that should be skipped when
+  /// reading data rows.
+  ///
+  /// Defaults to 0.
+  ///
+  /// Optional.
+  core.int? headerRows;
+
+  /// The character used to quote column values.
+  ///
+  /// Accepts '"' and '''. Defaults to '"' if unspecified.
+  ///
+  /// Optional.
+  core.String? quote;
+
+  GoogleCloudDataplexV1StorageFormatCsvOptions({
+    this.delimiter,
+    this.encoding,
+    this.headerRows,
+    this.quote,
+  });
+
+  GoogleCloudDataplexV1StorageFormatCsvOptions.fromJson(core.Map _json)
+      : this(
+          delimiter: _json.containsKey('delimiter')
+              ? _json['delimiter'] as core.String
+              : null,
+          encoding: _json.containsKey('encoding')
+              ? _json['encoding'] as core.String
+              : null,
+          headerRows: _json.containsKey('headerRows')
+              ? _json['headerRows'] as core.int
+              : null,
+          quote:
+              _json.containsKey('quote') ? _json['quote'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (delimiter != null) 'delimiter': delimiter!,
+        if (encoding != null) 'encoding': encoding!,
+        if (headerRows != null) 'headerRows': headerRows!,
+        if (quote != null) 'quote': quote!,
+      };
+}
+
+/// Describes JSON data format.
+class GoogleCloudDataplexV1StorageFormatJsonOptions {
+  /// The character encoding of the data.
+  ///
+  /// Accepts "US-ASCII", "UTF-8" and "ISO-8859-1". Defaults to UTF-8 if not
+  /// specified.
+  ///
+  /// Optional.
+  core.String? encoding;
+
+  GoogleCloudDataplexV1StorageFormatJsonOptions({
+    this.encoding,
+  });
+
+  GoogleCloudDataplexV1StorageFormatJsonOptions.fromJson(core.Map _json)
+      : this(
+          encoding: _json.containsKey('encoding')
+              ? _json['encoding'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (encoding != null) 'encoding': encoding!,
+      };
+}
+
+/// A task represents a user-visible job.
+class GoogleCloudDataplexV1Task {
+  /// The time when the task was created.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// Description of the task.
+  ///
+  /// Optional.
+  core.String? description;
+
+  /// User friendly display name.
+  ///
+  /// Optional.
+  core.String? displayName;
+
+  /// Spec related to how a task is executed.
+  ///
+  /// Required.
+  GoogleCloudDataplexV1TaskExecutionSpec? executionSpec;
+
+  /// User-defined labels for the task.
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? labels;
+
+  /// The relative resource name of the task, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/
+  /// tasks/{task_id}.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Config related to running custom Spark tasks.
+  GoogleCloudDataplexV1TaskSparkTaskConfig? spark;
+
+  /// Current state of the task.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State is not specified.
+  /// - "ACTIVE" : Resource is active, i.e., ready to use.
+  /// - "CREATING" : Resource is under creation.
+  /// - "DELETING" : Resource is under deletion.
+  /// - "ACTION_REQUIRED" : Resource is active but has unresolved actions.
+  core.String? state;
+
+  /// Spec related to how often and when a task should be triggered.
+  ///
+  /// Required.
+  GoogleCloudDataplexV1TaskTriggerSpec? triggerSpec;
+
+  /// System generated globally unique ID for the task.
+  ///
+  /// This ID will be different if the task is deleted and re-created with the
+  /// same name.
+  ///
+  /// Output only.
+  core.String? uid;
+
+  /// The time when the task was last updated.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1Task({
+    this.createTime,
+    this.description,
+    this.displayName,
+    this.executionSpec,
+    this.labels,
+    this.name,
+    this.spark,
+    this.state,
+    this.triggerSpec,
+    this.uid,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1Task.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          displayName: _json.containsKey('displayName')
+              ? _json['displayName'] as core.String
+              : null,
+          executionSpec: _json.containsKey('executionSpec')
+              ? GoogleCloudDataplexV1TaskExecutionSpec.fromJson(
+                  _json['executionSpec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          spark: _json.containsKey('spark')
+              ? GoogleCloudDataplexV1TaskSparkTaskConfig.fromJson(
+                  _json['spark'] as core.Map<core.String, core.dynamic>)
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          triggerSpec: _json.containsKey('triggerSpec')
+              ? GoogleCloudDataplexV1TaskTriggerSpec.fromJson(
+                  _json['triggerSpec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          uid: _json.containsKey('uid') ? _json['uid'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (displayName != null) 'displayName': displayName!,
+        if (executionSpec != null) 'executionSpec': executionSpec!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (spark != null) 'spark': spark!,
+        if (state != null) 'state': state!,
+        if (triggerSpec != null) 'triggerSpec': triggerSpec!,
+        if (uid != null) 'uid': uid!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Execution related settings, like retry and service_account.
+class GoogleCloudDataplexV1TaskExecutionSpec {
+  /// The arguments to pass to the task.
+  ///
+  /// The args can use placeholders of the format ${placeholder} as part of
+  /// key/value string. These will be interpolated before passing the args to
+  /// the driver. Currently supported placeholders: - ${task_id} - ${job_time}
+  /// To pass positional args, set the key as TASK_ARGS. The value should be a
+  /// comma-separated string of all the positional arguments. To use a delimiter
+  /// other than comma, refer to
+  /// https://cloud.google.com/sdk/gcloud/reference/topic/escaping. In case of
+  /// other keys being present in the args, then TASK_ARGS will be passed as the
+  /// last argument.
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? args;
+
+  /// The maximum duration after which the job execution is expired.
+  ///
+  /// Optional.
+  core.String? maxJobExecutionLifetime;
+
+  /// Service account to use to execute a task.
+  ///
+  /// If not provided, the default Compute service account for the project is
+  /// used.
+  ///
+  /// Required.
+  core.String? serviceAccount;
+
+  GoogleCloudDataplexV1TaskExecutionSpec({
+    this.args,
+    this.maxJobExecutionLifetime,
+    this.serviceAccount,
+  });
+
+  GoogleCloudDataplexV1TaskExecutionSpec.fromJson(core.Map _json)
+      : this(
+          args: _json.containsKey('args')
+              ? (_json['args'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          maxJobExecutionLifetime: _json.containsKey('maxJobExecutionLifetime')
+              ? _json['maxJobExecutionLifetime'] as core.String
+              : null,
+          serviceAccount: _json.containsKey('serviceAccount')
+              ? _json['serviceAccount'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (args != null) 'args': args!,
+        if (maxJobExecutionLifetime != null)
+          'maxJobExecutionLifetime': maxJobExecutionLifetime!,
+        if (serviceAccount != null) 'serviceAccount': serviceAccount!,
+      };
+}
+
+/// Configuration for the underlying infrastructure used to run workloads.
+class GoogleCloudDataplexV1TaskInfrastructureSpec {
+  /// Compute resources needed for a Task when using Dataproc Serverless.
+  GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources? batch;
+
+  /// Container Image Runtime Configuration.
+  GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime?
+      containerImage;
+
+  /// Vpc network.
+  GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork? vpcNetwork;
+
+  GoogleCloudDataplexV1TaskInfrastructureSpec({
+    this.batch,
+    this.containerImage,
+    this.vpcNetwork,
+  });
+
+  GoogleCloudDataplexV1TaskInfrastructureSpec.fromJson(core.Map _json)
+      : this(
+          batch: _json.containsKey('batch')
+              ? GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources
+                  .fromJson(
+                      _json['batch'] as core.Map<core.String, core.dynamic>)
+              : null,
+          containerImage: _json.containsKey('containerImage')
+              ? GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime
+                  .fromJson(_json['containerImage']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          vpcNetwork: _json.containsKey('vpcNetwork')
+              ? GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork.fromJson(
+                  _json['vpcNetwork'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (batch != null) 'batch': batch!,
+        if (containerImage != null) 'containerImage': containerImage!,
+        if (vpcNetwork != null) 'vpcNetwork': vpcNetwork!,
+      };
+}
+
+/// Batch compute resources associated with the task.
+class GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources {
+  /// Total number of job executors.
+  ///
+  /// Optional.
+  core.int? executorsCount;
+
+  /// Max configurable executors.
+  ///
+  /// If max_executors_count \> executors_count, then auto-scaling is enabled.
+  ///
+  /// Optional.
+  core.int? maxExecutorsCount;
+
+  GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources({
+    this.executorsCount,
+    this.maxExecutorsCount,
+  });
+
+  GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources.fromJson(
+      core.Map _json)
+      : this(
+          executorsCount: _json.containsKey('executorsCount')
+              ? _json['executorsCount'] as core.int
+              : null,
+          maxExecutorsCount: _json.containsKey('maxExecutorsCount')
+              ? _json['maxExecutorsCount'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (executorsCount != null) 'executorsCount': executorsCount!,
+        if (maxExecutorsCount != null) 'maxExecutorsCount': maxExecutorsCount!,
+      };
+}
+
+/// Container Image Runtime Configuration used with Batch execution.
+class GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime {
+  /// A list of Java JARS to add to the classpath.
+  ///
+  /// Valid input includes Cloud Storage URIs to Jar binaries. For example,
+  /// gs://bucket-name/my/path/to/file.jar
+  ///
+  /// Optional.
+  core.List<core.String>? javaJars;
+
+  /// Override to common configuration of open source components installed on
+  /// the Dataproc cluster.
+  ///
+  /// The properties to set on daemon config files. Property keys are specified
+  /// in prefix:property format, for example core:hadoop.tmp.dir. For more
+  /// information, see Cluster properties
+  /// (https://cloud.google.com/dataproc/docs/concepts/cluster-properties).
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? properties;
+
+  /// A list of python packages to be installed.
+  ///
+  /// Valid formats include Cloud Storage URI to a PIP installable library. For
+  /// example, gs://bucket-name/my/path/to/lib.tar.gz
+  ///
+  /// Optional.
+  core.List<core.String>? pythonPackages;
+
+  GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime({
+    this.javaJars,
+    this.properties,
+    this.pythonPackages,
+  });
+
+  GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime.fromJson(
+      core.Map _json)
+      : this(
+          javaJars: _json.containsKey('javaJars')
+              ? (_json['javaJars'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          properties: _json.containsKey('properties')
+              ? (_json['properties'] as core.Map<core.String, core.dynamic>)
+                  .map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          pythonPackages: _json.containsKey('pythonPackages')
+              ? (_json['pythonPackages'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (javaJars != null) 'javaJars': javaJars!,
+        if (properties != null) 'properties': properties!,
+        if (pythonPackages != null) 'pythonPackages': pythonPackages!,
+      };
+}
+
+/// Cloud VPC Network used to run the infrastructure.
+class GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork {
+  /// The Cloud VPC network in which the job is run.
+  ///
+  /// By default, the Cloud VPC network named Default within the project is
+  /// used.
+  ///
+  /// Optional.
+  core.String? network;
+
+  /// List of network tags to apply to the job.
+  ///
+  /// Optional.
+  core.List<core.String>? networkTags;
+
+  /// The Cloud VPC sub-network in which the job is run.
+  ///
+  /// Optional.
+  core.String? subNetwork;
+
+  GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork({
+    this.network,
+    this.networkTags,
+    this.subNetwork,
+  });
+
+  GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork.fromJson(core.Map _json)
+      : this(
+          network: _json.containsKey('network')
+              ? _json['network'] as core.String
+              : null,
+          networkTags: _json.containsKey('networkTags')
+              ? (_json['networkTags'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          subNetwork: _json.containsKey('subNetwork')
+              ? _json['subNetwork'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (network != null) 'network': network!,
+        if (networkTags != null) 'networkTags': networkTags!,
+        if (subNetwork != null) 'subNetwork': subNetwork!,
+      };
+}
+
+/// User-specified config for running a Spark task.
+class GoogleCloudDataplexV1TaskSparkTaskConfig {
+  /// Cloud Storage URIs of archives to be extracted into the working directory
+  /// of each executor.
+  ///
+  /// Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
+  ///
+  /// Optional.
+  core.List<core.String>? archiveUris;
+
+  /// Cloud Storage URIs of files to be placed in the working directory of each
+  /// executor.
+  ///
+  /// Optional.
+  core.List<core.String>? fileUris;
+
+  /// Infrastructure specification for the execution.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1TaskInfrastructureSpec? infrastructureSpec;
+
+  /// The name of the driver's main class.
+  ///
+  /// The jar file that contains the class must be in the default CLASSPATH or
+  /// specified in jar_file_uris. The execution args are passed in as a sequence
+  /// of named process arguments (--key=value).
+  core.String? mainClass;
+
+  /// The Cloud Storage URI of the jar file that contains the main class.
+  ///
+  /// The execution args are passed in as a sequence of named process arguments
+  /// (--key=value).
+  core.String? mainJarFileUri;
+
+  /// The Gcloud Storage URI of the main Python file to use as the driver.
+  ///
+  /// Must be a .py file. The execution args are passed in as a sequence of
+  /// named process arguments (--key=value).
+  core.String? pythonScriptFile;
+
+  /// The query text.
+  ///
+  /// The execution args are used to declare a set of script variables (set
+  /// key="value";).
+  core.String? sqlScript;
+
+  /// A reference to a query file.
+  ///
+  /// This can be the Cloud Storage URI of the query file or it can the path to
+  /// a SqlScript Content. The execution args are used to declare a set of
+  /// script variables (set key="value";).
+  core.String? sqlScriptFile;
+
+  GoogleCloudDataplexV1TaskSparkTaskConfig({
+    this.archiveUris,
+    this.fileUris,
+    this.infrastructureSpec,
+    this.mainClass,
+    this.mainJarFileUri,
+    this.pythonScriptFile,
+    this.sqlScript,
+    this.sqlScriptFile,
+  });
+
+  GoogleCloudDataplexV1TaskSparkTaskConfig.fromJson(core.Map _json)
+      : this(
+          archiveUris: _json.containsKey('archiveUris')
+              ? (_json['archiveUris'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          fileUris: _json.containsKey('fileUris')
+              ? (_json['fileUris'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          infrastructureSpec: _json.containsKey('infrastructureSpec')
+              ? GoogleCloudDataplexV1TaskInfrastructureSpec.fromJson(
+                  _json['infrastructureSpec']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          mainClass: _json.containsKey('mainClass')
+              ? _json['mainClass'] as core.String
+              : null,
+          mainJarFileUri: _json.containsKey('mainJarFileUri')
+              ? _json['mainJarFileUri'] as core.String
+              : null,
+          pythonScriptFile: _json.containsKey('pythonScriptFile')
+              ? _json['pythonScriptFile'] as core.String
+              : null,
+          sqlScript: _json.containsKey('sqlScript')
+              ? _json['sqlScript'] as core.String
+              : null,
+          sqlScriptFile: _json.containsKey('sqlScriptFile')
+              ? _json['sqlScriptFile'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (archiveUris != null) 'archiveUris': archiveUris!,
+        if (fileUris != null) 'fileUris': fileUris!,
+        if (infrastructureSpec != null)
+          'infrastructureSpec': infrastructureSpec!,
+        if (mainClass != null) 'mainClass': mainClass!,
+        if (mainJarFileUri != null) 'mainJarFileUri': mainJarFileUri!,
+        if (pythonScriptFile != null) 'pythonScriptFile': pythonScriptFile!,
+        if (sqlScript != null) 'sqlScript': sqlScript!,
+        if (sqlScriptFile != null) 'sqlScriptFile': sqlScriptFile!,
+      };
+}
+
+/// Task scheduling and trigger settings.
+class GoogleCloudDataplexV1TaskTriggerSpec {
+  /// Prevent the task from executing.
+  ///
+  /// This does not cancel already running tasks. It is intended to temporarily
+  /// disable RECURRING tasks.
+  ///
+  /// Optional.
+  core.bool? disabled;
+
+  /// Number of retry attempts before aborting.
+  ///
+  /// Set to zero to never attempt to retry a failed task.
+  ///
+  /// Optional.
+  core.int? maxRetries;
+
+  /// Cron schedule (https://en.wikipedia.org/wiki/Cron) for running tasks
+  /// periodically.
+  ///
+  /// To explicitly set a timezone to the cron tab, apply a prefix in the cron
+  /// tab: "CRON_TZ=${IANA_TIME_ZONE}" or "TZ=${IANA_TIME_ZONE}". The
+  /// ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database.
+  /// For example, "CRON_TZ=America/New_York 1 * * * *", or "TZ=America/New_York
+  /// 1 * * * *". This field is required for RECURRING tasks.
+  ///
+  /// Optional.
+  core.String? schedule;
+
+  /// The first run of the task will be after this time.
+  ///
+  /// If not specified, the task will run shortly after being submitted if
+  /// ON_DEMAND and based on the schedule if RECURRING.
+  ///
+  /// Optional.
+  core.String? startTime;
+
+  /// Trigger type of the user-specified Task.
+  ///
+  /// Required. Immutable.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : Unspecified trigger type.
+  /// - "ON_DEMAND" : The task runs one-time shortly after Task Creation.
+  /// - "RECURRING" : The task is scheduled to run periodically.
+  core.String? type;
+
+  GoogleCloudDataplexV1TaskTriggerSpec({
+    this.disabled,
+    this.maxRetries,
+    this.schedule,
+    this.startTime,
+    this.type,
+  });
+
+  GoogleCloudDataplexV1TaskTriggerSpec.fromJson(core.Map _json)
+      : this(
+          disabled: _json.containsKey('disabled')
+              ? _json['disabled'] as core.bool
+              : null,
+          maxRetries: _json.containsKey('maxRetries')
+              ? _json['maxRetries'] as core.int
+              : null,
+          schedule: _json.containsKey('schedule')
+              ? _json['schedule'] as core.String
+              : null,
+          startTime: _json.containsKey('startTime')
+              ? _json['startTime'] as core.String
+              : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (disabled != null) 'disabled': disabled!,
+        if (maxRetries != null) 'maxRetries': maxRetries!,
+        if (schedule != null) 'schedule': schedule!,
+        if (startTime != null) 'startTime': startTime!,
+        if (type != null) 'type': type!,
+      };
+}
+
+/// A zone represents a logical group of related assets within a lake.
+///
+/// A zone can be used to map to organizational structure or represent stages of
+/// data readiness from raw to curated. It provides managing behavior that is
+/// shared or inherited by all contained assets.
+class GoogleCloudDataplexV1Zone {
+  /// Aggregated status of the underlying assets of the zone.
+  ///
+  /// Output only.
+  GoogleCloudDataplexV1AssetStatus? assetStatus;
+
+  /// The time when the zone was created.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// Description of the zone.
+  ///
+  /// Optional.
+  core.String? description;
+
+  /// Specification of the discovery feature applied to data in this zone.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1ZoneDiscoverySpec? discoverySpec;
+
+  /// User friendly display name.
+  ///
+  /// Optional.
+  core.String? displayName;
+
+  /// User defined labels for the zone.
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? labels;
+
+  /// The relative resource name of the zone, of the form:
+  /// projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Specification of the resources that are referenced by the assets within
+  /// this zone.
+  ///
+  /// Required.
+  GoogleCloudDataplexV1ZoneResourceSpec? resourceSpec;
+
+  /// Current state of the zone.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State is not specified.
+  /// - "ACTIVE" : Resource is active, i.e., ready to use.
+  /// - "CREATING" : Resource is under creation.
+  /// - "DELETING" : Resource is under deletion.
+  /// - "ACTION_REQUIRED" : Resource is active but has unresolved actions.
+  core.String? state;
+
+  /// The type of the zone.
+  ///
+  /// Required. Immutable.
+  /// Possible string values are:
+  /// - "TYPE_UNSPECIFIED" : Zone type not specified.
+  /// - "RAW" : A zone that contains data that needs further processing before
+  /// it is considered generally ready for consumption and analytics workloads.
+  /// - "CURATED" : A zone that contains data that is considered to be ready for
+  /// broader consumption and analytics workloads. Curated structured data
+  /// stored in Cloud Storage must conform to certain file formats (parquet,
+  /// avro and orc) and organized in a hive-compatible directory layout.
+  core.String? type;
+
+  /// System generated globally unique ID for the zone.
+  ///
+  /// This ID will be different if the zone is deleted and re-created with the
+  /// same name.
+  ///
+  /// Output only.
+  core.String? uid;
+
+  /// The time when the zone was last updated.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  GoogleCloudDataplexV1Zone({
+    this.assetStatus,
+    this.createTime,
+    this.description,
+    this.discoverySpec,
+    this.displayName,
+    this.labels,
+    this.name,
+    this.resourceSpec,
+    this.state,
+    this.type,
+    this.uid,
+    this.updateTime,
+  });
+
+  GoogleCloudDataplexV1Zone.fromJson(core.Map _json)
+      : this(
+          assetStatus: _json.containsKey('assetStatus')
+              ? GoogleCloudDataplexV1AssetStatus.fromJson(
+                  _json['assetStatus'] as core.Map<core.String, core.dynamic>)
+              : null,
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          discoverySpec: _json.containsKey('discoverySpec')
+              ? GoogleCloudDataplexV1ZoneDiscoverySpec.fromJson(
+                  _json['discoverySpec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          displayName: _json.containsKey('displayName')
+              ? _json['displayName'] as core.String
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          resourceSpec: _json.containsKey('resourceSpec')
+              ? GoogleCloudDataplexV1ZoneResourceSpec.fromJson(
+                  _json['resourceSpec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+          uid: _json.containsKey('uid') ? _json['uid'] as core.String : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (assetStatus != null) 'assetStatus': assetStatus!,
+        if (createTime != null) 'createTime': createTime!,
+        if (description != null) 'description': description!,
+        if (discoverySpec != null) 'discoverySpec': discoverySpec!,
+        if (displayName != null) 'displayName': displayName!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (resourceSpec != null) 'resourceSpec': resourceSpec!,
+        if (state != null) 'state': state!,
+        if (type != null) 'type': type!,
+        if (uid != null) 'uid': uid!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Settings to manage the metadata discovery and publishing in a zone.
+class GoogleCloudDataplexV1ZoneDiscoverySpec {
+  /// Configuration for CSV data.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions? csvOptions;
+
+  /// Whether discovery is enabled.
+  ///
+  /// Required.
+  core.bool? enabled;
+
+  /// The list of patterns to apply for selecting data to exclude during
+  /// discovery.
+  ///
+  /// For Cloud Storage bucket assets, these are interpreted as glob patterns
+  /// used to match object names. For BigQuery dataset assets, these are
+  /// interpreted as patterns to match table names.
+  ///
+  /// Optional.
+  core.List<core.String>? excludePatterns;
+
+  /// The list of patterns to apply for selecting data to include during
+  /// discovery if only a subset of the data should considered.
+  ///
+  /// For Cloud Storage bucket assets, these are interpreted as glob patterns
+  /// used to match object names. For BigQuery dataset assets, these are
+  /// interpreted as patterns to match table names.
+  ///
+  /// Optional.
+  core.List<core.String>? includePatterns;
+
+  /// Configuration for Json data.
+  ///
+  /// Optional.
+  GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions? jsonOptions;
+
+  /// Cron schedule (https://en.wikipedia.org/wiki/Cron) for running discovery
+  /// periodically.
+  ///
+  /// Successive discovery runs must be scheduled at least 60 minutes apart. The
+  /// default value is to run discovery every 60 minutes. To explicitly set a
+  /// timezone to the cron tab, apply a prefix in the cron tab:
+  /// "CRON_TZ=${IANA_TIME_ZONE}" or TZ=${IANA_TIME_ZONE}". The
+  /// ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database.
+  /// For example, "CRON_TZ=America/New_York 1 * * * *", or "TZ=America/New_York
+  /// 1 * * * *".
+  ///
+  /// Optional.
+  core.String? schedule;
+
+  GoogleCloudDataplexV1ZoneDiscoverySpec({
+    this.csvOptions,
+    this.enabled,
+    this.excludePatterns,
+    this.includePatterns,
+    this.jsonOptions,
+    this.schedule,
+  });
+
+  GoogleCloudDataplexV1ZoneDiscoverySpec.fromJson(core.Map _json)
+      : this(
+          csvOptions: _json.containsKey('csvOptions')
+              ? GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions.fromJson(
+                  _json['csvOptions'] as core.Map<core.String, core.dynamic>)
+              : null,
+          enabled: _json.containsKey('enabled')
+              ? _json['enabled'] as core.bool
+              : null,
+          excludePatterns: _json.containsKey('excludePatterns')
+              ? (_json['excludePatterns'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          includePatterns: _json.containsKey('includePatterns')
+              ? (_json['includePatterns'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          jsonOptions: _json.containsKey('jsonOptions')
+              ? GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions.fromJson(
+                  _json['jsonOptions'] as core.Map<core.String, core.dynamic>)
+              : null,
+          schedule: _json.containsKey('schedule')
+              ? _json['schedule'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (csvOptions != null) 'csvOptions': csvOptions!,
+        if (enabled != null) 'enabled': enabled!,
+        if (excludePatterns != null) 'excludePatterns': excludePatterns!,
+        if (includePatterns != null) 'includePatterns': includePatterns!,
+        if (jsonOptions != null) 'jsonOptions': jsonOptions!,
+        if (schedule != null) 'schedule': schedule!,
+      };
+}
+
+/// Describe CSV and similar semi-structured data formats.
+typedef GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions
+    = $DiscoverySpecCsvOptions;
+
+/// Describe JSON data format.
+typedef GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions
+    = $DiscoverySpecJsonOptions;
+
+/// Settings for resources attached as assets within a zone.
+class GoogleCloudDataplexV1ZoneResourceSpec {
+  /// The location type of the resources that are allowed to be attached to the
+  /// assets within this zone.
+  ///
+  /// Required. Immutable.
+  /// Possible string values are:
+  /// - "LOCATION_TYPE_UNSPECIFIED" : Unspecified location type.
+  /// - "SINGLE_REGION" : Resources that are associated with a single region.
+  /// - "MULTI_REGION" : Resources that are associated with a multi-region
+  /// location.
+  core.String? locationType;
+
+  GoogleCloudDataplexV1ZoneResourceSpec({
+    this.locationType,
+  });
+
+  GoogleCloudDataplexV1ZoneResourceSpec.fromJson(core.Map _json)
+      : this(
+          locationType: _json.containsKey('locationType')
+              ? _json['locationType'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (locationType != null) 'locationType': locationType!,
+      };
+}
+
+/// The response message for Locations.ListLocations.
+class GoogleCloudLocationListLocationsResponse {
+  /// A list of locations that matches the specified filter in the request.
+  core.List<GoogleCloudLocationLocation>? locations;
+
+  /// The standard List next-page token.
+  core.String? nextPageToken;
+
+  GoogleCloudLocationListLocationsResponse({
+    this.locations,
+    this.nextPageToken,
+  });
+
+  GoogleCloudLocationListLocationsResponse.fromJson(core.Map _json)
+      : this(
+          locations: _json.containsKey('locations')
+              ? (_json['locations'] as core.List)
+                  .map((value) => GoogleCloudLocationLocation.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (locations != null) 'locations': locations!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// A resource that represents Google Cloud Platform location.
+typedef GoogleCloudLocationLocation = $Location01;
+
+/// Specifies the audit configuration for a service.
+///
+/// The configuration determines which permission types are logged, and what
+/// identities, if any, are exempted from logging. An AuditConfig must have one
+/// or more AuditLogConfigs.If there are AuditConfigs for both allServices and a
+/// specific service, the union of the two AuditConfigs is used for that
+/// service: the log_types specified in each AuditConfig are enabled, and the
+/// exempted_members in each AuditLogConfig are exempted.Example Policy with
+/// multiple AuditConfigs: { "audit_configs": \[ { "service": "allServices",
+/// "audit_log_configs": \[ { "log_type": "DATA_READ", "exempted_members": \[
+/// "user:jose@example.com" \] }, { "log_type": "DATA_WRITE" }, { "log_type":
+/// "ADMIN_READ" } \] }, { "service": "sampleservice.googleapis.com",
+/// "audit_log_configs": \[ { "log_type": "DATA_READ" }, { "log_type":
+/// "DATA_WRITE", "exempted_members": \[ "user:aliya@example.com" \] } \] } \] }
+/// For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
+/// logging. It also exempts jose@example.com from DATA_READ logging, and
+/// aliya@example.com from DATA_WRITE logging.
+class GoogleIamV1AuditConfig {
+  /// The configuration for logging of each type of permission.
+  core.List<GoogleIamV1AuditLogConfig>? auditLogConfigs;
+
+  /// Specifies a service that will be enabled for audit logging.
+  ///
+  /// For example, storage.googleapis.com, cloudsql.googleapis.com. allServices
+  /// is a special value that covers all services.
+  core.String? service;
+
+  GoogleIamV1AuditConfig({
+    this.auditLogConfigs,
+    this.service,
+  });
+
+  GoogleIamV1AuditConfig.fromJson(core.Map _json)
+      : this(
+          auditLogConfigs: _json.containsKey('auditLogConfigs')
+              ? (_json['auditLogConfigs'] as core.List)
+                  .map((value) => GoogleIamV1AuditLogConfig.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          service: _json.containsKey('service')
+              ? _json['service'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (auditLogConfigs != null) 'auditLogConfigs': auditLogConfigs!,
+        if (service != null) 'service': service!,
+      };
+}
+
+/// Provides the configuration for logging a type of permissions.
+///
+/// Example: { "audit_log_configs": \[ { "log_type": "DATA_READ",
+/// "exempted_members": \[ "user:jose@example.com" \] }, { "log_type":
+/// "DATA_WRITE" } \] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while
+/// exempting jose@example.com from DATA_READ logging.
+typedef GoogleIamV1AuditLogConfig = $AuditLogConfig;
+
+/// Associates members, or principals, with a role.
+class GoogleIamV1Binding {
+  /// The condition that is associated with this binding.If the condition
+  /// evaluates to true, then this binding applies to the current request.If the
+  /// condition evaluates to false, then this binding does not apply to the
+  /// current request.
+  ///
+  /// However, a different role binding might grant the same role to one or more
+  /// of the principals in this binding.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  GoogleTypeExpr? condition;
+
+  /// Specifies the principals requesting access for a Cloud Platform resource.
+  ///
+  /// members can have the following values: allUsers: A special identifier that
+  /// represents anyone who is on the internet; with or without a Google
+  /// account. allAuthenticatedUsers: A special identifier that represents
+  /// anyone who is authenticated with a Google account or a service account.
+  /// user:{emailid}: An email address that represents a specific Google
+  /// account. For example, alice@example.com . serviceAccount:{emailid}: An
+  /// email address that represents a service account. For example,
+  /// my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email
+  /// address that represents a Google group. For example, admins@example.com.
+  /// deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique
+  /// identifier) representing a user that has been recently deleted. For
+  /// example, alice@example.com?uid=123456789012345678901. If the user is
+  /// recovered, this value reverts to user:{emailid} and the recovered user
+  /// retains the role in the binding.
+  /// deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus
+  /// unique identifier) representing a service account that has been recently
+  /// deleted. For example,
+  /// my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the
+  /// service account is undeleted, this value reverts to
+  /// serviceAccount:{emailid} and the undeleted service account retains the
+  /// role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email
+  /// address (plus unique identifier) representing a Google group that has been
+  /// recently deleted. For example,
+  /// admins@example.com?uid=123456789012345678901. If the group is recovered,
+  /// this value reverts to group:{emailid} and the recovered group retains the
+  /// role in the binding. domain:{domain}: The G Suite domain (primary) that
+  /// represents all the users of that domain. For example, google.com or
+  /// example.com.
+  core.List<core.String>? members;
+
+  /// Role that is assigned to the list of members, or principals.
+  ///
+  /// For example, roles/viewer, roles/editor, or roles/owner.
+  core.String? role;
+
+  GoogleIamV1Binding({
+    this.condition,
+    this.members,
+    this.role,
+  });
+
+  GoogleIamV1Binding.fromJson(core.Map _json)
+      : this(
+          condition: _json.containsKey('condition')
+              ? GoogleTypeExpr.fromJson(
+                  _json['condition'] as core.Map<core.String, core.dynamic>)
+              : null,
+          members: _json.containsKey('members')
+              ? (_json['members'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          role: _json.containsKey('role') ? _json['role'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (condition != null) 'condition': condition!,
+        if (members != null) 'members': members!,
+        if (role != null) 'role': role!,
+      };
+}
+
+/// An Identity and Access Management (IAM) policy, which specifies access
+/// controls for Google Cloud resources.A Policy is a collection of bindings.
+///
+/// A binding binds one or more members, or principals, to a single role.
+/// Principals can be user accounts, service accounts, Google groups, and
+/// domains (such as G Suite). A role is a named list of permissions; each role
+/// can be an IAM predefined role or a user-created custom role.For some types
+/// of Google Cloud resources, a binding can also specify a condition, which is
+/// a logical expression that allows access to a resource only if the expression
+/// evaluates to true. A condition can add constraints based on attributes of
+/// the request, the resource, or both. To learn which resources support
+/// conditions in their IAM policies, see the IAM documentation
+/// (https://cloud.google.com/iam/help/conditions/resource-policies).JSON
+/// example: { "bindings": \[ { "role":
+/// "roles/resourcemanager.organizationAdmin", "members": \[
+/// "user:mike@example.com", "group:admins@example.com", "domain:google.com",
+/// "serviceAccount:my-project-id@appspot.gserviceaccount.com" \] }, { "role":
+/// "roles/resourcemanager.organizationViewer", "members": \[
+/// "user:eve@example.com" \], "condition": { "title": "expirable access",
+/// "description": "Does not grant access after Sep 2020", "expression":
+/// "request.time \< timestamp('2020-10-01T00:00:00.000Z')", } } \], "etag":
+/// "BwWWja0YfJA=", "version": 3 } YAML example: bindings: - members: -
+/// user:mike@example.com - group:admins@example.com - domain:google.com -
+/// serviceAccount:my-project-id@appspot.gserviceaccount.com role:
+/// roles/resourcemanager.organizationAdmin - members: - user:eve@example.com
+/// role: roles/resourcemanager.organizationViewer condition: title: expirable
+/// access description: Does not grant access after Sep 2020 expression:
+/// request.time \< timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
+/// version: 3 For a description of IAM and its features, see the IAM
+/// documentation (https://cloud.google.com/iam/docs/).
+class GoogleIamV1Policy {
+  /// Specifies cloud audit logging configuration for this policy.
+  core.List<GoogleIamV1AuditConfig>? auditConfigs;
+
+  /// Associates a list of members, or principals, with a role.
+  ///
+  /// Optionally, may specify a condition that determines how and when the
+  /// bindings are applied. Each of the bindings must contain at least one
+  /// principal.The bindings in a Policy can refer to up to 1,500 principals; up
+  /// to 250 of these principals can be Google groups. Each occurrence of a
+  /// principal counts towards these limits. For example, if the bindings grant
+  /// 50 different roles to user:alice@example.com, and not to any other
+  /// principal, then you can add another 1,450 principals to the bindings in
+  /// the Policy.
+  core.List<GoogleIamV1Binding>? bindings;
+
+  /// etag is used for optimistic concurrency control as a way to help prevent
+  /// simultaneous updates of a policy from overwriting each other.
+  ///
+  /// It is strongly suggested that systems make use of the etag in the
+  /// read-modify-write cycle to perform policy updates in order to avoid race
+  /// conditions: An etag is returned in the response to getIamPolicy, and
+  /// systems are expected to put that etag in the request to setIamPolicy to
+  /// ensure that their change will be applied to the same version of the
+  /// policy.Important: If you use IAM Conditions, you must include the etag
+  /// field whenever you call setIamPolicy. If you omit this field, then IAM
+  /// allows you to overwrite a version 3 policy with a version 1 policy, and
+  /// all of the conditions in the version 3 policy are lost.
+  core.String? etag;
+  core.List<core.int> get etagAsBytes => convert.base64.decode(etag!);
+
+  set etagAsBytes(core.List<core.int> _bytes) {
+    etag =
+        convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
+  }
+
+  /// Specifies the format of the policy.Valid values are 0, 1, and 3.
+  ///
+  /// Requests that specify an invalid value are rejected.Any operation that
+  /// affects conditional role bindings must specify version 3. This requirement
+  /// applies to the following operations: Getting a policy that includes a
+  /// conditional role binding Adding a conditional role binding to a policy
+  /// Changing a conditional role binding in a policy Removing any role binding,
+  /// with or without a condition, from a policy that includes
+  /// conditionsImportant: If you use IAM Conditions, you must include the etag
+  /// field whenever you call setIamPolicy. If you omit this field, then IAM
+  /// allows you to overwrite a version 3 policy with a version 1 policy, and
+  /// all of the conditions in the version 3 policy are lost.If a policy does
+  /// not include any conditions, operations on that policy may specify any
+  /// valid version or leave the field unset.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  core.int? version;
+
+  GoogleIamV1Policy({
+    this.auditConfigs,
+    this.bindings,
+    this.etag,
+    this.version,
+  });
+
+  GoogleIamV1Policy.fromJson(core.Map _json)
+      : this(
+          auditConfigs: _json.containsKey('auditConfigs')
+              ? (_json['auditConfigs'] as core.List)
+                  .map((value) => GoogleIamV1AuditConfig.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          bindings: _json.containsKey('bindings')
+              ? (_json['bindings'] as core.List)
+                  .map((value) => GoogleIamV1Binding.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          etag: _json.containsKey('etag') ? _json['etag'] as core.String : null,
+          version: _json.containsKey('version')
+              ? _json['version'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (auditConfigs != null) 'auditConfigs': auditConfigs!,
+        if (bindings != null) 'bindings': bindings!,
+        if (etag != null) 'etag': etag!,
+        if (version != null) 'version': version!,
+      };
+}
+
+/// Request message for SetIamPolicy method.
+class GoogleIamV1SetIamPolicyRequest {
+  /// REQUIRED: The complete policy to be applied to the resource.
+  ///
+  /// The size of the policy is limited to a few 10s of KB. An empty policy is a
+  /// valid policy but certain Cloud Platform services (such as Projects) might
+  /// reject them.
+  GoogleIamV1Policy? policy;
+
+  /// OPTIONAL: A FieldMask specifying which fields of the policy to modify.
+  ///
+  /// Only the fields in the mask will be modified. If no mask is provided, the
+  /// following default mask is used:paths: "bindings, etag"
+  core.String? updateMask;
+
+  GoogleIamV1SetIamPolicyRequest({
+    this.policy,
+    this.updateMask,
+  });
+
+  GoogleIamV1SetIamPolicyRequest.fromJson(core.Map _json)
+      : this(
+          policy: _json.containsKey('policy')
+              ? GoogleIamV1Policy.fromJson(
+                  _json['policy'] as core.Map<core.String, core.dynamic>)
+              : null,
+          updateMask: _json.containsKey('updateMask')
+              ? _json['updateMask'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (policy != null) 'policy': policy!,
+        if (updateMask != null) 'updateMask': updateMask!,
+      };
+}
+
+/// Request message for TestIamPermissions method.
+typedef GoogleIamV1TestIamPermissionsRequest = $TestIamPermissionsRequest01;
+
+/// Response message for TestIamPermissions method.
+typedef GoogleIamV1TestIamPermissionsResponse = $TestIamPermissionsResponse;
+
+/// The request message for Operations.CancelOperation.
+typedef GoogleLongrunningCancelOperationRequest = $Empty;
+
+/// The response message for Operations.ListOperations.
+class GoogleLongrunningListOperationsResponse {
+  /// The standard List next-page token.
+  core.String? nextPageToken;
+
+  /// A list of operations that matches the specified filter in the request.
+  core.List<GoogleLongrunningOperation>? operations;
+
+  GoogleLongrunningListOperationsResponse({
+    this.nextPageToken,
+    this.operations,
+  });
+
+  GoogleLongrunningListOperationsResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          operations: _json.containsKey('operations')
+              ? (_json['operations'] as core.List)
+                  .map((value) => GoogleLongrunningOperation.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (operations != null) 'operations': operations!,
+      };
+}
+
+/// This resource represents a long-running operation that is the result of a
+/// network API call.
+class GoogleLongrunningOperation {
+  /// 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.
+  core.bool? done;
+
+  /// The error result of the operation in case of failure or cancellation.
+  GoogleRpcStatus? error;
+
+  /// 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.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? metadata;
+
+  /// 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}.
+  core.String? name;
+
+  /// 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.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? response;
+
+  GoogleLongrunningOperation({
+    this.done,
+    this.error,
+    this.metadata,
+    this.name,
+    this.response,
+  });
+
+  GoogleLongrunningOperation.fromJson(core.Map _json)
+      : this(
+          done: _json.containsKey('done') ? _json['done'] as core.bool : null,
+          error: _json.containsKey('error')
+              ? GoogleRpcStatus.fromJson(
+                  _json['error'] as core.Map<core.String, core.dynamic>)
+              : null,
+          metadata: _json.containsKey('metadata')
+              ? _json['metadata'] as core.Map<core.String, core.dynamic>
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          response: _json.containsKey('response')
+              ? _json['response'] as core.Map<core.String, core.dynamic>
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (done != null) 'done': done!,
+        if (error != null) 'error': error!,
+        if (metadata != null) 'metadata': metadata!,
+        if (name != null) 'name': name!,
+        if (response != null) 'response': response!,
+      };
+}
+
+/// 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).
+typedef GoogleRpcStatus = $Status;
+
+/// Represents a textual expression in the Common Expression Language (CEL)
+/// syntax.
+///
+/// CEL is a C-like expression language. The syntax and semantics of CEL are
+/// documented at https://github.com/google/cel-spec.Example (Comparison):
+/// title: "Summary size limit" description: "Determines if a summary is less
+/// than 100 chars" expression: "document.summary.size() \< 100" Example
+/// (Equality): title: "Requestor is owner" description: "Determines if
+/// requestor is the document owner" expression: "document.owner ==
+/// request.auth.claims.email" Example (Logic): title: "Public documents"
+/// description: "Determine whether the document should be publicly visible"
+/// expression: "document.type != 'private' && document.type != 'internal'"
+/// Example (Data Manipulation): title: "Notification string" description:
+/// "Create a notification string with a timestamp." expression: "'New message
+/// received at ' + string(document.create_time)" The exact variables and
+/// functions that may be referenced within an expression are determined by the
+/// service that evaluates it. See the service documentation for additional
+/// information.
+typedef GoogleTypeExpr = $Expr;
diff --git a/generated/googleapis/lib/dataproc/v1.dart b/generated/googleapis/lib/dataproc/v1.dart
index 3b582f1..17f1810 100644
--- a/generated/googleapis/lib/dataproc/v1.dart
+++ b/generated/googleapis/lib/dataproc/v1.dart
@@ -4520,6 +4520,11 @@
   /// Optional.
   core.String? configBucket;
 
+  /// The configuration(s) for a dataproc metric(s).
+  ///
+  /// Optional.
+  DataprocMetricConfig? dataprocMetricConfig;
+
   /// Encryption settings for the cluster.
   ///
   /// Optional.
@@ -4613,6 +4618,7 @@
   ClusterConfig({
     this.autoscalingConfig,
     this.configBucket,
+    this.dataprocMetricConfig,
     this.encryptionConfig,
     this.endpointConfig,
     this.gceClusterConfig,
@@ -4637,6 +4643,10 @@
           configBucket: _json.containsKey('configBucket')
               ? _json['configBucket'] as core.String
               : null,
+          dataprocMetricConfig: _json.containsKey('dataprocMetricConfig')
+              ? DataprocMetricConfig.fromJson(_json['dataprocMetricConfig']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
           encryptionConfig: _json.containsKey('encryptionConfig')
               ? EncryptionConfig.fromJson(_json['encryptionConfig']
                   as core.Map<core.String, core.dynamic>)
@@ -4695,6 +4705,8 @@
   core.Map<core.String, core.dynamic> toJson() => {
         if (autoscalingConfig != null) 'autoscalingConfig': autoscalingConfig!,
         if (configBucket != null) 'configBucket': configBucket!,
+        if (dataprocMetricConfig != null)
+          'dataprocMetricConfig': dataprocMetricConfig!,
         if (encryptionConfig != null) 'encryptionConfig': encryptionConfig!,
         if (endpointConfig != null) 'endpointConfig': endpointConfig!,
         if (gceClusterConfig != null) 'gceClusterConfig': gceClusterConfig!,
@@ -4814,7 +4826,9 @@
   /// - "CREATING" : The cluster is being created and set up. It is not ready
   /// for use.
   /// - "RUNNING" : The cluster is currently running and healthy. It is ready
-  /// for use.
+  /// for use.Note: The cluster state changes from "creating" to "running"
+  /// status after the master node(s), first two primary worker nodes (and the
+  /// last primary worker node if primary workers \> 2) are running.
   /// - "ERROR" : The cluster encountered an error. It is not ready for use.
   /// - "ERROR_DUE_TO_UPDATE" : The cluster has encountered an error while being
   /// updated. Jobs can be submitted to the cluster, but the cluster cannot be
@@ -4901,6 +4915,32 @@
       };
 }
 
+/// Contains dataproc metric config.
+class DataprocMetricConfig {
+  /// Metrics to be enabled.
+  ///
+  /// Required.
+  core.List<Metric>? metrics;
+
+  DataprocMetricConfig({
+    this.metrics,
+  });
+
+  DataprocMetricConfig.fromJson(core.Map _json)
+      : this(
+          metrics: _json.containsKey('metrics')
+              ? (_json['metrics'] as core.List)
+                  .map((value) => Metric.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (metrics != null) 'metrics': metrics!,
+      };
+}
+
 /// A request to collect cluster diagnostic information.
 typedef DiagnoseClusterRequest = $Empty;
 
@@ -4924,7 +4964,7 @@
   /// Interface type of local SSDs (default is "scsi").
   ///
   /// Valid values: "scsi" (Small Computer System Interface), "nvme"
-  /// (Non-Volatile Memory Express). See SSD Interface types
+  /// (Non-Volatile Memory Express). See local SSD performance
   /// (https://cloud.google.com/compute/docs/disks/local-ssd#performance).
   ///
   /// Optional.
@@ -7228,6 +7268,53 @@
       };
 }
 
+/// Metric source to enable along with any optional metrics for this source that
+/// override the dataproc defaults
+class Metric {
+  /// Optional Metrics to override the dataproc default metrics configured for
+  /// the metric source
+  ///
+  /// Optional.
+  core.List<core.String>? metricOverrides;
+
+  /// MetricSource that should be enabled
+  ///
+  /// Required.
+  /// Possible string values are:
+  /// - "METRIC_SOURCE_UNSPECIFIED" : Required unspecified metric source
+  /// - "MONITORING_AGENT_DEFAULTS" : all default monitoring agent metrics that
+  /// are published with prefix "agent.googleapis.com" when we enable a
+  /// monitoring agent in Compute Engine
+  /// - "HDFS" : Hdfs metric source
+  /// - "SPARK" : Spark metric source
+  /// - "YARN" : Yarn metric source
+  /// - "SPARK_HISTORY_SERVER" : Spark history server metric source
+  /// - "HIVESERVER2" : hiveserver2 metric source
+  core.String? metricSource;
+
+  Metric({
+    this.metricOverrides,
+    this.metricSource,
+  });
+
+  Metric.fromJson(core.Map _json)
+      : this(
+          metricOverrides: _json.containsKey('metricOverrides')
+              ? (_json['metricOverrides'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          metricSource: _json.containsKey('metricSource')
+              ? _json['metricSource'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (metricOverrides != null) 'metricOverrides': metricOverrides!,
+        if (metricSource != null) 'metricSource': metricSource!,
+      };
+}
+
 /// A full, namespace-isolated deployment target for an existing GKE cluster.
 class NamespacedGkeDeploymentTarget {
   /// A namespace within the GKE cluster to deploy into.
@@ -8616,8 +8703,8 @@
       };
 }
 
-/// A configuration for running an Apache Spark (http://spark.apache.org/) batch
-/// workload.
+/// A configuration for running an Apache Spark (https://spark.apache.org/)
+/// batch workload.
 class SparkBatch {
   /// HCFS URIs of archives to be extracted into the working directory of each
   /// executor.
@@ -8734,7 +8821,7 @@
       };
 }
 
-/// A Dataproc job for running Apache Spark (http://spark.apache.org/)
+/// A Dataproc job for running Apache Spark (https://spark.apache.org/)
 /// applications on YARN.
 class SparkJob {
   /// HCFS URIs of archives to be extracted into the working directory of each
@@ -9027,7 +9114,7 @@
       };
 }
 
-/// A configuration for running Apache Spark SQL (http://spark.apache.org/sql/)
+/// A configuration for running Apache Spark SQL (https://spark.apache.org/sql/)
 /// queries as a batch workload.
 class SparkSqlBatch {
   /// HCFS URIs of jar files to be added to the Spark CLASSPATH.
@@ -9080,7 +9167,7 @@
       };
 }
 
-/// A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/)
+/// A Dataproc job for running Apache Spark SQL (https://spark.apache.org/sql/)
 /// queries.
 class SparkSqlJob {
   /// HCFS URIs of jar files to be added to the Spark CLASSPATH.
@@ -9547,54 +9634,10 @@
 }
 
 /// Request message for TestIamPermissions method.
-class TestIamPermissionsRequest {
-  /// The set of permissions to check for the resource.
-  ///
-  /// Permissions with wildcards (such as '*' or 'storage.*') are not allowed.
-  /// For more information see IAM Overview
-  /// (https://cloud.google.com/iam/docs/overview#permissions).
-  core.List<core.String>? permissions;
-
-  TestIamPermissionsRequest({
-    this.permissions,
-  });
-
-  TestIamPermissionsRequest.fromJson(core.Map _json)
-      : this(
-          permissions: _json.containsKey('permissions')
-              ? (_json['permissions'] as core.List)
-                  .map((value) => value as core.String)
-                  .toList()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (permissions != null) 'permissions': permissions!,
-      };
-}
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest01;
 
 /// Response message for TestIamPermissions method.
-class TestIamPermissionsResponse {
-  /// A subset of TestPermissionsRequest.permissions that the caller is allowed.
-  core.List<core.String>? permissions;
-
-  TestIamPermissionsResponse({
-    this.permissions,
-  });
-
-  TestIamPermissionsResponse.fromJson(core.Map _json)
-      : this(
-          permissions: _json.containsKey('permissions')
-              ? (_json['permissions'] as core.List)
-                  .map((value) => value as core.String)
-                  .toList()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (permissions != null) 'permissions': permissions!,
-      };
-}
+typedef TestIamPermissionsResponse = $TestIamPermissionsResponse;
 
 /// Validation based on a list of allowed values.
 class ValueValidation {
diff --git a/generated/googleapis/lib/digitalassetlinks/v1.dart b/generated/googleapis/lib/digitalassetlinks/v1.dart
index e7c68d8..3f5287a 100644
--- a/generated/googleapis/lib/digitalassetlinks/v1.dart
+++ b/generated/googleapis/lib/digitalassetlinks/v1.dart
@@ -27,6 +27,7 @@
 library digitalassetlinks.v1;
 
 import 'dart:async' as async;
+import 'dart:convert' as convert;
 import 'dart:core' as core;
 
 import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
@@ -57,6 +58,48 @@
 
   AssetlinksResource(commons.ApiRequester client) : _requester = client;
 
+  /// Send a bundle of statement checks in a single RPC to minimize latency and
+  /// service load.
+  ///
+  /// Statements need not be all for the same source and/or target. We recommend
+  /// using this method when you need to check more than one statement in a
+  /// short period of time.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [BulkCheckResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<BulkCheckResponse> bulkCheck(
+    BulkCheckRequest request, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    const _url = 'v1/assetlinks:bulkCheck';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return BulkCheckResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
   /// Determines whether the specified (directional) relationship exists between
   /// the specified source and target assets.
   ///
@@ -400,6 +443,141 @@
       };
 }
 
+/// Message used to check for the existence of multiple digital asset links
+/// within a single RPC.
+class BulkCheckRequest {
+  /// Same configuration as in Check request, all statements checks will use
+  /// same configurations.
+  core.bool? allowGoogleInternalDataSources;
+
+  /// If specified, will be used in any given template statement that doesn’t
+  /// specify a relation.
+  core.String? defaultRelation;
+
+  /// If specified, will be used in any given template statement that doesn’t
+  /// specify a source.
+  Asset? defaultSource;
+
+  /// If specified, will be used in any given template statement that doesn’t
+  /// specify a target.
+  Asset? defaultTarget;
+
+  /// Same configuration as in Check request, all statements checks will use
+  /// same configurations.
+  core.bool? skipCacheLookup;
+
+  /// List of statements to check.
+  ///
+  /// For each statement, you can omit a field if the corresponding default_*
+  /// field below was supplied. Minimum 1 statement; maximum 1,000 statements.
+  /// Any additional statements will be ignored.
+  core.List<StatementTemplate>? statements;
+
+  BulkCheckRequest({
+    this.allowGoogleInternalDataSources,
+    this.defaultRelation,
+    this.defaultSource,
+    this.defaultTarget,
+    this.skipCacheLookup,
+    this.statements,
+  });
+
+  BulkCheckRequest.fromJson(core.Map _json)
+      : this(
+          allowGoogleInternalDataSources:
+              _json.containsKey('allowGoogleInternalDataSources')
+                  ? _json['allowGoogleInternalDataSources'] as core.bool
+                  : null,
+          defaultRelation: _json.containsKey('defaultRelation')
+              ? _json['defaultRelation'] as core.String
+              : null,
+          defaultSource: _json.containsKey('defaultSource')
+              ? Asset.fromJson(
+                  _json['defaultSource'] as core.Map<core.String, core.dynamic>)
+              : null,
+          defaultTarget: _json.containsKey('defaultTarget')
+              ? Asset.fromJson(
+                  _json['defaultTarget'] as core.Map<core.String, core.dynamic>)
+              : null,
+          skipCacheLookup: _json.containsKey('skipCacheLookup')
+              ? _json['skipCacheLookup'] as core.bool
+              : null,
+          statements: _json.containsKey('statements')
+              ? (_json['statements'] as core.List)
+                  .map((value) => StatementTemplate.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (allowGoogleInternalDataSources != null)
+          'allowGoogleInternalDataSources': allowGoogleInternalDataSources!,
+        if (defaultRelation != null) 'defaultRelation': defaultRelation!,
+        if (defaultSource != null) 'defaultSource': defaultSource!,
+        if (defaultTarget != null) 'defaultTarget': defaultTarget!,
+        if (skipCacheLookup != null) 'skipCacheLookup': skipCacheLookup!,
+        if (statements != null) 'statements': statements!,
+      };
+}
+
+/// Response for BulkCheck call.
+///
+/// Results are sent in a list in the same order in which they were sent.
+/// Individual check errors are described in the appropriate check_results
+/// entry. If the entire call fails, the response will include a bulk_error_code
+/// field describing the error.
+class BulkCheckResponse {
+  /// Error code for the entire request.
+  ///
+  /// Present only if the entire request failed. Individual check errors will
+  /// not trigger the presence of this field.
+  /// Possible string values are:
+  /// - "ERROR_CODE_UNSPECIFIED"
+  /// - "ERROR_CODE_INVALID_QUERY" : Unable to parse query.
+  /// - "ERROR_CODE_FETCH_ERROR" : Unable to fetch the asset links data.
+  /// - "ERROR_CODE_FAILED_SSL_VALIDATION" : Invalid HTTPS certificate .
+  /// - "ERROR_CODE_REDIRECT" : HTTP redirects (e.g, 301) are not allowed.
+  /// - "ERROR_CODE_TOO_LARGE" : Asset links data exceeds maximum size.
+  /// - "ERROR_CODE_MALFORMED_HTTP_RESPONSE" : Can't parse HTTP response.
+  /// - "ERROR_CODE_WRONG_CONTENT_TYPE" : HTTP Content-type should be
+  /// application/json.
+  /// - "ERROR_CODE_MALFORMED_CONTENT" : JSON content is malformed.
+  /// - "ERROR_CODE_SECURE_ASSET_INCLUDES_INSECURE" : A secure asset includes an
+  /// insecure asset (security downgrade).
+  /// - "ERROR_CODE_FETCH_BUDGET_EXHAUSTED" : Too many includes (maybe a loop).
+  core.String? bulkErrorCode;
+
+  /// List of results for each check request.
+  ///
+  /// Results are returned in the same order in which they were sent in the
+  /// request.
+  core.List<CheckResponse>? checkResults;
+
+  BulkCheckResponse({
+    this.bulkErrorCode,
+    this.checkResults,
+  });
+
+  BulkCheckResponse.fromJson(core.Map _json)
+      : this(
+          bulkErrorCode: _json.containsKey('bulkErrorCode')
+              ? _json['bulkErrorCode'] as core.String
+              : null,
+          checkResults: _json.containsKey('checkResults')
+              ? (_json['checkResults'] as core.List)
+                  .map((value) => CheckResponse.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (bulkErrorCode != null) 'bulkErrorCode': bulkErrorCode!,
+        if (checkResults != null) 'checkResults': checkResults!,
+      };
+}
+
 /// Describes an X509 certificate.
 class CertificateInfo {
   /// The uppercase SHA-265 fingerprint of the certificate.
@@ -610,6 +788,56 @@
       };
 }
 
+/// A single statement to check in a bulk call using BulkCheck.
+///
+/// See CheckRequest for details about each field.
+class StatementTemplate {
+  /// The relationship being asserted between the source and target.
+  ///
+  /// If omitted, you must specify a BulkCheckRequest.default_relation value to
+  /// use here.
+  core.String? relation;
+
+  /// The source asset that is asserting the statement.
+  ///
+  /// If omitted, you must specify a BulkCheckRequest.default_source value to
+  /// use here.
+  Asset? source;
+
+  /// The target that the source is declaring the relationship with.
+  ///
+  /// If omitted, you must specify a BulkCheckRequest.default_target to use
+  /// here.
+  Asset? target;
+
+  StatementTemplate({
+    this.relation,
+    this.source,
+    this.target,
+  });
+
+  StatementTemplate.fromJson(core.Map _json)
+      : this(
+          relation: _json.containsKey('relation')
+              ? _json['relation'] as core.String
+              : null,
+          source: _json.containsKey('source')
+              ? Asset.fromJson(
+                  _json['source'] as core.Map<core.String, core.dynamic>)
+              : null,
+          target: _json.containsKey('target')
+              ? Asset.fromJson(
+                  _json['target'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (relation != null) 'relation': relation!,
+        if (source != null) 'source': source!,
+        if (target != null) 'target': target!,
+      };
+}
+
 /// Describes a web asset.
 class WebAsset {
   /// Web assets are identified by a URL that contains only the scheme, hostname
diff --git a/generated/googleapis/lib/displayvideo/v1.dart b/generated/googleapis/lib/displayvideo/v1.dart
index 2bf642b..cfc6acc 100644
--- a/generated/googleapis/lib/displayvideo/v1.dart
+++ b/generated/googleapis/lib/displayvideo/v1.dart
@@ -10919,8 +10919,7 @@
   /// age range represented in this field can be 1) targeted solely, or, 2) part
   /// of a larger continuous age range. The reach of a continuous age range
   /// targeting can be expanded by also targeting an audience of an unknown age.
-  ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "AGE_RANGE_UNSPECIFIED" : Default value when age range is not specified
   /// in this version. This enum is a placeholder for default value and does not
@@ -12253,21 +12252,23 @@
 /// when targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. The relation between
 /// each group is UNION, except for
 /// excluded_first_and_third_party_audience_group and
-/// excluded_google_audience_group, of which COMPLEMENT is UNION'ed with other
-/// groups.
+/// excluded_google_audience_group, of which COMPLEMENT is used as an
+/// INTERSECTION with other groups.
 class AudienceGroupAssignedTargetingOptionDetails {
   /// The first and third party audience ids and recencies of the excluded first
   /// and third party audience group.
   ///
-  /// Used for negative targeting. Its COMPLEMENT is used to UNION other
-  /// audience groups.
+  /// Used for negative targeting. The COMPLEMENT of the UNION of this group and
+  /// other excluded audience groups is used as an INTERSECTION to any positive
+  /// audience targeting. All items are logically ‘OR’ of each other.
   FirstAndThirdPartyAudienceGroup? excludedFirstAndThirdPartyAudienceGroup;
 
   /// The Google audience ids of the excluded Google audience group.
   ///
-  /// Used for negative targeting. It's COMPLEMENT is used to UNION other
-  /// audience groups. Only contains Affinity, In-market and Installed-apps type
-  /// Google audiences. All items are logically ‘OR’ of each other.
+  /// Used for negative targeting. The COMPLEMENT of the UNION of this group and
+  /// other excluded audience groups is used as an INTERSECTION to any positive
+  /// audience targeting. Only contains Affinity, In-market and Installed-apps
+  /// type Google audiences. All items are logically ‘OR’ of each other.
   GoogleAudienceGroup? excludedGoogleAudienceGroup;
 
   /// The combined audience ids of the included combined audience group.
@@ -12370,7 +12371,7 @@
 class AudioContentTypeAssignedTargetingOptionDetails {
   /// The audio content type.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "AUDIO_CONTENT_TYPE_UNSPECIFIED" : Audio content type is not specified
   /// in this version. This enum is a place holder for a default value and does
@@ -14716,21 +14717,42 @@
 /// Contact information defining a Customer Match audience member.
 class ContactInfo {
   /// Country code of the member.
+  ///
+  /// Must also be set with the following fields: * hashed_first_name *
+  /// hashed_last_name * zip_codes
   core.String? countryCode;
 
   /// A list of SHA256 hashed email of the member.
+  ///
+  /// Before hashing, remove all whitespace and make sure the string is all
+  /// lowercase.
   core.List<core.String>? hashedEmails;
 
   /// SHA256 hashed first name of the member.
+  ///
+  /// Before hashing, remove all whitespace and make sure the string is all
+  /// lowercase. Must also be set with the following fields: * country_code *
+  /// hashed_last_name * zip_codes
   core.String? hashedFirstName;
 
   /// SHA256 hashed last name of the member.
+  ///
+  /// Before hashing, remove all whitespace and make sure the string is all
+  /// lowercase. Must also be set with the following fields: * country_code *
+  /// hashed_first_name * zip_codes
   core.String? hashedLastName;
 
   /// A list of SHA256 hashed phone numbers of the member.
+  ///
+  /// Before hashing, all phone numbers must be formatted using the \[E.164
+  /// format\](//en.wikipedia.org/wiki/E.164) and include the country calling
+  /// code.
   core.List<core.String>? hashedPhoneNumbers;
 
   /// A list of zip codes of the member.
+  ///
+  /// Must also be set with the following fields: * country_code *
+  /// hashed_first_name * hashed_last_name
   core.List<core.String>? zipCodes;
 
   ContactInfo({
@@ -14833,7 +14855,7 @@
 
   /// The content instream position for video or audio ads.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "CONTENT_INSTREAM_POSITION_UNSPECIFIED" : Content instream position is
   /// not specified in this version. This enum is a place holder for a default
@@ -14946,7 +14968,7 @@
 
   /// The content outstream position.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "CONTENT_OUTSTREAM_POSITION_UNSPECIFIED" : Content outstream position is
   /// not specified in this version. This enum is a place holder for a default
@@ -16633,10 +16655,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// A date range.
@@ -16962,7 +16984,7 @@
 class DeviceTypeAssignedTargetingOptionDetails {
   /// The display name of the device type.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "DEVICE_TYPE_UNSPECIFIED" : Default value when device type is not
   /// specified in this version. This enum is a placeholder for default value
@@ -17597,7 +17619,7 @@
 class EnvironmentAssignedTargetingOptionDetails {
   /// The serving environment.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "ENVIRONMENT_UNSPECIFIED" : Default value when environment is not
   /// specified in this version. This enum is a placeholder for default value
@@ -18135,6 +18157,11 @@
   /// Output only.
   core.String? activeDisplayAudienceSize;
 
+  /// The app_id matches with the type of the mobile_device_ids being uploaded.
+  ///
+  /// Only applicable to audience_type `CUSTOMER_MATCH_DEVICE_ID`
+  core.String? appId;
+
   /// The source of the audience.
   ///
   /// Output only.
@@ -18169,6 +18196,12 @@
   /// - "LICENSED" : Subtype of third party audience type.
   core.String? audienceType;
 
+  /// Input only.
+  ///
+  /// A list of contact information to define the initial audience members. Only
+  /// applicable to audience_type `CUSTOMER_MATCH_CONTACT_INFO`
+  ContactInfoList? contactInfoList;
+
   /// The user-provided description of the audience.
   ///
   /// Only applicable to first party audiences.
@@ -18246,13 +18279,19 @@
   /// The duration in days that an entry remains in the audience after the
   /// qualifying event.
   ///
-  /// If the audience has no expiration, the value of this field should be set
-  /// 10000. Otherwise, the set value must be greater than 0 and less than or
-  /// equal to 540. Only applicable to first party audiences. This field is
-  /// required for the following audience_type: * `CUSTOMER_MATCH_CONTACT_INFO`
-  /// * `CUSTOMER_MATCH_DEVICE_ID`
+  /// If the audience has no expiration, set the value of this field to 10000.
+  /// Otherwise, the set value must be greater than 0 and less than or equal to
+  /// 540. Only applicable to first party audiences. This field is required if
+  /// one of the following audience_type is used: *
+  /// `CUSTOMER_MATCH_CONTACT_INFO` * `CUSTOMER_MATCH_DEVICE_ID`
   core.String? membershipDurationDays;
 
+  /// Input only.
+  ///
+  /// A list of mobile device IDs to define the initial audience members. Only
+  /// applicable to audience_type `CUSTOMER_MATCH_DEVICE_ID`
+  MobileDeviceIdList? mobileDeviceIdList;
+
   /// The resource name of the first and third party audience.
   ///
   /// Output only.
@@ -18270,8 +18309,10 @@
 
   FirstAndThirdPartyAudience({
     this.activeDisplayAudienceSize,
+    this.appId,
     this.audienceSource,
     this.audienceType,
+    this.contactInfoList,
     this.description,
     this.displayAudienceSize,
     this.displayDesktopAudienceSize,
@@ -18282,6 +18323,7 @@
     this.firstAndThirdPartyAudienceType,
     this.gmailAudienceSize,
     this.membershipDurationDays,
+    this.mobileDeviceIdList,
     this.name,
     this.youtubeAudienceSize,
   });
@@ -18292,12 +18334,18 @@
               _json.containsKey('activeDisplayAudienceSize')
                   ? _json['activeDisplayAudienceSize'] as core.String
                   : null,
+          appId:
+              _json.containsKey('appId') ? _json['appId'] as core.String : null,
           audienceSource: _json.containsKey('audienceSource')
               ? _json['audienceSource'] as core.String
               : null,
           audienceType: _json.containsKey('audienceType')
               ? _json['audienceType'] as core.String
               : null,
+          contactInfoList: _json.containsKey('contactInfoList')
+              ? ContactInfoList.fromJson(_json['contactInfoList']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
           description: _json.containsKey('description')
               ? _json['description'] as core.String
               : null,
@@ -18333,6 +18381,10 @@
           membershipDurationDays: _json.containsKey('membershipDurationDays')
               ? _json['membershipDurationDays'] as core.String
               : null,
+          mobileDeviceIdList: _json.containsKey('mobileDeviceIdList')
+              ? MobileDeviceIdList.fromJson(_json['mobileDeviceIdList']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
           name: _json.containsKey('name') ? _json['name'] as core.String : null,
           youtubeAudienceSize: _json.containsKey('youtubeAudienceSize')
               ? _json['youtubeAudienceSize'] as core.String
@@ -18342,8 +18394,10 @@
   core.Map<core.String, core.dynamic> toJson() => {
         if (activeDisplayAudienceSize != null)
           'activeDisplayAudienceSize': activeDisplayAudienceSize!,
+        if (appId != null) 'appId': appId!,
         if (audienceSource != null) 'audienceSource': audienceSource!,
         if (audienceType != null) 'audienceType': audienceType!,
+        if (contactInfoList != null) 'contactInfoList': contactInfoList!,
         if (description != null) 'description': description!,
         if (displayAudienceSize != null)
           'displayAudienceSize': displayAudienceSize!,
@@ -18361,6 +18415,8 @@
         if (gmailAudienceSize != null) 'gmailAudienceSize': gmailAudienceSize!,
         if (membershipDurationDays != null)
           'membershipDurationDays': membershipDurationDays!,
+        if (mobileDeviceIdList != null)
+          'mobileDeviceIdList': mobileDeviceIdList!,
         if (name != null) 'name': name!,
         if (youtubeAudienceSize != null)
           'youtubeAudienceSize': youtubeAudienceSize!,
@@ -18691,7 +18747,7 @@
 class GenderAssignedTargetingOptionDetails {
   /// The gender of the audience.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "GENDER_UNSPECIFIED" : Default value when gender is not specified in
   /// this version. This enum is a place holder for default value and does not
@@ -22853,7 +22909,7 @@
 class NativeContentPositionAssignedTargetingOptionDetails {
   /// The content position.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "NATIVE_CONTENT_POSITION_UNSPECIFIED" : Native content position is not
   /// specified in this version. This enum is a place holder for a default value
@@ -23189,7 +23245,7 @@
 class OmidAssignedTargetingOptionDetails {
   /// The type of Open Measurement enabled inventory.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "OMID_UNSPECIFIED" : Default value when omid targeting is not specified
   /// in this version.
@@ -25231,7 +25287,7 @@
 
   /// An enum for the DV360 Sensitive category content classifier.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "SENSITIVE_CATEGORY_UNSPECIFIED" : This enum is only a placeholder and
   /// doesn't specify a DV360 sensitive category.
@@ -26569,7 +26625,7 @@
 
   /// The video player size.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "VIDEO_PLAYER_SIZE_UNSPECIFIED" : Video player size is not specified in
   /// this version. This enum is a place holder for a default value and does not
@@ -26659,7 +26715,7 @@
 
   /// The predicted viewability percentage.
   ///
-  /// Output only.
+  /// Output only in v1. Required in v2.
   /// Possible string values are:
   /// - "VIEWABILITY_UNSPECIFIED" : Default value when viewability is not
   /// specified in this version. This enum is a placeholder for default value
diff --git a/generated/googleapis/lib/dlp/v2.dart b/generated/googleapis/lib/dlp/v2.dart
index 708fcda..7236d07 100644
--- a/generated/googleapis/lib/dlp/v2.dart
+++ b/generated/googleapis/lib/dlp/v2.dart
@@ -14212,10 +14212,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
 
 /// Represents a time of day.
diff --git a/generated/googleapis/lib/dns/v1.dart b/generated/googleapis/lib/dns/v1.dart
index 6886cd0..54f8d7e 100644
--- a/generated/googleapis/lib/dns/v1.dart
+++ b/generated/googleapis/lib/dns/v1.dart
@@ -3694,6 +3694,10 @@
   /// Maximum allowed number of networks per policy.
   core.int? networksPerPolicy;
 
+  /// Maximum allowed number of consumer peering zones per target network owned
+  /// by this producer project
+  core.int? peeringZonesPerTargetNetwork;
+
   /// Maximum allowed number of policies per project.
   core.int? policies;
 
@@ -3732,6 +3736,7 @@
     this.managedZonesPerNetwork,
     this.networksPerManagedZone,
     this.networksPerPolicy,
+    this.peeringZonesPerTargetNetwork,
     this.policies,
     this.resourceRecordsPerRrset,
     this.rrsetAdditionsPerChange,
@@ -3764,6 +3769,10 @@
           networksPerPolicy: _json.containsKey('networksPerPolicy')
               ? _json['networksPerPolicy'] as core.int
               : null,
+          peeringZonesPerTargetNetwork:
+              _json.containsKey('peeringZonesPerTargetNetwork')
+                  ? _json['peeringZonesPerTargetNetwork'] as core.int
+                  : null,
           policies: _json.containsKey('policies')
               ? _json['policies'] as core.int
               : null,
@@ -3811,6 +3820,8 @@
         if (networksPerManagedZone != null)
           'networksPerManagedZone': networksPerManagedZone!,
         if (networksPerPolicy != null) 'networksPerPolicy': networksPerPolicy!,
+        if (peeringZonesPerTargetNetwork != null)
+          'peeringZonesPerTargetNetwork': peeringZonesPerTargetNetwork!,
         if (policies != null) 'policies': policies!,
         if (resourceRecordsPerRrset != null)
           'resourceRecordsPerRrset': resourceRecordsPerRrset!,
diff --git a/generated/googleapis/lib/documentai/v1.dart b/generated/googleapis/lib/documentai/v1.dart
index 8bd78b4..dfe9873 100644
--- a/generated/googleapis/lib/documentai/v1.dart
+++ b/generated/googleapis/lib/documentai/v1.dart
@@ -4042,7 +4042,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -4055,7 +4055,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// [Terms of Service](https://cloud.google.com/terms/) and the
   /// [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation)
   /// documentation.
@@ -4546,10 +4546,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
 
 /// Represents civil time (or occasionally physical time).
@@ -4690,7 +4690,7 @@
 /// be presented with UI elements for input or editing of fields outside
 /// countries where that field is used. For more guidance on how to use this
 /// schema, please see: https://support.google.com/business/answer/6397478
-typedef GoogleTypePostalAddress = $PostalAddress;
+typedef GoogleTypePostalAddress = $PostalAddress00;
 
 /// Represents a time zone from the
 /// [IANA Time Zone Database](https://www.iana.org/time-zones).
diff --git a/generated/googleapis/lib/domains/v1.dart b/generated/googleapis/lib/domains/v1.dart
index 386c206..c1f1d1c 100644
--- a/generated/googleapis/lib/domains/v1.dart
+++ b/generated/googleapis/lib/domains/v1.dart
@@ -2270,7 +2270,7 @@
 /// be presented with UI elements for input or editing of fields outside
 /// countries where that field is used. For more guidance on how to use this
 /// schema, please see: https://support.google.com/business/answer/6397478
-typedef PostalAddress = $PostalAddress;
+typedef PostalAddress = $PostalAddress00;
 
 /// Request for the `RegisterDomain` method.
 class RegisterDomainRequest {
@@ -2734,7 +2734,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/drive/v3.dart b/generated/googleapis/lib/drive/v3.dart
index 03b7857..7db1568 100644
--- a/generated/googleapis/lib/drive/v3.dart
+++ b/generated/googleapis/lib/drive/v3.dart
@@ -1674,7 +1674,10 @@
     return File.fromJson(_response as core.Map<core.String, core.dynamic>);
   }
 
-  /// Subscribes to changes to a file
+  /// Subscribes to changes to a file.
+  ///
+  /// While you can establish a channel forchanges to a file on a shared drive,
+  /// a change to a shared drive file won't create a notification.
   ///
   /// [request] - The metadata request object.
   ///
diff --git a/generated/googleapis/lib/eventarc/v1.dart b/generated/googleapis/lib/eventarc/v1.dart
index 0b754b1..b870aef 100644
--- a/generated/googleapis/lib/eventarc/v1.dart
+++ b/generated/googleapis/lib/eventarc/v1.dart
@@ -23,6 +23,7 @@
 ///     - [ProjectsLocationsChannelConnectionsResource]
 ///     - [ProjectsLocationsChannelsResource]
 ///     - [ProjectsLocationsOperationsResource]
+///     - [ProjectsLocationsProvidersResource]
 ///     - [ProjectsLocationsTriggersResource]
 library eventarc.v1;
 
@@ -75,6 +76,8 @@
       ProjectsLocationsChannelsResource(_requester);
   ProjectsLocationsOperationsResource get operations =>
       ProjectsLocationsOperationsResource(_requester);
+  ProjectsLocationsProvidersResource get providers =>
+      ProjectsLocationsProvidersResource(_requester);
   ProjectsLocationsTriggersResource get triggers =>
       ProjectsLocationsTriggersResource(_requester);
 
@@ -680,6 +683,107 @@
   }
 }
 
+class ProjectsLocationsProvidersResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsProvidersResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Get a single Provider.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the provider to get.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/providers/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Provider].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Provider> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Provider.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List providers.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent of the provider to get.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - The filter field that the list request will filter on.
+  ///
+  /// [orderBy] - The sorting order of the resources returned. Value should be a
+  /// comma-separated list of fields. The default sorting oder is ascending. To
+  /// specify descending order for a field, append a `desc` suffix; for example:
+  /// `name desc, _id`.
+  ///
+  /// [pageSize] - The maximum number of providers to return on each page.
+  ///
+  /// [pageToken] - The page token; provide the value from the `next_page_token`
+  /// field in a previous `ListProviders` call to retrieve the subsequent page.
+  /// When paginating, all other parameters provided to `ListProviders` must
+  /// match the call that provided the page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListProvidersResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListProvidersResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/providers';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListProvidersResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 class ProjectsLocationsTriggersResource {
   final commons.ApiRequester _requester;
 
@@ -1283,7 +1387,7 @@
   /// The Cloud Function resource name.
   ///
   /// Only Cloud Functions V2 is supported. Format:
-  /// projects/{project}/locations/{location}/functions/{function}
+  /// `projects/{project}/locations/{location}/functions/{function}`
   core.String? cloudFunction;
 
   /// Cloud Run fully-managed resource that receives the events.
@@ -1343,6 +1447,14 @@
   /// Required.
   core.String? attribute;
 
+  /// The operator used for matching the events with the value of the filter.
+  ///
+  /// If not specified, only events that have an exact key-value pair specified
+  /// in the filter are matched. The only allowed value is `match-path-pattern`.
+  ///
+  /// Optional.
+  core.String? operator;
+
   /// The value for the attribute.
   ///
   /// Required.
@@ -1350,6 +1462,7 @@
 
   EventFilter({
     this.attribute,
+    this.operator,
     this.value,
   });
 
@@ -1358,16 +1471,86 @@
           attribute: _json.containsKey('attribute')
               ? _json['attribute'] as core.String
               : null,
+          operator: _json.containsKey('operator')
+              ? _json['operator'] as core.String
+              : null,
           value:
               _json.containsKey('value') ? _json['value'] as core.String : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (attribute != null) 'attribute': attribute!,
+        if (operator != null) 'operator': operator!,
         if (value != null) 'value': value!,
       };
 }
 
+/// A representation of the event type resource.
+class EventType {
+  /// Human friendly description of what the event type is about.
+  ///
+  /// For example "Bucket created in Cloud Storage".
+  ///
+  /// Output only.
+  core.String? description;
+
+  /// URI for the event schema.
+  ///
+  /// For example
+  /// "https://github.com/googleapis/google-cloudevents/blob/master/proto/google/events/cloud/storage/v1/events.proto"
+  ///
+  /// Output only.
+  core.String? eventSchemaUri;
+
+  /// Filtering attributes for the event type.
+  ///
+  /// Output only.
+  core.List<FilteringAttribute>? filteringAttributes;
+
+  /// The full name of the event type (for example,
+  /// "google.cloud.storage.object.v1.finalized").
+  ///
+  /// In the form of {provider-specific-prefix}.{resource}.{version}.{verb}.
+  /// Types MUST be versioned and event schemas are guaranteed to remain
+  /// backward compatible within one version. Note that event type versions and
+  /// API versions do not need to match.
+  ///
+  /// Output only.
+  core.String? type;
+
+  EventType({
+    this.description,
+    this.eventSchemaUri,
+    this.filteringAttributes,
+    this.type,
+  });
+
+  EventType.fromJson(core.Map _json)
+      : this(
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          eventSchemaUri: _json.containsKey('eventSchemaUri')
+              ? _json['eventSchemaUri'] as core.String
+              : null,
+          filteringAttributes: _json.containsKey('filteringAttributes')
+              ? (_json['filteringAttributes'] as core.List)
+                  .map((value) => FilteringAttribute.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (description != null) 'description': description!,
+        if (eventSchemaUri != null) 'eventSchemaUri': eventSchemaUri!,
+        if (filteringAttributes != null)
+          'filteringAttributes': filteringAttributes!,
+        if (type != null) 'type': type!,
+      };
+}
+
 /// Represents a textual expression in the Common Expression Language (CEL)
 /// syntax.
 ///
@@ -1388,6 +1571,66 @@
 /// information.
 typedef Expr = $Expr;
 
+/// A representation of the FilteringAttribute resource.
+///
+/// Filtering attributes are per event type.
+class FilteringAttribute {
+  /// Attribute used for filtering the event type.
+  ///
+  /// Output only.
+  core.String? attribute;
+
+  /// Description of the purpose of the attribute.
+  ///
+  /// Output only.
+  core.String? description;
+
+  /// If true, the attribute accepts matching expressions in the Eventarc
+  /// PathPattern format.
+  ///
+  /// Output only.
+  core.bool? pathPatternSupported;
+
+  /// If true, the triggers for this provider should always specify a filter on
+  /// these attributes.
+  ///
+  /// Trigger creation will fail otherwise.
+  ///
+  /// Output only.
+  core.bool? required;
+
+  FilteringAttribute({
+    this.attribute,
+    this.description,
+    this.pathPatternSupported,
+    this.required,
+  });
+
+  FilteringAttribute.fromJson(core.Map _json)
+      : this(
+          attribute: _json.containsKey('attribute')
+              ? _json['attribute'] as core.String
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          pathPatternSupported: _json.containsKey('pathPatternSupported')
+              ? _json['pathPatternSupported'] as core.bool
+              : null,
+          required: _json.containsKey('required')
+              ? _json['required'] as core.bool
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (attribute != null) 'attribute': attribute!,
+        if (description != null) 'description': description!,
+        if (pathPatternSupported != null)
+          'pathPatternSupported': pathPatternSupported!,
+        if (required != null) 'required': required!,
+      };
+}
+
 /// Represents a GKE destination.
 class GKE {
   /// The name of the cluster the GKE service is running in.
@@ -1609,6 +1852,50 @@
       };
 }
 
+/// The response message for the `ListProviders` method.
+class ListProvidersResponse {
+  /// A page token that can be sent to ListProviders to request the next page.
+  ///
+  /// If this is empty, then there are no more pages.
+  core.String? nextPageToken;
+
+  /// The requested providers, up to the number specified in `page_size`.
+  core.List<Provider>? providers;
+
+  /// Unreachable resources, if any.
+  core.List<core.String>? unreachable;
+
+  ListProvidersResponse({
+    this.nextPageToken,
+    this.providers,
+    this.unreachable,
+  });
+
+  ListProvidersResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          providers: _json.containsKey('providers')
+              ? (_json['providers'] as core.List)
+                  .map((value) => Provider.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (providers != null) 'providers': providers!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
 /// The response message for the `ListTriggers` method.
 class ListTriggersResponse {
   /// A page token that can be sent to ListTriggers to request the next page.
@@ -1777,6 +2064,53 @@
       };
 }
 
+/// A representation of the Provider resource.
+class Provider {
+  /// Human friendly name for the Provider.
+  ///
+  /// For example "Cloud Storage".
+  ///
+  /// Output only.
+  core.String? displayName;
+
+  /// Event types for this provider.
+  ///
+  /// Output only.
+  core.List<EventType>? eventTypes;
+
+  /// In `projects/{project}/locations/{location}/providers/{provider_id}`
+  /// format.
+  ///
+  /// Output only.
+  core.String? name;
+
+  Provider({
+    this.displayName,
+    this.eventTypes,
+    this.name,
+  });
+
+  Provider.fromJson(core.Map _json)
+      : this(
+          displayName: _json.containsKey('displayName')
+              ? _json['displayName'] as core.String
+              : null,
+          eventTypes: _json.containsKey('eventTypes')
+              ? (_json['eventTypes'] as core.List)
+                  .map((value) => EventType.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (displayName != null) 'displayName': displayName!,
+        if (eventTypes != null) 'eventTypes': eventTypes!,
+        if (name != null) 'name': name!,
+      };
+}
+
 /// Represents a Pub/Sub transport.
 class Pubsub {
   /// The name of the Pub/Sub subscription created and managed by Eventarc as a
@@ -1856,7 +2190,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/firebaserules/v1.dart b/generated/googleapis/lib/firebaserules/v1.dart
index 212f0a2..e4587dd 100644
--- a/generated/googleapis/lib/firebaserules/v1.dart
+++ b/generated/googleapis/lib/firebaserules/v1.dart
@@ -1065,11 +1065,15 @@
   core.String? createTime;
 
   /// Format: `projects/{project_id}/releases/{release_id}`
+  ///
+  /// Required.
   core.String? name;
 
   /// Name of the `Ruleset` referred to by this `Release`.
   ///
   /// The `Ruleset` must exist the `Release` to be created.
+  ///
+  /// Required.
   core.String? rulesetName;
 
   /// Time the release was updated.
@@ -1594,6 +1598,8 @@
 /// The request for FirebaseRulesService.UpdateRelease.
 class UpdateReleaseRequest {
   /// `Release` to update.
+  ///
+  /// Required.
   Release? release;
 
   /// Specifies which fields to update.
diff --git a/generated/googleapis/lib/gameservices/v1.dart b/generated/googleapis/lib/gameservices/v1.dart
index b9b4b46..2002cf6 100644
--- a/generated/googleapis/lib/gameservices/v1.dart
+++ b/generated/googleapis/lib/gameservices/v1.dart
@@ -1925,7 +1925,6 @@
 class AuditConfig {
   /// The configuration for logging of each type of permission.
   core.List<AuditLogConfig>? auditLogConfigs;
-  core.List<core.String>? exemptedMembers;
 
   /// Specifies a service that will be enabled for audit logging.
   ///
@@ -1935,7 +1934,6 @@
 
   AuditConfig({
     this.auditLogConfigs,
-    this.exemptedMembers,
     this.service,
   });
 
@@ -1947,11 +1945,6 @@
                       value as core.Map<core.String, core.dynamic>))
                   .toList()
               : null,
-          exemptedMembers: _json.containsKey('exemptedMembers')
-              ? (_json['exemptedMembers'] as core.List)
-                  .map((value) => value as core.String)
-                  .toList()
-              : null,
           service: _json.containsKey('service')
               ? _json['service'] as core.String
               : null,
@@ -1959,7 +1952,6 @@
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (auditLogConfigs != null) 'auditLogConfigs': auditLogConfigs!,
-        if (exemptedMembers != null) 'exemptedMembers': exemptedMembers!,
         if (service != null) 'service': service!,
       };
 }
@@ -4485,7 +4477,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/gkehub/v1.dart b/generated/googleapis/lib/gkehub/v1.dart
index bb85eea..33ced16 100644
--- a/generated/googleapis/lib/gkehub/v1.dart
+++ b/generated/googleapis/lib/gkehub/v1.dart
@@ -2734,6 +2734,32 @@
       };
 }
 
+/// EdgeCluster contains information specific to Google Edge Clusters.
+class EdgeCluster {
+  /// Self-link of the GCP resource for the Edge Cluster.
+  ///
+  /// For example:
+  /// //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster
+  ///
+  /// Immutable.
+  core.String? resourceLink;
+
+  EdgeCluster({
+    this.resourceLink,
+  });
+
+  EdgeCluster.fromJson(core.Map _json)
+      : this(
+          resourceLink: _json.containsKey('resourceLink')
+              ? _json['resourceLink'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (resourceLink != null) 'resourceLink': resourceLink!,
+      };
+}
+
 /// A generic empty message that you can re-use to avoid defining duplicated
 /// empty messages in your APIs.
 ///
@@ -3564,6 +3590,11 @@
 /// MembershipEndpoint contains information needed to contact a Kubernetes API,
 /// endpoint and any additional Kubernetes metadata.
 class MembershipEndpoint {
+  /// Specific information for a Google Edge cluster.
+  ///
+  /// Optional.
+  EdgeCluster? edgeCluster;
+
   /// Specific information for a GKE-on-GCP cluster.
   ///
   /// Optional.
@@ -3599,6 +3630,7 @@
   OnPremCluster? onPremCluster;
 
   MembershipEndpoint({
+    this.edgeCluster,
     this.gkeCluster,
     this.kubernetesMetadata,
     this.kubernetesResource,
@@ -3608,6 +3640,10 @@
 
   MembershipEndpoint.fromJson(core.Map _json)
       : this(
+          edgeCluster: _json.containsKey('edgeCluster')
+              ? EdgeCluster.fromJson(
+                  _json['edgeCluster'] as core.Map<core.String, core.dynamic>)
+              : null,
           gkeCluster: _json.containsKey('gkeCluster')
               ? GkeCluster.fromJson(
                   _json['gkeCluster'] as core.Map<core.String, core.dynamic>)
@@ -3631,6 +3667,7 @@
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (edgeCluster != null) 'edgeCluster': edgeCluster!,
         if (gkeCluster != null) 'gkeCluster': gkeCluster!,
         if (kubernetesMetadata != null)
           'kubernetesMetadata': kubernetesMetadata!,
@@ -4205,7 +4242,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/healthcare/v1.dart b/generated/googleapis/lib/healthcare/v1.dart
index e291414..5ad9329 100644
--- a/generated/googleapis/lib/healthcare/v1.dart
+++ b/generated/googleapis/lib/healthcare/v1.dart
@@ -8010,7 +8010,7 @@
 
 /// Creates a new DICOM store with sensitive information de-identified.
 class DeidentifyDicomStoreRequest {
-  /// De-identify configuration.
+  /// Deidentify configuration.
   DeidentifyConfig? config;
 
   /// The name of the DICOM store to create and write the redacted data to.
@@ -11901,7 +11901,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/iam/v1.dart b/generated/googleapis/lib/iam/v1.dart
index ee51091..5923445 100644
--- a/generated/googleapis/lib/iam/v1.dart
+++ b/generated/googleapis/lib/iam/v1.dart
@@ -36,6 +36,8 @@
 ///     - [ProjectsLocationsWorkloadIdentityPoolsResource]
 ///       - [ProjectsLocationsWorkloadIdentityPoolsOperationsResource]
 ///       - [ProjectsLocationsWorkloadIdentityPoolsProvidersResource]
+///         - [ProjectsLocationsWorkloadIdentityPoolsProvidersKeysResource]
+/// - [ProjectsLocationsWorkloadIdentityPoolsProvidersKeysOperationsResource]
 /// - [ProjectsLocationsWorkloadIdentityPoolsProvidersOperationsResource]
 ///   - [ProjectsRolesResource]
 ///   - [ProjectsServiceAccountsResource]
@@ -1106,6 +1108,8 @@
 class ProjectsLocationsWorkloadIdentityPoolsProvidersResource {
   final commons.ApiRequester _requester;
 
+  ProjectsLocationsWorkloadIdentityPoolsProvidersKeysResource get keys =>
+      ProjectsLocationsWorkloadIdentityPoolsProvidersKeysResource(_requester);
   ProjectsLocationsWorkloadIdentityPoolsProvidersOperationsResource
       get operations =>
           ProjectsLocationsWorkloadIdentityPoolsProvidersOperationsResource(
@@ -1390,6 +1394,66 @@
   }
 }
 
+class ProjectsLocationsWorkloadIdentityPoolsProvidersKeysResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsWorkloadIdentityPoolsProvidersKeysOperationsResource
+      get operations =>
+          ProjectsLocationsWorkloadIdentityPoolsProvidersKeysOperationsResource(
+              _requester);
+
+  ProjectsLocationsWorkloadIdentityPoolsProvidersKeysResource(
+      commons.ApiRequester client)
+      : _requester = client;
+}
+
+class ProjectsLocationsWorkloadIdentityPoolsProvidersKeysOperationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsWorkloadIdentityPoolsProvidersKeysOperationsResource(
+      commons.ApiRequester client)
+      : _requester = client;
+
+  /// 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.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/workloadIdentityPools/\[^/\]+/providers/\[^/\]+/keys/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 class ProjectsLocationsWorkloadIdentityPoolsProvidersOperationsResource {
   final commons.ApiRequester _requester;
 
@@ -4920,7 +4984,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
@@ -5113,10 +5177,10 @@
   /// to. The following keys are supported: * `google.subject`: The principal
   /// IAM is authenticating. You can reference this value in IAM bindings. This
   /// is also the subject that appears in Cloud Logging logs. Cannot exceed 127
-  /// characters. * `google.groups`: Groups the external identity belongs to.
-  /// You can grant groups access to resources using an IAM `principalSet`
-  /// binding; access applies to all members of the group. You can also provide
-  /// custom attributes by specifying `attribute.{custom_attribute}`, where
+  /// bytes. * `google.groups`: Groups the external identity belongs to. You can
+  /// grant groups access to resources using an IAM `principalSet` binding;
+  /// access applies to all members of the group. You can also provide custom
+  /// attributes by specifying `attribute.{custom_attribute}`, where
   /// `{custom_attribute}` is the name of the custom attribute to be mapped. You
   /// can define a maximum of 50 custom attributes. The maximum length of a
   /// mapped attribute key is 100 characters, and the key may only contain the
diff --git a/generated/googleapis/lib/iap/v1.dart b/generated/googleapis/lib/iap/v1.dart
index acec4ea..0dfbab4 100644
--- a/generated/googleapis/lib/iap/v1.dart
+++ b/generated/googleapis/lib/iap/v1.dart
@@ -1640,7 +1640,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/ids/v1.dart b/generated/googleapis/lib/ids/v1.dart
index 7428c57..a5fdd7d 100644
--- a/generated/googleapis/lib/ids/v1.dart
+++ b/generated/googleapis/lib/ids/v1.dart
@@ -1392,7 +1392,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/jobs/v3.dart b/generated/googleapis/lib/jobs/v3.dart
index 2147bcc..122a064 100644
--- a/generated/googleapis/lib/jobs/v3.dart
+++ b/generated/googleapis/lib/jobs/v3.dart
@@ -3734,7 +3734,7 @@
 /// be presented with UI elements for input or editing of fields outside
 /// countries where that field is used. For more guidance on how to use this
 /// schema, please see: https://support.google.com/business/answer/6397478
-typedef PostalAddress = $PostalAddress;
+typedef PostalAddress = $PostalAddress00;
 
 /// Input only.
 ///
diff --git a/generated/googleapis/lib/jobs/v4.dart b/generated/googleapis/lib/jobs/v4.dart
index 18b11c4..f814692 100644
--- a/generated/googleapis/lib/jobs/v4.dart
+++ b/generated/googleapis/lib/jobs/v4.dart
@@ -3658,7 +3658,7 @@
 /// be presented with UI elements for input or editing of fields outside
 /// countries where that field is used. For more guidance on how to use this
 /// schema, please see: https://support.google.com/business/answer/6397478
-typedef PostalAddress = $PostalAddress;
+typedef PostalAddress = $PostalAddress00;
 
 /// Options for job processing.
 class ProcessingOptions {
diff --git a/generated/googleapis/lib/logging/v2.dart b/generated/googleapis/lib/logging/v2.dart
index 3ba1fdd..09e1476 100644
--- a/generated/googleapis/lib/logging/v2.dart
+++ b/generated/googleapis/lib/logging/v2.dart
@@ -197,6 +197,58 @@
     return CmekSettings.fromJson(
         _response as core.Map<core.String, core.dynamic>);
   }
+
+  /// Gets the Log Router settings for the given resource.Note: Settings for the
+  /// Log Router can be get for Google Cloud projects, folders, organizations
+  /// and billing accounts.
+  ///
+  /// Currently it can only be configured for organizations. Once configured for
+  /// an organization, it applies to all projects and folders in the Google
+  /// Cloud organization.See Enabling CMEK for Log Router
+  /// (https://cloud.google.com/logging/docs/routing/managed-encryption) for
+  /// more information.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource for which to retrieve settings.
+  /// "projects/\[PROJECT_ID\]/settings"
+  /// "organizations/\[ORGANIZATION_ID\]/settings"
+  /// "billingAccounts/\[BILLING_ACCOUNT_ID\]/settings"
+  /// "folders/\[FOLDER_ID\]/settings" For
+  /// example:"organizations/12345/settings"Note: Settings for the Log Router
+  /// can be get for Google Cloud projects, folders, organizations and billing
+  /// accounts. Currently it can only be configured for organizations. Once
+  /// configured for an organization, it applies to all projects and folders in
+  /// the Google Cloud organization.
+  /// Value must have pattern `^billingAccounts/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Settings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Settings> getSettings(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/settings';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Settings.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
 }
 
 class BillingAccountsBucketsResource {
@@ -2214,6 +2266,121 @@
     return CmekSettings.fromJson(
         _response as core.Map<core.String, core.dynamic>);
   }
+
+  /// Gets the Log Router settings for the given resource.Note: Settings for the
+  /// Log Router can be get for Google Cloud projects, folders, organizations
+  /// and billing accounts.
+  ///
+  /// Currently it can only be configured for organizations. Once configured for
+  /// an organization, it applies to all projects and folders in the Google
+  /// Cloud organization.See Enabling CMEK for Log Router
+  /// (https://cloud.google.com/logging/docs/routing/managed-encryption) for
+  /// more information.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource for which to retrieve settings.
+  /// "projects/\[PROJECT_ID\]/settings"
+  /// "organizations/\[ORGANIZATION_ID\]/settings"
+  /// "billingAccounts/\[BILLING_ACCOUNT_ID\]/settings"
+  /// "folders/\[FOLDER_ID\]/settings" For
+  /// example:"organizations/12345/settings"Note: Settings for the Log Router
+  /// can be get for Google Cloud projects, folders, organizations and billing
+  /// accounts. Currently it can only be configured for organizations. Once
+  /// configured for an organization, it applies to all projects and folders in
+  /// the Google Cloud organization.
+  /// Value must have pattern `^folders/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Settings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Settings> getSettings(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/settings';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Settings.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates the Log Router settings for the given resource.Note: Settings for
+  /// the Log Router can currently only be configured for Google Cloud
+  /// organizations.
+  ///
+  /// Once configured, it applies to all projects and folders in the Google
+  /// Cloud organization.UpdateSettings will fail if 1) kms_key_name is invalid,
+  /// or 2) the associated service account does not have the required
+  /// roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or
+  /// 3) access to the key is disabled. 4) location_id is not supported by
+  /// Logging. 5) location_id violate OrgPolicy.See Enabling CMEK for Log Router
+  /// (https://cloud.google.com/logging/docs/routing/managed-encryption) for
+  /// more information.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name for the settings to update.
+  /// "organizations/\[ORGANIZATION_ID\]/settings" For
+  /// example:"organizations/12345/settings"Note: Settings for the Log Router
+  /// can currently only be configured for Google Cloud organizations. Once
+  /// configured, it applies to all projects and folders in the Google Cloud
+  /// organization.
+  /// Value must have pattern `^folders/\[^/\]+$`.
+  ///
+  /// [updateMask] - Optional. Field mask identifying which fields from settings
+  /// should be updated. A field will be overwritten if and only if it is in the
+  /// update mask. Output only fields cannot be updated.See FieldMask for more
+  /// information.For example: "updateMask=kmsKeyName"
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Settings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Settings> updateSettings(
+    Settings request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/settings';
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Settings.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
 }
 
 class FoldersExclusionsResource {
@@ -4776,6 +4943,58 @@
         _response as core.Map<core.String, core.dynamic>);
   }
 
+  /// Gets the Log Router settings for the given resource.Note: Settings for the
+  /// Log Router can be get for Google Cloud projects, folders, organizations
+  /// and billing accounts.
+  ///
+  /// Currently it can only be configured for organizations. Once configured for
+  /// an organization, it applies to all projects and folders in the Google
+  /// Cloud organization.See Enabling CMEK for Log Router
+  /// (https://cloud.google.com/logging/docs/routing/managed-encryption) for
+  /// more information.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource for which to retrieve settings.
+  /// "projects/\[PROJECT_ID\]/settings"
+  /// "organizations/\[ORGANIZATION_ID\]/settings"
+  /// "billingAccounts/\[BILLING_ACCOUNT_ID\]/settings"
+  /// "folders/\[FOLDER_ID\]/settings" For
+  /// example:"organizations/12345/settings"Note: Settings for the Log Router
+  /// can be get for Google Cloud projects, folders, organizations and billing
+  /// accounts. Currently it can only be configured for organizations. Once
+  /// configured for an organization, it applies to all projects and folders in
+  /// the Google Cloud organization.
+  /// Value must have pattern `^organizations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Settings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Settings> getSettings(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/settings';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Settings.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
   /// Updates the Log Router CMEK settings for the given resource.Note: CMEK for
   /// the Log Router can currently only be configured for Google Cloud
   /// organizations.
@@ -4841,6 +5060,69 @@
     return CmekSettings.fromJson(
         _response as core.Map<core.String, core.dynamic>);
   }
+
+  /// Updates the Log Router settings for the given resource.Note: Settings for
+  /// the Log Router can currently only be configured for Google Cloud
+  /// organizations.
+  ///
+  /// Once configured, it applies to all projects and folders in the Google
+  /// Cloud organization.UpdateSettings will fail if 1) kms_key_name is invalid,
+  /// or 2) the associated service account does not have the required
+  /// roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or
+  /// 3) access to the key is disabled. 4) location_id is not supported by
+  /// Logging. 5) location_id violate OrgPolicy.See Enabling CMEK for Log Router
+  /// (https://cloud.google.com/logging/docs/routing/managed-encryption) for
+  /// more information.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name for the settings to update.
+  /// "organizations/\[ORGANIZATION_ID\]/settings" For
+  /// example:"organizations/12345/settings"Note: Settings for the Log Router
+  /// can currently only be configured for Google Cloud organizations. Once
+  /// configured, it applies to all projects and folders in the Google Cloud
+  /// organization.
+  /// Value must have pattern `^organizations/\[^/\]+$`.
+  ///
+  /// [updateMask] - Optional. Field mask identifying which fields from settings
+  /// should be updated. A field will be overwritten if and only if it is in the
+  /// update mask. Output only fields cannot be updated.See FieldMask for more
+  /// information.For example: "updateMask=kmsKeyName"
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Settings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Settings> updateSettings(
+    Settings request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/settings';
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Settings.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
 }
 
 class OrganizationsExclusionsResource {
@@ -6427,6 +6709,58 @@
     return CmekSettings.fromJson(
         _response as core.Map<core.String, core.dynamic>);
   }
+
+  /// Gets the Log Router settings for the given resource.Note: Settings for the
+  /// Log Router can be get for Google Cloud projects, folders, organizations
+  /// and billing accounts.
+  ///
+  /// Currently it can only be configured for organizations. Once configured for
+  /// an organization, it applies to all projects and folders in the Google
+  /// Cloud organization.See Enabling CMEK for Log Router
+  /// (https://cloud.google.com/logging/docs/routing/managed-encryption) for
+  /// more information.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource for which to retrieve settings.
+  /// "projects/\[PROJECT_ID\]/settings"
+  /// "organizations/\[ORGANIZATION_ID\]/settings"
+  /// "billingAccounts/\[BILLING_ACCOUNT_ID\]/settings"
+  /// "folders/\[FOLDER_ID\]/settings" For
+  /// example:"organizations/12345/settings"Note: Settings for the Log Router
+  /// can be get for Google Cloud projects, folders, organizations and billing
+  /// accounts. Currently it can only be configured for organizations. Once
+  /// configured for an organization, it applies to all projects and folders in
+  /// the Google Cloud organization.
+  /// Value must have pattern `^projects/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Settings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Settings> getSettings(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/settings';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Settings.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
 }
 
 class ProjectsExclusionsResource {
@@ -8494,6 +8828,58 @@
         _response as core.Map<core.String, core.dynamic>);
   }
 
+  /// Gets the Log Router settings for the given resource.Note: Settings for the
+  /// Log Router can be get for Google Cloud projects, folders, organizations
+  /// and billing accounts.
+  ///
+  /// Currently it can only be configured for organizations. Once configured for
+  /// an organization, it applies to all projects and folders in the Google
+  /// Cloud organization.See Enabling CMEK for Log Router
+  /// (https://cloud.google.com/logging/docs/routing/managed-encryption) for
+  /// more information.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource for which to retrieve settings.
+  /// "projects/\[PROJECT_ID\]/settings"
+  /// "organizations/\[ORGANIZATION_ID\]/settings"
+  /// "billingAccounts/\[BILLING_ACCOUNT_ID\]/settings"
+  /// "folders/\[FOLDER_ID\]/settings" For
+  /// example:"organizations/12345/settings"Note: Settings for the Log Router
+  /// can be get for Google Cloud projects, folders, organizations and billing
+  /// accounts. Currently it can only be configured for organizations. Once
+  /// configured for an organization, it applies to all projects and folders in
+  /// the Google Cloud organization.
+  /// Value must have pattern `^\[^/\]+/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Settings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Settings> getSettings(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/settings';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Settings.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
   /// Updates the Log Router CMEK settings for the given resource.Note: CMEK for
   /// the Log Router can currently only be configured for Google Cloud
   /// organizations.
@@ -8559,6 +8945,69 @@
     return CmekSettings.fromJson(
         _response as core.Map<core.String, core.dynamic>);
   }
+
+  /// Updates the Log Router settings for the given resource.Note: Settings for
+  /// the Log Router can currently only be configured for Google Cloud
+  /// organizations.
+  ///
+  /// Once configured, it applies to all projects and folders in the Google
+  /// Cloud organization.UpdateSettings will fail if 1) kms_key_name is invalid,
+  /// or 2) the associated service account does not have the required
+  /// roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or
+  /// 3) access to the key is disabled. 4) location_id is not supported by
+  /// Logging. 5) location_id violate OrgPolicy.See Enabling CMEK for Log Router
+  /// (https://cloud.google.com/logging/docs/routing/managed-encryption) for
+  /// more information.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name for the settings to update.
+  /// "organizations/\[ORGANIZATION_ID\]/settings" For
+  /// example:"organizations/12345/settings"Note: Settings for the Log Router
+  /// can currently only be configured for Google Cloud organizations. Once
+  /// configured, it applies to all projects and folders in the Google Cloud
+  /// organization.
+  /// Value must have pattern `^\[^/\]+/\[^/\]+$`.
+  ///
+  /// [updateMask] - Optional. Field mask identifying which fields from settings
+  /// should be updated. A field will be overwritten if and only if it is in the
+  /// update mask. Output only fields cannot be updated.See FieldMask for more
+  /// information.For example: "updateMask=kmsKeyName"
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Settings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Settings> updateSettings(
+    Settings request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/settings';
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Settings.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
 }
 
 /// Options that change functionality of a sink exporting data to BigQuery.
@@ -9729,6 +10178,12 @@
   /// Optional.
   core.String? spanId;
 
+  /// Information indicating this LogEntry is part of a sequence of multiple log
+  /// entries split from a single LogEntry.
+  ///
+  /// Optional.
+  LogSplit? split;
+
   /// The log entry payload, represented as a Unicode string (UTF-8).
   core.String? textPayload;
 
@@ -9782,6 +10237,7 @@
     this.severity,
     this.sourceLocation,
     this.spanId,
+    this.split,
     this.textPayload,
     this.timestamp,
     this.trace,
@@ -9839,6 +10295,10 @@
           spanId: _json.containsKey('spanId')
               ? _json['spanId'] as core.String
               : null,
+          split: _json.containsKey('split')
+              ? LogSplit.fromJson(
+                  _json['split'] as core.Map<core.String, core.dynamic>)
+              : null,
           textPayload: _json.containsKey('textPayload')
               ? _json['textPayload'] as core.String
               : null,
@@ -9866,6 +10326,7 @@
         if (severity != null) 'severity': severity!,
         if (sourceLocation != null) 'sourceLocation': sourceLocation!,
         if (spanId != null) 'spanId': spanId!,
+        if (split != null) 'split': split!,
         if (textPayload != null) 'textPayload': textPayload!,
         if (timestamp != null) 'timestamp': timestamp!,
         if (trace != null) 'trace': trace!,
@@ -10470,6 +10931,49 @@
       };
 }
 
+/// Additional information used to correlate multiple log entries.
+///
+/// Used when a single LogEntry would exceed the Google Cloud Logging size limit
+/// and is split across multiple log entries.
+class LogSplit {
+  /// The index of this LogEntry in the sequence of split log entries.
+  ///
+  /// Log entries are given |index| values 0, 1, ..., n-1 for a sequence of n
+  /// log entries.
+  core.int? index;
+
+  /// The total number of log entries that the original LogEntry was split into.
+  core.int? totalSplits;
+
+  /// A globally unique identifier for all log entries in a sequence of split
+  /// log entries.
+  ///
+  /// All log entries with the same |LogSplit.uid| are assumed to be part of the
+  /// same sequence of split log entries.
+  core.String? uid;
+
+  LogSplit({
+    this.index,
+    this.totalSplits,
+    this.uid,
+  });
+
+  LogSplit.fromJson(core.Map _json)
+      : this(
+          index: _json.containsKey('index') ? _json['index'] as core.int : null,
+          totalSplits: _json.containsKey('totalSplits')
+              ? _json['totalSplits'] as core.int
+              : null,
+          uid: _json.containsKey('uid') ? _json['uid'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (index != null) 'index': index!,
+        if (totalSplits != null) 'totalSplits': totalSplits!,
+        if (uid != null) 'uid': uid!,
+      };
+}
+
 /// Describes a view over log entries in a bucket.
 class LogView {
   /// The creation timestamp of the view.
@@ -10573,7 +11077,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -10586,7 +11090,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
   /// Platform Subject to the Deprecation Policy
   /// (https://cloud.google.com/terms/deprecation) documentation.
@@ -10775,9 +11279,9 @@
 /// identifies the actual resource and its attributes according to the schema.
 /// For example, a particular Compute Engine VM instance could be represented by
 /// the following object, because the MonitoredResourceDescriptor for
-/// "gce_instance" has labels "instance_id" and "zone": { "type":
-/// "gce_instance", "labels": { "instance_id": "12345678901234", "zone":
-/// "us-central1-a" }}
+/// "gce_instance" has labels "project_id", "instance_id" and "zone": { "type":
+/// "gce_instance", "labels": { "project_id": "my-project", "instance_id":
+/// "12345678901234", "zone": "us-central1-a" }}
 class MonitoredResource {
   /// Values for all of the labels listed in the associated monitored resource
   /// descriptor.
@@ -10874,7 +11378,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -10887,7 +11391,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
   /// Platform Subject to the Deprecation Policy
   /// (https://cloud.google.com/terms/deprecation) documentation.
@@ -11039,6 +11543,58 @@
       };
 }
 
+/// Describes the settings associated with a project, folder, organization,
+/// billing account, or flexible resource.
+class Settings {
+  /// If set to true, the _Default sink in newly created projects and folders
+  /// will created in a disabled state.
+  ///
+  /// This can be used to automatically disable log ingestion if there is
+  /// already an aggregated sink configured in the hierarchy. The _Default sink
+  /// can be re-enabled manually if needed.
+  ///
+  /// Optional.
+  core.bool? disableDefaultSink;
+
+  /// The resource name of the settings.
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// The Cloud region that will be used for _Default and _Required log buckets
+  /// for newly created projects and folders.
+  ///
+  /// For example europe-west1. This setting does not affect the location of
+  /// custom log buckets.
+  ///
+  /// Optional.
+  core.String? storageLocation;
+
+  Settings({
+    this.disableDefaultSink,
+    this.name,
+    this.storageLocation,
+  });
+
+  Settings.fromJson(core.Map _json)
+      : this(
+          disableDefaultSink: _json.containsKey('disableDefaultSink')
+              ? _json['disableDefaultSink'] as core.bool
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          storageLocation: _json.containsKey('storageLocation')
+              ? _json['storageLocation'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (disableDefaultSink != null)
+          'disableDefaultSink': disableDefaultSink!,
+        if (name != null) 'name': name!,
+        if (storageLocation != null) 'storageLocation': storageLocation!,
+      };
+}
+
 /// The Status type defines a logical error model that is suitable for different
 /// programming environments, including REST APIs and RPC APIs.
 ///
diff --git a/generated/googleapis/lib/managedidentities/v1.dart b/generated/googleapis/lib/managedidentities/v1.dart
index bd8fcdc..015abbf 100644
--- a/generated/googleapis/lib/managedidentities/v1.dart
+++ b/generated/googleapis/lib/managedidentities/v1.dart
@@ -2743,7 +2743,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/manufacturers/v1.dart b/generated/googleapis/lib/manufacturers/v1.dart
index e5df6cd..03d2dc8 100644
--- a/generated/googleapis/lib/manufacturers/v1.dart
+++ b/generated/googleapis/lib/manufacturers/v1.dart
@@ -349,7 +349,11 @@
   /// https://support.google.com/manufacturers/answer/6124116#disclosure.
   core.String? disclosureDate;
 
-  /// A list of excluded destinations.
+  /// A list of excluded destinations such as "ClientExport",
+  /// "ClientShoppingCatalog" or "PartnerShoppingCatalog".
+  ///
+  /// For more information, see
+  /// https://support.google.com/manufacturers/answer/7443550
   core.List<core.String>? excludedDestination;
 
   /// The rich format description of the product.
@@ -388,7 +392,11 @@
   /// https://support.google.com/manufacturers/answer/6124116#image.
   Image? imageLink;
 
-  /// A list of included destinations.
+  /// A list of included destinations such as "ClientExport",
+  /// "ClientShoppingCatalog" or "PartnerShoppingCatalog".
+  ///
+  /// For more information, see
+  /// https://support.google.com/manufacturers/answer/7443550
   core.List<core.String>? includedDestination;
 
   /// The item group id of the product.
@@ -495,7 +503,8 @@
 
   /// The target client id.
   ///
-  /// Should only be used in the accounts of the data partners.
+  /// Should only be used in the accounts of the data partners. For more
+  /// information, see https://support.google.com/manufacturers/answer/10857344
   core.String? targetClientId;
 
   /// The theme of the product.
diff --git a/generated/googleapis/lib/ml/v1.dart b/generated/googleapis/lib/ml/v1.dart
index e46b3ea..93c7f3a 100644
--- a/generated/googleapis/lib/ml/v1.dart
+++ b/generated/googleapis/lib/ml/v1.dart
@@ -6880,7 +6880,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef GoogleIamV1TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef GoogleIamV1TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef GoogleIamV1TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/monitoring/v3.dart b/generated/googleapis/lib/monitoring/v3.dart
index ea33752..4712877 100644
--- a/generated/googleapis/lib/monitoring/v3.dart
+++ b/generated/googleapis/lib/monitoring/v3.dart
@@ -7154,7 +7154,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -7167,7 +7167,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
   /// Platform Subject to the Deprecation Policy
   /// (https://cloud.google.com/terms/deprecation) documentation.
@@ -7454,6 +7454,21 @@
   /// quickly.
   core.String? duration;
 
+  /// A condition control that determines how metric-threshold conditions are
+  /// evaluated when data stops arriving.
+  /// Possible string values are:
+  /// - "EVALUATION_MISSING_DATA_UNSPECIFIED" : An unspecified evaluation
+  /// missing data option, if used, it will default to
+  /// EVALUATION_MISSING_DATA_ACTIVE.
+  /// - "EVALUATION_MISSING_DATA_INACTIVE" : If there is no data to evaluate the
+  /// condition, then evaluate the condition as false.
+  /// - "EVALUATION_MISSING_DATA_ACTIVE" : If there is no data to evaluate the
+  /// condition, then evaluate the condition as true. The default for conditions
+  /// with a duration value.
+  /// - "EVALUATION_MISSING_DATA_NO_OP" : Do not evaluate the condition to any
+  /// value if there is no data.
+  core.String? evaluationMissingData;
+
   /// A filter (https://cloud.google.com/monitoring/api/v3/filters) that
   /// identifies which time series should be compared with the threshold.The
   /// filter is similar to the one that is specified in the ListTimeSeries
@@ -7487,6 +7502,7 @@
     this.denominatorAggregations,
     this.denominatorFilter,
     this.duration,
+    this.evaluationMissingData,
     this.filter,
     this.thresholdValue,
     this.trigger,
@@ -7515,6 +7531,9 @@
           duration: _json.containsKey('duration')
               ? _json['duration'] as core.String
               : null,
+          evaluationMissingData: _json.containsKey('evaluationMissingData')
+              ? _json['evaluationMissingData'] as core.String
+              : null,
           filter: _json.containsKey('filter')
               ? _json['filter'] as core.String
               : null,
@@ -7534,6 +7553,8 @@
           'denominatorAggregations': denominatorAggregations!,
         if (denominatorFilter != null) 'denominatorFilter': denominatorFilter!,
         if (duration != null) 'duration': duration!,
+        if (evaluationMissingData != null)
+          'evaluationMissingData': evaluationMissingData!,
         if (filter != null) 'filter': filter!,
         if (thresholdValue != null) 'thresholdValue': thresholdValue!,
         if (trigger != null) 'trigger': trigger!,
@@ -7648,7 +7669,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -7661,7 +7682,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
   /// Platform Subject to the Deprecation Policy
   /// (https://cloud.google.com/terms/deprecation) documentation.
@@ -7753,6 +7774,21 @@
   /// quickly.
   core.String? duration;
 
+  /// A condition control that determines how metric-threshold conditions are
+  /// evaluated when data stops arriving.
+  /// Possible string values are:
+  /// - "EVALUATION_MISSING_DATA_UNSPECIFIED" : An unspecified evaluation
+  /// missing data option, if used, it will default to
+  /// EVALUATION_MISSING_DATA_ACTIVE.
+  /// - "EVALUATION_MISSING_DATA_INACTIVE" : If there is no data to evaluate the
+  /// condition, then evaluate the condition as false.
+  /// - "EVALUATION_MISSING_DATA_ACTIVE" : If there is no data to evaluate the
+  /// condition, then evaluate the condition as true. The default for conditions
+  /// with a duration value.
+  /// - "EVALUATION_MISSING_DATA_NO_OP" : Do not evaluate the condition to any
+  /// value if there is no data.
+  core.String? evaluationMissingData;
+
   /// Monitoring Query Language (https://cloud.google.com/monitoring/mql) query
   /// that outputs a boolean stream.
   core.String? query;
@@ -7768,6 +7804,7 @@
 
   MonitoringQueryLanguageCondition({
     this.duration,
+    this.evaluationMissingData,
     this.query,
     this.trigger,
   });
@@ -7777,6 +7814,9 @@
           duration: _json.containsKey('duration')
               ? _json['duration'] as core.String
               : null,
+          evaluationMissingData: _json.containsKey('evaluationMissingData')
+              ? _json['evaluationMissingData'] as core.String
+              : null,
           query:
               _json.containsKey('query') ? _json['query'] as core.String : null,
           trigger: _json.containsKey('trigger')
@@ -7787,6 +7827,8 @@
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (duration != null) 'duration': duration!,
+        if (evaluationMissingData != null)
+          'evaluationMissingData': evaluationMissingData!,
         if (query != null) 'query': query!,
         if (trigger != null) 'trigger': trigger!,
       };
@@ -8026,7 +8068,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -8039,7 +8081,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
   /// Platform Subject to the Deprecation Policy
   /// (https://cloud.google.com/terms/deprecation) documentation.
@@ -9284,7 +9326,7 @@
   ///
   /// The following monitored resource types are valid for this field:
   /// uptime_url, gce_instance, gae_app, aws_ec2_instance, aws_elb_load_balancer
-  /// k8s_service
+  /// k8s_service servicedirectory_service
   MonitoredResource? monitoredResource;
 
   /// A unique resource name for this Uptime check configuration.
diff --git a/generated/googleapis/lib/mybusinessaccountmanagement/v1.dart b/generated/googleapis/lib/mybusinessaccountmanagement/v1.dart
index 7c2cb50..fc0ddf5 100644
--- a/generated/googleapis/lib/mybusinessaccountmanagement/v1.dart
+++ b/generated/googleapis/lib/mybusinessaccountmanagement/v1.dart
@@ -1288,7 +1288,7 @@
 /// be presented with UI elements for input or editing of fields outside
 /// countries where that field is used. For more guidance on how to use this
 /// schema, please see: https://support.google.com/business/answer/6397478
-typedef PostalAddress = $PostalAddress;
+typedef PostalAddress = $PostalAddress01;
 
 /// Represents a target location for a pending invitation.
 class TargetLocation {
diff --git a/generated/googleapis/lib/mybusinessbusinesscalls/v1.dart b/generated/googleapis/lib/mybusinessbusinesscalls/v1.dart
new file mode 100644
index 0000000..7374a26
--- /dev/null
+++ b/generated/googleapis/lib/mybusinessbusinesscalls/v1.dart
@@ -0,0 +1,505 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+// ignore_for_file: camel_case_types
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_string_interpolations
+
+/// My Business Business Calls API - v1
+///
+/// The My Business Business Calls API manages business calls information of a
+/// location on Google.
+///
+/// For more information, see <https://developers.google.com/my-business/>
+///
+/// Create an instance of [MyBusinessBusinessCallsApi] to access these
+/// resources:
+///
+/// - [LocationsResource]
+///   - [LocationsBusinesscallsinsightsResource]
+library mybusinessbusinesscalls.v1;
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+// ignore: deprecated_member_use_from_same_package
+import '../shared.dart';
+import '../src/user_agent.dart';
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+/// The My Business Business Calls API manages business calls information of a
+/// location on Google.
+class MyBusinessBusinessCallsApi {
+  final commons.ApiRequester _requester;
+
+  LocationsResource get locations => LocationsResource(_requester);
+
+  MyBusinessBusinessCallsApi(http.Client client,
+      {core.String rootUrl = 'https://mybusinessbusinesscalls.googleapis.com/',
+      core.String servicePath = ''})
+      : _requester =
+            commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
+}
+
+class LocationsResource {
+  final commons.ApiRequester _requester;
+
+  LocationsBusinesscallsinsightsResource get businesscallsinsights =>
+      LocationsBusinesscallsinsightsResource(_requester);
+
+  LocationsResource(commons.ApiRequester client) : _requester = client;
+
+  /// Returns the Business calls settings resource for the given location.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The BusinessCallsSettings to get. The `name` field is
+  /// used to identify the business call settings to get. Format:
+  /// locations/{location_id}/businesscallssettings.
+  /// Value must have pattern `^locations/\[^/\]+/businesscallssettings$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [BusinessCallsSettings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<BusinessCallsSettings> getBusinesscallssettings(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return BusinessCallsSettings.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates the Business call settings for the specified location.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The resource name of the calls settings. Format:
+  /// locations/{location}/businesscallssettings
+  /// Value must have pattern `^locations/\[^/\]+/businesscallssettings$`.
+  ///
+  /// [updateMask] - Required. The list of fields to update.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [BusinessCallsSettings].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<BusinessCallsSettings> updateBusinesscallssettings(
+    BusinessCallsSettings request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return BusinessCallsSettings.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class LocationsBusinesscallsinsightsResource {
+  final commons.ApiRequester _requester;
+
+  LocationsBusinesscallsinsightsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Returns insights for Business calls for a location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent location to fetch calls insights for.
+  /// Format: locations/{location_id}
+  /// Value must have pattern `^locations/\[^/\]+$`.
+  ///
+  /// [filter] - Optional. A filter constraining the calls insights to return.
+  /// The response includes only entries that match the filter. If the
+  /// MetricType is not provided, AGGREGATE_COUNT is returned. If no end_date is
+  /// provided, the last date for which data is available is used. If no
+  /// start_date is provided, we will default to the first date for which data
+  /// is available, which is currently 6 months. If start_date is before the
+  /// date when data is available, data is returned starting from the date when
+  /// it is available. At this time we support following filters. 1.
+  /// start_date="DATE" where date is in YYYY-MM-DD format. 2. end_date="DATE"
+  /// where date is in YYYY-MM-DD format. 3. metric_type=XYZ where XYZ is a
+  /// valid MetricType. 4. Conjunctions(AND) of all of the above. e.g.,
+  /// "start_date=2021-08-01 AND end_date=2021-08-10 AND
+  /// metric_type=AGGREGATE_COUNT" The AGGREGATE_COUNT metric_type ignores the
+  /// DD part of the date.
+  ///
+  /// [pageSize] - Optional. The maximum number of BusinessCallsInsights to
+  /// return. If unspecified, at most 20 will be returned. Some of the
+  /// metric_types(e.g, AGGREGATE_COUNT) returns a single page. For these
+  /// metrics, the page_size is ignored.
+  ///
+  /// [pageToken] - Optional. A page token, received from a previous
+  /// `ListBusinessCallsInsights` call. Provide this to retrieve the subsequent
+  /// page. When paginating, all other parameters provided to
+  /// `ListBusinessCallsInsights` must match the call that provided the page
+  /// token. Some of the metric_types (e.g, AGGREGATE_COUNT) returns a single
+  /// page. For these metrics, the pake_token is ignored.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListBusinessCallsInsightsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListBusinessCallsInsightsResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$parent') + '/businesscallsinsights';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListBusinessCallsInsightsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+/// Metrics aggregated over the input time range.
+class AggregateMetrics {
+  /// Total count of answered calls.
+  core.int? answeredCallsCount;
+
+  /// End date for this metric.
+  Date? endDate;
+
+  /// A list of metrics by hour of day.
+  core.List<HourlyMetrics>? hourlyMetrics;
+
+  /// Total count of missed calls.
+  core.int? missedCallsCount;
+
+  /// Date for this metric.
+  ///
+  /// If metric is monthly, only year and month are used.
+  Date? startDate;
+
+  /// A list of metrics by day of week.
+  core.List<WeekDayMetrics>? weekdayMetrics;
+
+  AggregateMetrics({
+    this.answeredCallsCount,
+    this.endDate,
+    this.hourlyMetrics,
+    this.missedCallsCount,
+    this.startDate,
+    this.weekdayMetrics,
+  });
+
+  AggregateMetrics.fromJson(core.Map _json)
+      : this(
+          answeredCallsCount: _json.containsKey('answeredCallsCount')
+              ? _json['answeredCallsCount'] as core.int
+              : null,
+          endDate: _json.containsKey('endDate')
+              ? Date.fromJson(
+                  _json['endDate'] as core.Map<core.String, core.dynamic>)
+              : null,
+          hourlyMetrics: _json.containsKey('hourlyMetrics')
+              ? (_json['hourlyMetrics'] as core.List)
+                  .map((value) => HourlyMetrics.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          missedCallsCount: _json.containsKey('missedCallsCount')
+              ? _json['missedCallsCount'] as core.int
+              : null,
+          startDate: _json.containsKey('startDate')
+              ? Date.fromJson(
+                  _json['startDate'] as core.Map<core.String, core.dynamic>)
+              : null,
+          weekdayMetrics: _json.containsKey('weekdayMetrics')
+              ? (_json['weekdayMetrics'] as core.List)
+                  .map((value) => WeekDayMetrics.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (answeredCallsCount != null)
+          'answeredCallsCount': answeredCallsCount!,
+        if (endDate != null) 'endDate': endDate!,
+        if (hourlyMetrics != null) 'hourlyMetrics': hourlyMetrics!,
+        if (missedCallsCount != null) 'missedCallsCount': missedCallsCount!,
+        if (startDate != null) 'startDate': startDate!,
+        if (weekdayMetrics != null) 'weekdayMetrics': weekdayMetrics!,
+      };
+}
+
+/// Insights for calls made to a location.
+class BusinessCallsInsights {
+  /// Metric for the time range based on start_date and end_date.
+  AggregateMetrics? aggregateMetrics;
+
+  /// The metric for which the value applies.
+  /// Possible string values are:
+  /// - "METRIC_TYPE_UNSPECIFIED" : Type of metric is unspecified.
+  /// - "AGGREGATE_COUNT" : The metrics provided are counts aggregated over the
+  /// input time_range.
+  core.String? metricType;
+
+  /// The resource name of the calls insights.
+  ///
+  /// Format: locations/{location}/businesscallsinsights
+  ///
+  /// Required.
+  core.String? name;
+
+  BusinessCallsInsights({
+    this.aggregateMetrics,
+    this.metricType,
+    this.name,
+  });
+
+  BusinessCallsInsights.fromJson(core.Map _json)
+      : this(
+          aggregateMetrics: _json.containsKey('aggregateMetrics')
+              ? AggregateMetrics.fromJson(_json['aggregateMetrics']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          metricType: _json.containsKey('metricType')
+              ? _json['metricType'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (aggregateMetrics != null) 'aggregateMetrics': aggregateMetrics!,
+        if (metricType != null) 'metricType': metricType!,
+        if (name != null) 'name': name!,
+      };
+}
+
+/// Business calls settings for a location.
+class BusinessCallsSettings {
+  /// The state of this location's enrollment in Business calls.
+  ///
+  /// Required.
+  /// Possible string values are:
+  /// - "CALLS_STATE_UNSPECIFIED" : Unspecified.
+  /// - "ENABLED" : Business calls is enabled for the location.
+  /// - "DISABLED" : Business calls is disabled for the location.
+  core.String? callsState;
+
+  /// Input only.
+  ///
+  /// Time when the end user provided consent to the API user to enable business
+  /// calls.
+  core.String? consentTime;
+
+  /// The resource name of the calls settings.
+  ///
+  /// Format: locations/{location}/businesscallssettings
+  ///
+  /// Required.
+  core.String? name;
+
+  BusinessCallsSettings({
+    this.callsState,
+    this.consentTime,
+    this.name,
+  });
+
+  BusinessCallsSettings.fromJson(core.Map _json)
+      : this(
+          callsState: _json.containsKey('callsState')
+              ? _json['callsState'] as core.String
+              : null,
+          consentTime: _json.containsKey('consentTime')
+              ? _json['consentTime'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (callsState != null) 'callsState': callsState!,
+        if (consentTime != null) 'consentTime': consentTime!,
+        if (name != null) 'name': name!,
+      };
+}
+
+/// Represents a whole or partial calendar date, such as a birthday.
+///
+/// The time of day and time zone are either specified elsewhere or are
+/// insignificant. The date is relative to the Gregorian Calendar. This can
+/// represent one of the following: * A full date, with non-zero year, month,
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
+typedef Date = $Date;
+
+/// Metrics for an hour.
+class HourlyMetrics {
+  /// Hour of the day.
+  ///
+  /// Allowed values are 0-23.
+  core.int? hour;
+
+  /// Total count of missed calls for this hour.
+  core.int? missedCallsCount;
+
+  HourlyMetrics({
+    this.hour,
+    this.missedCallsCount,
+  });
+
+  HourlyMetrics.fromJson(core.Map _json)
+      : this(
+          hour: _json.containsKey('hour') ? _json['hour'] as core.int : null,
+          missedCallsCount: _json.containsKey('missedCallsCount')
+              ? _json['missedCallsCount'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (hour != null) 'hour': hour!,
+        if (missedCallsCount != null) 'missedCallsCount': missedCallsCount!,
+      };
+}
+
+/// Response message for ListBusinessCallsInsights.
+class ListBusinessCallsInsightsResponse {
+  /// A collection of business calls insights for the location.
+  core.List<BusinessCallsInsights>? businessCallsInsights;
+
+  /// A token, which can be sent as `page_token` to retrieve the next page.
+  ///
+  /// If this field is omitted, there are no subsequent pages. Some of the
+  /// metric_types (e.g, AGGREGATE_COUNT) returns a single page. For these
+  /// metrics, the next_page_token will be empty.
+  core.String? nextPageToken;
+
+  ListBusinessCallsInsightsResponse({
+    this.businessCallsInsights,
+    this.nextPageToken,
+  });
+
+  ListBusinessCallsInsightsResponse.fromJson(core.Map _json)
+      : this(
+          businessCallsInsights: _json.containsKey('businessCallsInsights')
+              ? (_json['businessCallsInsights'] as core.List)
+                  .map((value) => BusinessCallsInsights.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (businessCallsInsights != null)
+          'businessCallsInsights': businessCallsInsights!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// Metrics for a week day.
+class WeekDayMetrics {
+  /// Day of the week.
+  ///
+  /// Allowed values are Sunday - Saturday.
+  /// Possible string values are:
+  /// - "DAY_OF_WEEK_UNSPECIFIED" : The day of the week is unspecified.
+  /// - "MONDAY" : Monday
+  /// - "TUESDAY" : Tuesday
+  /// - "WEDNESDAY" : Wednesday
+  /// - "THURSDAY" : Thursday
+  /// - "FRIDAY" : Friday
+  /// - "SATURDAY" : Saturday
+  /// - "SUNDAY" : Sunday
+  core.String? day;
+
+  /// Total count of missed calls for this hour.
+  core.int? missedCallsCount;
+
+  WeekDayMetrics({
+    this.day,
+    this.missedCallsCount,
+  });
+
+  WeekDayMetrics.fromJson(core.Map _json)
+      : this(
+          day: _json.containsKey('day') ? _json['day'] as core.String : null,
+          missedCallsCount: _json.containsKey('missedCallsCount')
+              ? _json['missedCallsCount'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (day != null) 'day': day!,
+        if (missedCallsCount != null) 'missedCallsCount': missedCallsCount!,
+      };
+}
diff --git a/generated/googleapis/lib/mybusinessbusinessinformation/v1.dart b/generated/googleapis/lib/mybusinessbusinessinformation/v1.dart
index 7ef4afd..fa4bc46 100644
--- a/generated/googleapis/lib/mybusinessbusinessinformation/v1.dart
+++ b/generated/googleapis/lib/mybusinessbusinessinformation/v1.dart
@@ -1529,10 +1529,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// A generic empty message that you can re-use to avoid defining duplicated
@@ -2554,7 +2554,7 @@
 /// be presented with UI elements for input or editing of fields outside
 /// countries where that field is used. For more guidance on how to use this
 /// schema, please see: https://support.google.com/business/answer/6397478
-typedef PostalAddress = $PostalAddress;
+typedef PostalAddress = $PostalAddress01;
 
 /// All information pertaining to the location's profile.
 class Profile {
diff --git a/generated/googleapis/lib/mybusinesslodging/v1.dart b/generated/googleapis/lib/mybusinesslodging/v1.dart
index e4c0477..1672cb4 100644
--- a/generated/googleapis/lib/mybusinesslodging/v1.dart
+++ b/generated/googleapis/lib/mybusinesslodging/v1.dart
@@ -7518,7 +7518,7 @@
   /// Vegetarian meals.
   ///
   /// The property provides vegetarian menu options for guests. Vegetarian food
-  /// does not contain animal products.
+  /// does not contain meat, poultry, fish, or seafood.
   core.bool? vegetarianMeals;
 
   /// Vegetarian meals exception.
diff --git a/generated/googleapis/lib/mybusinessverifications/v1.dart b/generated/googleapis/lib/mybusinessverifications/v1.dart
index a625992..c7e1548 100644
--- a/generated/googleapis/lib/mybusinessverifications/v1.dart
+++ b/generated/googleapis/lib/mybusinessverifications/v1.dart
@@ -713,7 +713,7 @@
 /// be presented with UI elements for input or editing of fields outside
 /// countries where that field is used. For more guidance on how to use this
 /// schema, please see: https://support.google.com/business/answer/6397478
-typedef PostalAddress = $PostalAddress;
+typedef PostalAddress = $PostalAddress01;
 
 /// Indicates that the location duplicates another location that is in good
 /// standing.
diff --git a/generated/googleapis/lib/networkconnectivity/v1.dart b/generated/googleapis/lib/networkconnectivity/v1.dart
index 4c546a1..a99fdeb 100644
--- a/generated/googleapis/lib/networkconnectivity/v1.dart
+++ b/generated/googleapis/lib/networkconnectivity/v1.dart
@@ -1677,9 +1677,10 @@
 
 /// A hub is a collection of spokes.
 ///
-/// A single hub can contain spokes from multiple regions. However, all of a
-/// hub's spokes must be associated with resources that reside in the same VPC
-/// network.
+/// A single hub can contain spokes from multiple regions. However, if any of a
+/// hub's spokes use the data transfer feature, the resources associated with
+/// those spokes must all reside in the same VPC network. Spokes that do not use
+/// data transfer can be associated with any VPC network in your project.
 class Hub {
   /// The time the hub was created.
   ///
@@ -1703,12 +1704,10 @@
   /// Immutable.
   core.String? name;
 
-  /// The VPC network associated with this hub's spokes.
+  /// The VPC networks associated with this hub's spokes.
   ///
-  /// All of the VPN tunnels, VLAN attachments, and router appliance instances
-  /// referenced by this hub's spokes must belong to this VPC network. This
-  /// field is read-only. Network Connectivity Center automatically populates it
-  /// based on the set of spokes attached to the hub.
+  /// This field is read-only. Network Connectivity Center automatically
+  /// populates it based on the set of spokes attached to the hub.
   core.List<RoutingVPC>? routingVpcs;
 
   /// The current lifecycle state of this hub.
@@ -1800,8 +1799,8 @@
   /// A value that controls whether site-to-site data transfer is enabled for
   /// these resources.
   ///
-  /// This field is set to false by default, but you must set it to true. Note
-  /// that data transfer is available only in supported locations.
+  /// Data transfer is available only in
+  /// [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations).
   core.bool? siteToSiteDataTransfer;
 
   /// The URIs of linked interconnect attachment resources
@@ -1833,8 +1832,9 @@
 
 /// A collection of router appliance instances.
 ///
-/// If you have multiple router appliance instances connected to the same site,
-/// they should all be attached to the same spoke.
+/// If you configure multiple router appliance instances to receive data from
+/// the same set of sites outside of Google Cloud, we recommend that you
+/// associate those instances with the same spoke.
 class LinkedRouterApplianceInstances {
   /// The list of router appliance instances.
   core.List<RouterApplianceInstance>? instances;
@@ -1842,8 +1842,8 @@
   /// A value that controls whether site-to-site data transfer is enabled for
   /// these resources.
   ///
-  /// This field is set to false by default, but you must set it to true. Note
-  /// that data transfer is available only in supported locations.
+  /// Data transfer is available only in
+  /// [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations).
   core.bool? siteToSiteDataTransfer;
 
   LinkedRouterApplianceInstances({
@@ -1881,8 +1881,8 @@
   /// A value that controls whether site-to-site data transfer is enabled for
   /// these resources.
   ///
-  /// This field is set to false by default, but you must set it to true. Note
-  /// that data transfer is available only in supported locations.
+  /// Data transfer is available only in
+  /// [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations).
   core.bool? siteToSiteDataTransfer;
 
   /// The URIs of linked VPN tunnel resources.
@@ -2191,7 +2191,7 @@
       };
 }
 
-/// RoutingVPC contains information about the VPC network that is associated
+/// RoutingVPC contains information about the VPC networks that are associated
 /// with a hub's spokes.
 class RoutingVPC {
   /// If true, indicates that this VPC network is currently associated with
@@ -2199,7 +2199,8 @@
   /// site_to_site_data_transfer field is set to true).
   ///
   /// If you create new spokes that use data transfer, they must be associated
-  /// with this VPC network.
+  /// with this VPC network. At most, one VPC network will have this field set
+  /// to true.
   ///
   /// Output only.
   core.bool? requiredForNewSiteToSiteDataTransferSpokes;
@@ -2409,7 +2410,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/networkmanagement/v1.dart b/generated/googleapis/lib/networkmanagement/v1.dart
index dea18d2..c181859 100644
--- a/generated/googleapis/lib/networkmanagement/v1.dart
+++ b/generated/googleapis/lib/networkmanagement/v1.dart
@@ -2899,7 +2899,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/networksecurity/v1.dart b/generated/googleapis/lib/networksecurity/v1.dart
index 920a8a4..ccc1f54 100644
--- a/generated/googleapis/lib/networksecurity/v1.dart
+++ b/generated/googleapis/lib/networksecurity/v1.dart
@@ -2238,7 +2238,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef GoogleIamV1TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef GoogleIamV1TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef GoogleIamV1TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/networkservices/v1.dart b/generated/googleapis/lib/networkservices/v1.dart
index 55c8675..d5b82c4 100644
--- a/generated/googleapis/lib/networkservices/v1.dart
+++ b/generated/googleapis/lib/networkservices/v1.dart
@@ -2017,7 +2017,7 @@
 typedef Status = $Status;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/notebooks/v1.dart b/generated/googleapis/lib/notebooks/v1.dart
index 76d1393..9ee005a 100644
--- a/generated/googleapis/lib/notebooks/v1.dart
+++ b/generated/googleapis/lib/notebooks/v1.dart
@@ -2948,6 +2948,13 @@
 
 /// The definition of an Event for a managed / semi-managed notebook instance.
 class Event {
+  /// Event details.
+  ///
+  /// This field is used to pass event information.
+  ///
+  /// Optional.
+  core.Map<core.String, core.String>? details;
+
   /// Event report time.
   core.String? reportTime;
 
@@ -2955,15 +2962,28 @@
   /// Possible string values are:
   /// - "EVENT_TYPE_UNSPECIFIED" : Event is not specified.
   /// - "IDLE" : The instance / runtime is idle
+  /// - "HEARTBEAT" : The instance / runtime is available. This event indicates
+  /// that instance / runtime underlying compute is operational.
+  /// - "HEALTH" : The instance / runtime health is available. This event
+  /// indicates that instance / runtime health information.
   core.String? type;
 
   Event({
+    this.details,
     this.reportTime,
     this.type,
   });
 
   Event.fromJson(core.Map _json)
       : this(
+          details: _json.containsKey('details')
+              ? (_json['details'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
           reportTime: _json.containsKey('reportTime')
               ? _json['reportTime'] as core.String
               : null,
@@ -2971,6 +2991,7 @@
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (details != null) 'details': details!,
         if (reportTime != null) 'reportTime': reportTime!,
         if (type != null) 'type': type!,
       };
@@ -3428,6 +3449,11 @@
   /// Output only.
   core.String? createTime;
 
+  /// Email address of entity that sent original CreateInstance request.
+  ///
+  /// Output only.
+  core.String? creator;
+
   /// Specify a custom Cloud Storage path where the GPU driver is stored.
   ///
   /// If not specified, we'll automatically choose from official GPU drivers.
@@ -3635,6 +3661,7 @@
     this.bootDiskType,
     this.containerImage,
     this.createTime,
+    this.creator,
     this.customGpuDriverPath,
     this.dataDiskSizeGb,
     this.dataDiskType,
@@ -3685,6 +3712,9 @@
           createTime: _json.containsKey('createTime')
               ? _json['createTime'] as core.String
               : null,
+          creator: _json.containsKey('creator')
+              ? _json['creator'] as core.String
+              : null,
           customGpuDriverPath: _json.containsKey('customGpuDriverPath')
               ? _json['customGpuDriverPath'] as core.String
               : null,
@@ -3802,6 +3832,7 @@
         if (bootDiskType != null) 'bootDiskType': bootDiskType!,
         if (containerImage != null) 'containerImage': containerImage!,
         if (createTime != null) 'createTime': createTime!,
+        if (creator != null) 'creator': creator!,
         if (customGpuDriverPath != null)
           'customGpuDriverPath': customGpuDriverPath!,
         if (dataDiskSizeGb != null) 'dataDiskSizeGb': dataDiskSizeGb!,
@@ -4802,10 +4833,10 @@
       };
 }
 
-/// Request for reseting a notebook instance
+/// Request for resetting a notebook instance
 typedef ResetInstanceRequest = $Empty;
 
-/// Request for reseting a Managed Notebook Runtime.
+/// Request for resetting a Managed Notebook Runtime.
 typedef ResetRuntimeRequest = $Empty;
 
 /// Request for rollbacking a notebook instance
@@ -4852,6 +4883,10 @@
   /// critical daemons are running) Applies to ACTIVE state.
   /// - "UNHEALTHY" : The runtime is known to be in an unhealthy state (for
   /// example, critical daemons are not running) Applies to ACTIVE state.
+  /// - "AGENT_NOT_INSTALLED" : The runtime has not installed health monitoring
+  /// agent. Applies to ACTIVE state.
+  /// - "AGENT_NOT_RUNNING" : The runtime health monitoring agent is not
+  /// running. Applies to ACTIVE state.
   core.String? healthState;
 
   /// Contains Runtime daemon metrics such as Service status and JupyterLab
@@ -5008,6 +5043,10 @@
   /// Possible string values are:
   /// - "RUNTIME_ACCESS_TYPE_UNSPECIFIED" : Unspecified access.
   /// - "SINGLE_USER" : Single user login.
+  /// - "SERVICE_ACCOUNT" : Service Account mode. In Service Account mode,
+  /// Runtime creator will specify a SA that exists in the consumer project.
+  /// Using Runtime Service Account field. Users accessing the Runtime need
+  /// ActAs (Service Account User) permission.
   core.String? accessType;
 
   /// The proxy endpoint that is used to access the runtime.
@@ -5117,7 +5156,7 @@
 ///
 /// The properties to set on runtime. Properties keys are specified in
 /// `key:value` format, for example: * `idle_shutdown: true` *
-/// `idle_shutdown_timeout: 180` * `report-system-health: true`
+/// `idle_shutdown_timeout: 180` * `enable_health_monitoring: true`
 class RuntimeSoftwareConfig {
   /// Specify a custom Cloud Storage path where the GPU driver is stored.
   ///
@@ -5142,6 +5181,11 @@
   /// Install Nvidia Driver automatically.
   core.bool? installGpuDriver;
 
+  /// Use a list of container images to use as Kernels in the notebook instance.
+  ///
+  /// Optional.
+  core.List<ContainerImage>? kernels;
+
   /// Cron expression in UTC timezone, used to schedule instance auto upgrade.
   ///
   /// Please follow the [cron format](https://en.wikipedia.org/wiki/Cron).
@@ -5154,14 +5198,21 @@
   /// (`gs://path-to-file/file-name`).
   core.String? postStartupScript;
 
+  /// Bool indicating whether an newer image is available in an image family.
+  ///
+  /// Output only.
+  core.bool? upgradeable;
+
   RuntimeSoftwareConfig({
     this.customGpuDriverPath,
     this.enableHealthMonitoring,
     this.idleShutdown,
     this.idleShutdownTimeout,
     this.installGpuDriver,
+    this.kernels,
     this.notebookUpgradeSchedule,
     this.postStartupScript,
+    this.upgradeable,
   });
 
   RuntimeSoftwareConfig.fromJson(core.Map _json)
@@ -5181,12 +5232,21 @@
           installGpuDriver: _json.containsKey('installGpuDriver')
               ? _json['installGpuDriver'] as core.bool
               : null,
+          kernels: _json.containsKey('kernels')
+              ? (_json['kernels'] as core.List)
+                  .map((value) => ContainerImage.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
           notebookUpgradeSchedule: _json.containsKey('notebookUpgradeSchedule')
               ? _json['notebookUpgradeSchedule'] as core.String
               : null,
           postStartupScript: _json.containsKey('postStartupScript')
               ? _json['postStartupScript'] as core.String
               : null,
+          upgradeable: _json.containsKey('upgradeable')
+              ? _json['upgradeable'] as core.bool
+              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
@@ -5198,9 +5258,11 @@
         if (idleShutdownTimeout != null)
           'idleShutdownTimeout': idleShutdownTimeout!,
         if (installGpuDriver != null) 'installGpuDriver': installGpuDriver!,
+        if (kernels != null) 'kernels': kernels!,
         if (notebookUpgradeSchedule != null)
           'notebookUpgradeSchedule': notebookUpgradeSchedule!,
         if (postStartupScript != null) 'postStartupScript': postStartupScript!,
+        if (upgradeable != null) 'upgradeable': upgradeable!,
       };
 }
 
@@ -5566,7 +5628,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
@@ -5944,7 +6006,7 @@
   /// Optional.
   RuntimeAcceleratorConfig? acceleratorConfig;
 
-  /// Use a list of container images to start the notebook instance.
+  /// Use a list of container images to use as Kernels in the notebook instance.
   ///
   /// Optional.
   core.List<ContainerImage>? containerImages;
@@ -6031,6 +6093,19 @@
   /// - "GVNIC" : GVNIC
   core.String? nicType;
 
+  /// Reserved IP Range name is used for VPC Peering.
+  ///
+  /// The subnetwork allocation will use the range *name* if it's assigned.
+  /// Example: managed-notebooks-range-c
+  /// PEERING_RANGE_NAME_3=managed-notebooks-range-c gcloud compute addresses
+  /// create $PEERING_RANGE_NAME_3 \ --global \ --prefix-length=24 \
+  /// --description="Google Cloud Managed Notebooks Range 24 c" \
+  /// --network=$NETWORK \ --addresses=192.168.0.0 \ --purpose=VPC_PEERING Field
+  /// value will be: `managed-notebooks-range-c`
+  ///
+  /// Optional.
+  core.String? reservedIpRange;
+
   /// Shielded VM Instance configuration settings.
   ///
   /// Optional.
@@ -6073,6 +6148,7 @@
     this.metadata,
     this.network,
     this.nicType,
+    this.reservedIpRange,
     this.shieldedInstanceConfig,
     this.subnet,
     this.tags,
@@ -6137,6 +6213,9 @@
           nicType: _json.containsKey('nicType')
               ? _json['nicType'] as core.String
               : null,
+          reservedIpRange: _json.containsKey('reservedIpRange')
+              ? _json['reservedIpRange'] as core.String
+              : null,
           shieldedInstanceConfig: _json.containsKey('shieldedInstanceConfig')
               ? RuntimeShieldedInstanceConfig.fromJson(
                   _json['shieldedInstanceConfig']
@@ -6165,6 +6244,7 @@
         if (metadata != null) 'metadata': metadata!,
         if (network != null) 'network': network!,
         if (nicType != null) 'nicType': nicType!,
+        if (reservedIpRange != null) 'reservedIpRange': reservedIpRange!,
         if (shieldedInstanceConfig != null)
           'shieldedInstanceConfig': shieldedInstanceConfig!,
         if (subnet != null) 'subnet': subnet!,
diff --git a/generated/googleapis/lib/orgpolicy/v2.dart b/generated/googleapis/lib/orgpolicy/v2.dart
index 3037dc8..4683918 100644
--- a/generated/googleapis/lib/orgpolicy/v2.dart
+++ b/generated/googleapis/lib/orgpolicy/v2.dart
@@ -27,7 +27,6 @@
 ///   - [FoldersPoliciesResource]
 /// - [OrganizationsResource]
 ///   - [OrganizationsConstraintsResource]
-///   - [OrganizationsCustomConstraintsResource]
 ///   - [OrganizationsPoliciesResource]
 /// - [ProjectsResource]
 ///   - [ProjectsConstraintsResource]
@@ -428,8 +427,6 @@
 
   OrganizationsConstraintsResource get constraints =>
       OrganizationsConstraintsResource(_requester);
-  OrganizationsCustomConstraintsResource get customConstraints =>
-      OrganizationsCustomConstraintsResource(_requester);
   OrganizationsPoliciesResource get policies =>
       OrganizationsPoliciesResource(_requester);
 
@@ -494,62 +491,6 @@
   }
 }
 
-class OrganizationsCustomConstraintsResource {
-  final commons.ApiRequester _requester;
-
-  OrganizationsCustomConstraintsResource(commons.ApiRequester client)
-      : _requester = client;
-
-  /// Updates a Custom Constraint.
-  ///
-  /// Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the
-  /// constraint does not exist. Note: the supplied policy will perform a full
-  /// overwrite of all fields.
-  ///
-  /// [request] - The metadata request object.
-  ///
-  /// Request parameters:
-  ///
-  /// [name] - Immutable. Name of the constraint. This is unique within the
-  /// organization. Format of the name should be *
-  /// `organizations/{organization_id}/customConstraints/{custom_constraint_id}`
-  /// Example : "organizations/123/customConstraints/custom.createOnlyE2TypeVms"
-  /// Value must have pattern
-  /// `^organizations/\[^/\]+/customConstraints/\[^/\]+$`.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [GoogleCloudOrgpolicyV2CustomConstraint].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<GoogleCloudOrgpolicyV2CustomConstraint> patch(
-    GoogleCloudOrgpolicyV2CustomConstraint request,
-    core.String name, {
-    core.String? $fields,
-  }) async {
-    final _body = convert.json.encode(request);
-    final _queryParams = <core.String, core.List<core.String>>{
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v2/' + core.Uri.encodeFull('$name');
-
-    final _response = await _requester.request(
-      _url,
-      'PATCH',
-      body: _body,
-      queryParams: _queryParams,
-    );
-    return GoogleCloudOrgpolicyV2CustomConstraint.fromJson(
-        _response as core.Map<core.String, core.dynamic>);
-  }
-}
-
 class OrganizationsPoliciesResource {
   final commons.ApiRequester _requester;
 
@@ -1368,101 +1309,6 @@
       };
 }
 
-/// A custom constraint defined by customers which can *only* be applied to the
-/// given resource types and organization.
-///
-/// By creating a custom constraint, customers can applied policies of this
-/// custom constraint. *Creating a custom constraint itself does NOT apply any
-/// policy enforcement*.
-class GoogleCloudOrgpolicyV2CustomConstraint {
-  /// Allow or deny type.
-  /// Possible string values are:
-  /// - "ACTION_TYPE_UNSPECIFIED" : Unspecified. Will results in user error.
-  /// - "ALLOW" : Allowed action type.
-  /// - "DENY" : Deny action type.
-  core.String? actionType;
-
-  /// Org policy condition/expression.
-  ///
-  /// For example:
-  /// `resource.instanceName.matches("[production|test]_.*_(\d)+")'` or,
-  /// `resource.management.auto_upgrade == true`
-  core.String? condition;
-
-  /// Detailed information about this custom policy constraint.
-  core.String? description;
-
-  /// One line display name for the UI.
-  core.String? displayName;
-
-  /// All the operations being applied for this constraint.
-  core.List<core.String>? methodTypes;
-
-  /// Name of the constraint.
-  ///
-  /// This is unique within the organization. Format of the name should be *
-  /// `organizations/{organization_id}/customConstraints/{custom_constraint_id}`
-  /// Example : "organizations/123/customConstraints/custom.createOnlyE2TypeVms"
-  ///
-  /// Immutable.
-  core.String? name;
-
-  /// The Resource Instance type on which this policy applies to.
-  ///
-  /// Format will be of the form : "/" Example: *
-  /// `compute.googleapis.com/Instance`.
-  ///
-  /// Immutable.
-  core.List<core.String>? resourceTypes;
-
-  GoogleCloudOrgpolicyV2CustomConstraint({
-    this.actionType,
-    this.condition,
-    this.description,
-    this.displayName,
-    this.methodTypes,
-    this.name,
-    this.resourceTypes,
-  });
-
-  GoogleCloudOrgpolicyV2CustomConstraint.fromJson(core.Map _json)
-      : this(
-          actionType: _json.containsKey('actionType')
-              ? _json['actionType'] as core.String
-              : null,
-          condition: _json.containsKey('condition')
-              ? _json['condition'] as core.String
-              : null,
-          description: _json.containsKey('description')
-              ? _json['description'] as core.String
-              : null,
-          displayName: _json.containsKey('displayName')
-              ? _json['displayName'] as core.String
-              : null,
-          methodTypes: _json.containsKey('methodTypes')
-              ? (_json['methodTypes'] as core.List)
-                  .map((value) => value as core.String)
-                  .toList()
-              : null,
-          name: _json.containsKey('name') ? _json['name'] as core.String : null,
-          resourceTypes: _json.containsKey('resourceTypes')
-              ? (_json['resourceTypes'] as core.List)
-                  .map((value) => value as core.String)
-                  .toList()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (actionType != null) 'actionType': actionType!,
-        if (condition != null) 'condition': condition!,
-        if (description != null) 'description': description!,
-        if (displayName != null) 'displayName': displayName!,
-        if (methodTypes != null) 'methodTypes': methodTypes!,
-        if (name != null) 'name': name!,
-        if (resourceTypes != null) 'resourceTypes': resourceTypes!,
-      };
-}
-
 /// The response returned from the ListConstraints method.
 class GoogleCloudOrgpolicyV2ListConstraintsResponse {
   /// The collection of constraints that are available on the targeted resource.
diff --git a/generated/googleapis/lib/osconfig/v1.dart b/generated/googleapis/lib/osconfig/v1.dart
index 0fd5d0d..43dbb8a 100644
--- a/generated/googleapis/lib/osconfig/v1.dart
+++ b/generated/googleapis/lib/osconfig/v1.dart
@@ -1679,10 +1679,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// A generic empty message that you can re-use to avoid defining duplicated
diff --git a/generated/googleapis/lib/people/v1.dart b/generated/googleapis/lib/people/v1.dart
index 9d08bcd..d569a65 100644
--- a/generated/googleapis/lib/people/v1.dart
+++ b/generated/googleapis/lib/people/v1.dart
@@ -2023,14 +2023,18 @@
 ///
 /// At least one of the `date` and `text` fields are specified. The `date` and
 /// `text` fields typically represent the same date, but are not guaranteed to.
+/// Clients should always set the `date` field when mutating birthdays.
 class Birthday {
-  /// The date of the birthday.
+  /// The structured date of the birthday.
   Date? date;
 
   /// Metadata about the birthday.
   FieldMetadata? metadata;
 
-  /// A free-form string representing the user's birthday.
+  /// Prefer to use the `date` field if set.
+  ///
+  /// A free-form string representing the user's birthday. This value is not
+  /// validated.
   core.String? text;
 
   Birthday({
@@ -2575,10 +2579,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// The response for deleting a contact's photo.
diff --git a/generated/googleapis/lib/playintegrity/v1.dart b/generated/googleapis/lib/playintegrity/v1.dart
new file mode 100644
index 0000000..ff4786d
--- /dev/null
+++ b/generated/googleapis/lib/playintegrity/v1.dart
@@ -0,0 +1,412 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+// ignore_for_file: camel_case_types
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_string_interpolations
+
+/// Google Play Integrity API - v1
+///
+/// Play Integrity
+///
+/// For more information, see
+/// <https://developer.android.com/google/play/integrity>
+///
+/// Create an instance of [PlayIntegrityApi] to access these resources:
+///
+/// - [V1Resource]
+library playintegrity.v1;
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+import '../src/user_agent.dart';
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+/// Play Integrity
+class PlayIntegrityApi {
+  /// Private Service: https://www.googleapis.com/auth/playintegrity
+  static const playintegrityScope =
+      'https://www.googleapis.com/auth/playintegrity';
+
+  final commons.ApiRequester _requester;
+
+  V1Resource get v1 => V1Resource(_requester);
+
+  PlayIntegrityApi(http.Client client,
+      {core.String rootUrl = 'https://playintegrity.googleapis.com/',
+      core.String servicePath = ''})
+      : _requester =
+            commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
+}
+
+class V1Resource {
+  final commons.ApiRequester _requester;
+
+  V1Resource(commons.ApiRequester client) : _requester = client;
+
+  /// Decodes the integrity token and returns the token payload.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [packageName] - Package name of the app the attached integrity token
+  /// belongs to.
+  /// Value must have pattern `^\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [DecodeIntegrityTokenResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<DecodeIntegrityTokenResponse> decodeIntegrityToken(
+    DecodeIntegrityTokenRequest request,
+    core.String packageName, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$packageName') + ':decodeIntegrityToken';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return DecodeIntegrityTokenResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+/// Contains the account information such as the licensing status for the user
+/// in the scope.
+class AccountDetails {
+  /// Details about the licensing status of the user for the app in the scope.
+  ///
+  /// Required.
+  /// Possible string values are:
+  /// - "UNKNOWN" : Play does not have sufficient information to evaluate
+  /// licensing details
+  /// - "LICENSED" : The app and certificate match the versions distributed by
+  /// Play.
+  /// - "UNLICENSED" : The certificate or package name does not match Google
+  /// Play records.
+  /// - "UNEVALUATED" : Licensing details were not evaluated since a necessary
+  /// requirement was missed. For example DeviceIntegrity did not meet the
+  /// minimum bar or the application was not a known Play version.
+  core.String? appLicensingVerdict;
+
+  AccountDetails({
+    this.appLicensingVerdict,
+  });
+
+  AccountDetails.fromJson(core.Map _json)
+      : this(
+          appLicensingVerdict: _json.containsKey('appLicensingVerdict')
+              ? _json['appLicensingVerdict'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (appLicensingVerdict != null)
+          'appLicensingVerdict': appLicensingVerdict!,
+      };
+}
+
+/// Contains the application integrity information.
+class AppIntegrity {
+  /// Details about the app recognition verdict
+  ///
+  /// Required.
+  /// Possible string values are:
+  /// - "UNKNOWN" : Play does not have sufficient information to evaluate app
+  /// integrity
+  /// - "PLAY_RECOGNIZED" : The app and certificate match the versions
+  /// distributed by Play.
+  /// - "UNRECOGNIZED_VERSION" : The certificate or package name does not match
+  /// Google Play records.
+  /// - "UNEVALUATED" : Application integrity was not evaluated since a
+  /// necessary requirement was missed. For example DeviceIntegrity did not meet
+  /// the minimum bar.
+  core.String? appRecognitionVerdict;
+
+  /// Hex fingerprint of the application signing certificate.
+  ///
+  /// e.g. “ABCE1F....” Set iff app_recognition_verdict != UNEVALUATED.
+  core.List<core.String>? certificateSha256Digest;
+
+  /// Package name of the application under attestation.
+  ///
+  /// Set iff app_recognition_verdict != UNEVALUATED.
+  core.String? packageName;
+
+  /// Version code of the application.
+  ///
+  /// Set iff app_recognition_verdict != UNEVALUATED.
+  core.String? versionCode;
+
+  AppIntegrity({
+    this.appRecognitionVerdict,
+    this.certificateSha256Digest,
+    this.packageName,
+    this.versionCode,
+  });
+
+  AppIntegrity.fromJson(core.Map _json)
+      : this(
+          appRecognitionVerdict: _json.containsKey('appRecognitionVerdict')
+              ? _json['appRecognitionVerdict'] as core.String
+              : null,
+          certificateSha256Digest: _json.containsKey('certificateSha256Digest')
+              ? (_json['certificateSha256Digest'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          packageName: _json.containsKey('packageName')
+              ? _json['packageName'] as core.String
+              : null,
+          versionCode: _json.containsKey('versionCode')
+              ? _json['versionCode'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (appRecognitionVerdict != null)
+          'appRecognitionVerdict': appRecognitionVerdict!,
+        if (certificateSha256Digest != null)
+          'certificateSha256Digest': certificateSha256Digest!,
+        if (packageName != null) 'packageName': packageName!,
+        if (versionCode != null) 'versionCode': versionCode!,
+      };
+}
+
+/// Request to decode the integrity token.
+class DecodeIntegrityTokenRequest {
+  /// Encoded integrity token.
+  core.String? integrityToken;
+
+  DecodeIntegrityTokenRequest({
+    this.integrityToken,
+  });
+
+  DecodeIntegrityTokenRequest.fromJson(core.Map _json)
+      : this(
+          integrityToken: _json.containsKey('integrityToken')
+              ? _json['integrityToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (integrityToken != null) 'integrityToken': integrityToken!,
+      };
+}
+
+/// Response containing the decoded integrity payload.
+class DecodeIntegrityTokenResponse {
+  /// Plain token payload generated from the decoded integrity token.
+  TokenPayloadExternal? tokenPayloadExternal;
+
+  DecodeIntegrityTokenResponse({
+    this.tokenPayloadExternal,
+  });
+
+  DecodeIntegrityTokenResponse.fromJson(core.Map _json)
+      : this(
+          tokenPayloadExternal: _json.containsKey('tokenPayloadExternal')
+              ? TokenPayloadExternal.fromJson(_json['tokenPayloadExternal']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (tokenPayloadExternal != null)
+          'tokenPayloadExternal': tokenPayloadExternal!,
+      };
+}
+
+/// Contains the device attestation information.
+class DeviceIntegrity {
+  /// Details about the integrity of the device the app is running on
+  core.List<core.String>? deviceRecognitionVerdict;
+
+  DeviceIntegrity({
+    this.deviceRecognitionVerdict,
+  });
+
+  DeviceIntegrity.fromJson(core.Map _json)
+      : this(
+          deviceRecognitionVerdict:
+              _json.containsKey('deviceRecognitionVerdict')
+                  ? (_json['deviceRecognitionVerdict'] as core.List)
+                      .map((value) => value as core.String)
+                      .toList()
+                  : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (deviceRecognitionVerdict != null)
+          'deviceRecognitionVerdict': deviceRecognitionVerdict!,
+      };
+}
+
+/// Contains the integrity request information.
+class RequestDetails {
+  /// Nonce that was provided in the request (which is base64 web-safe no-wrap).
+  ///
+  /// Required.
+  core.String? nonce;
+
+  /// Application package name this attestation was requested for.
+  ///
+  /// Note: This field makes no guarantees or promises on the caller integrity.
+  /// For details on application integrity, check application_integrity.
+  ///
+  /// Required.
+  core.String? requestPackageName;
+
+  /// Timestamp, in milliseconds, of the integrity application request.
+  ///
+  /// Required.
+  core.String? timestampMillis;
+
+  RequestDetails({
+    this.nonce,
+    this.requestPackageName,
+    this.timestampMillis,
+  });
+
+  RequestDetails.fromJson(core.Map _json)
+      : this(
+          nonce:
+              _json.containsKey('nonce') ? _json['nonce'] as core.String : null,
+          requestPackageName: _json.containsKey('requestPackageName')
+              ? _json['requestPackageName'] as core.String
+              : null,
+          timestampMillis: _json.containsKey('timestampMillis')
+              ? _json['timestampMillis'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nonce != null) 'nonce': nonce!,
+        if (requestPackageName != null)
+          'requestPackageName': requestPackageName!,
+        if (timestampMillis != null) 'timestampMillis': timestampMillis!,
+      };
+}
+
+/// Contains additional information generated for testing responses.
+class TestingDetails {
+  /// Indicates that the information contained in this payload is a testing
+  /// response that is statically overridden for a tester.
+  ///
+  /// Required.
+  core.bool? isTestingResponse;
+
+  TestingDetails({
+    this.isTestingResponse,
+  });
+
+  TestingDetails.fromJson(core.Map _json)
+      : this(
+          isTestingResponse: _json.containsKey('isTestingResponse')
+              ? _json['isTestingResponse'] as core.bool
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (isTestingResponse != null) 'isTestingResponse': isTestingResponse!,
+      };
+}
+
+/// Contains basic app information and integrity signals like device attestation
+/// and licensing details.
+class TokenPayloadExternal {
+  /// Details about the Play Store account.
+  ///
+  /// Required.
+  AccountDetails? accountDetails;
+
+  /// Details about the application integrity.
+  ///
+  /// Required.
+  AppIntegrity? appIntegrity;
+
+  /// Details about the device integrity.
+  ///
+  /// Required.
+  DeviceIntegrity? deviceIntegrity;
+
+  /// Details about the integrity request.
+  ///
+  /// Required.
+  RequestDetails? requestDetails;
+
+  /// Indicates that this payload is generated for testing purposes and contains
+  /// any additional data that is linked with testing status.
+  TestingDetails? testingDetails;
+
+  TokenPayloadExternal({
+    this.accountDetails,
+    this.appIntegrity,
+    this.deviceIntegrity,
+    this.requestDetails,
+    this.testingDetails,
+  });
+
+  TokenPayloadExternal.fromJson(core.Map _json)
+      : this(
+          accountDetails: _json.containsKey('accountDetails')
+              ? AccountDetails.fromJson(_json['accountDetails']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          appIntegrity: _json.containsKey('appIntegrity')
+              ? AppIntegrity.fromJson(
+                  _json['appIntegrity'] as core.Map<core.String, core.dynamic>)
+              : null,
+          deviceIntegrity: _json.containsKey('deviceIntegrity')
+              ? DeviceIntegrity.fromJson(_json['deviceIntegrity']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          requestDetails: _json.containsKey('requestDetails')
+              ? RequestDetails.fromJson(_json['requestDetails']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          testingDetails: _json.containsKey('testingDetails')
+              ? TestingDetails.fromJson(_json['testingDetails']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (accountDetails != null) 'accountDetails': accountDetails!,
+        if (appIntegrity != null) 'appIntegrity': appIntegrity!,
+        if (deviceIntegrity != null) 'deviceIntegrity': deviceIntegrity!,
+        if (requestDetails != null) 'requestDetails': requestDetails!,
+        if (testingDetails != null) 'testingDetails': testingDetails!,
+      };
+}
diff --git a/generated/googleapis/lib/policysimulator/v1.dart b/generated/googleapis/lib/policysimulator/v1.dart
index ab47c1c..578ff8c 100644
--- a/generated/googleapis/lib/policysimulator/v1.dart
+++ b/generated/googleapis/lib/policysimulator/v1.dart
@@ -1848,10 +1848,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
 
 /// Represents a textual expression in the Common Expression Language (CEL)
diff --git a/generated/googleapis/lib/privateca/v1.dart b/generated/googleapis/lib/privateca/v1.dart
index e51213e..36200c9 100644
--- a/generated/googleapis/lib/privateca/v1.dart
+++ b/generated/googleapis/lib/privateca/v1.dart
@@ -31,7 +31,6 @@
 /// [ProjectsLocationsCaPoolsCertificateAuthoritiesCertificateRevocationListsResource]
 ///       - [ProjectsLocationsCaPoolsCertificatesResource]
 ///     - [ProjectsLocationsCertificateTemplatesResource]
-///     - [ProjectsLocationsManagedPkisResource]
 ///     - [ProjectsLocationsOperationsResource]
 library privateca.v1;
 
@@ -85,8 +84,6 @@
       ProjectsLocationsCaPoolsResource(_requester);
   ProjectsLocationsCertificateTemplatesResource get certificateTemplates =>
       ProjectsLocationsCertificateTemplatesResource(_requester);
-  ProjectsLocationsManagedPkisResource get managedPkis =>
-      ProjectsLocationsManagedPkisResource(_requester);
   ProjectsLocationsOperationsResource get operations =>
       ProjectsLocationsOperationsResource(_requester);
 
@@ -2221,69 +2218,6 @@
   }
 }
 
-class ProjectsLocationsManagedPkisResource {
-  final commons.ApiRequester _requester;
-
-  ProjectsLocationsManagedPkisResource(commons.ApiRequester client)
-      : _requester = client;
-
-  /// Gets the access control policy for a resource.
-  ///
-  /// Returns an empty policy if the resource exists and does not have a policy
-  /// set.
-  ///
-  /// Request parameters:
-  ///
-  /// [resource] - REQUIRED: The resource for which the policy is being
-  /// requested. See the operation documentation for the appropriate value for
-  /// this field.
-  /// Value must have pattern
-  /// `^projects/\[^/\]+/locations/\[^/\]+/managedPkis/\[^/\]+$`.
-  ///
-  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
-  /// that will be used to format the policy. Valid values are 0, 1, and 3.
-  /// Requests specifying an invalid value will be rejected. Requests for
-  /// policies with any conditional role bindings must specify version 3.
-  /// Policies with no conditional role bindings may specify any valid value or
-  /// leave the field unset. The policy in the response might use the policy
-  /// version that you specified, or it might use a lower policy version. For
-  /// example, if you specify version 3, but the policy has no conditional role
-  /// bindings, the response uses version 1. To learn which resources support
-  /// conditions in their IAM policies, see the
-  /// [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [Policy].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<Policy> getIamPolicy(
-    core.String resource, {
-    core.int? options_requestedPolicyVersion,
-    core.String? $fields,
-  }) async {
-    final _queryParams = <core.String, core.List<core.String>>{
-      if (options_requestedPolicyVersion != null)
-        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
-
-    final _response = await _requester.request(
-      _url,
-      'GET',
-      queryParams: _queryParams,
-    );
-    return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
-  }
-}
-
 class ProjectsLocationsOperationsResource {
   final commons.ApiRequester _requester;
 
@@ -5390,6 +5324,9 @@
 /// in the distinguished name).
 class SubjectAltNames {
   /// Contains additional subject alternative name values.
+  ///
+  /// For each custom_san, the `value` field must contain an ASN.1 encoded
+  /// UTF8String.
   core.List<X509Extension>? customSans;
 
   /// Contains only valid, fully-qualified host names.
@@ -5629,7 +5566,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/pubsub/v1.dart b/generated/googleapis/lib/pubsub/v1.dart
index df81213..3ce0aa9 100644
--- a/generated/googleapis/lib/pubsub/v1.dart
+++ b/generated/googleapis/lib/pubsub/v1.dart
@@ -3651,7 +3651,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/realtimebidding/v1.dart b/generated/googleapis/lib/realtimebidding/v1.dart
index 0e60375..ac7c84f 100644
--- a/generated/googleapis/lib/realtimebidding/v1.dart
+++ b/generated/googleapis/lib/realtimebidding/v1.dart
@@ -2730,10 +2730,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// Evidence that the creative's destination URL was not crawlable by Google.
diff --git a/generated/googleapis/lib/recaptchaenterprise/v1.dart b/generated/googleapis/lib/recaptchaenterprise/v1.dart
index 08569f8..819d3e7 100644
--- a/generated/googleapis/lib/recaptchaenterprise/v1.dart
+++ b/generated/googleapis/lib/recaptchaenterprise/v1.dart
@@ -655,17 +655,8 @@
   /// Labels for this request.
   core.List<core.String>? labels;
 
-  /// Recommended action after this request.
-  /// Possible string values are:
-  /// - "RECOMMENDED_ACTION_UNSPECIFIED" : Default unspecified type.
-  /// - "REQUEST_2FA" : The customer should probably request 2FA to their user.
-  /// - "SKIP_2FA" : This is likely an already seen and safe request. 2FA can be
-  /// skipped.
-  core.String? recommendedAction;
-
   GoogleCloudRecaptchaenterpriseV1AccountDefenderAssessment({
     this.labels,
-    this.recommendedAction,
   });
 
   GoogleCloudRecaptchaenterpriseV1AccountDefenderAssessment.fromJson(
@@ -676,14 +667,10 @@
                   .map((value) => value as core.String)
                   .toList()
               : null,
-          recommendedAction: _json.containsKey('recommendedAction')
-              ? _json['recommendedAction'] as core.String
-              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (labels != null) 'labels': labels!,
-        if (recommendedAction != null) 'recommendedAction': recommendedAction!,
       };
 }
 
diff --git a/generated/googleapis/lib/recommender/v1.dart b/generated/googleapis/lib/recommender/v1.dart
index f2f34fb..8577eb3 100644
--- a/generated/googleapis/lib/recommender/v1.dart
+++ b/generated/googleapis/lib/recommender/v1.dart
@@ -2036,6 +2036,8 @@
   ///
   /// Negative cost units indicate cost savings and positive cost units indicate
   /// increase. See google.type.Money documentation for positive/negative units.
+  /// A user's permissions may affect whether the cost is computed using list
+  /// prices or custom contract prices.
   GoogleTypeMoney? cost;
 
   /// Duration for which this cost applies.
diff --git a/generated/googleapis/lib/redis/v1.dart b/generated/googleapis/lib/redis/v1.dart
index 75498c4..a8b0ac5 100644
--- a/generated/googleapis/lib/redis/v1.dart
+++ b/generated/googleapis/lib/redis/v1.dart
@@ -1044,7 +1044,7 @@
       };
 }
 
-/// A Google Cloud Redis instance.
+/// A Memorystore for Redis instance.
 class Instance {
   /// If specified, at least one node will be provisioned in this zone in
   /// addition to the zone specified in location_id.
diff --git a/generated/googleapis/lib/retail/v2.dart b/generated/googleapis/lib/retail/v2.dart
index fb08206..395409e 100644
--- a/generated/googleapis/lib/retail/v2.dart
+++ b/generated/googleapis/lib/retail/v2.dart
@@ -33,6 +33,7 @@
 ///       - [ProjectsLocationsCatalogsPlacementsResource]
 ///       - [ProjectsLocationsCatalogsUserEventsResource]
 ///     - [ProjectsLocationsOperationsResource]
+///   - [ProjectsOperationsResource]
 library retail.v2;
 
 import 'dart:async' as async;
@@ -74,6 +75,8 @@
 
   ProjectsLocationsResource get locations =>
       ProjectsLocationsResource(_requester);
+  ProjectsOperationsResource get operations =>
+      ProjectsOperationsResource(_requester);
 
   ProjectsResource(commons.ApiRequester client) : _requester = client;
 }
@@ -199,10 +202,6 @@
   /// Get which branch is currently default branch set by
   /// CatalogService.SetDefaultBranch method under a specified parent catalog.
   ///
-  /// This feature is only available for users who have Retail Search enabled.
-  /// Please submit a form [here](https://cloud.google.com/contact) to contact
-  /// cloud sales if you are interested in using Retail Search.
-  ///
   /// Request parameters:
   ///
   /// [catalog] - The parent catalog resource name, such as `projects / *
@@ -362,10 +361,7 @@
   /// only return product IDs from branch {newBranch}. * SearchService will only
   /// return product IDs from branch {newBranch} (if branch is not explicitly
   /// set). * UserEventService will only join events with products from branch
-  /// {newBranch}. This feature is only available for users who have Retail
-  /// Search enabled. Please submit a form
-  /// [here](https://cloud.google.com/contact) to contact cloud sales if you are
-  /// interested in using Retail Search.
+  /// {newBranch}.
   ///
   /// [request] - The metadata request object.
   ///
@@ -1603,6 +1599,108 @@
   }
 }
 
+class ProjectsOperationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsOperationsResource(commons.ApiRequester client) : _requester = client;
+
+  /// 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.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource.
+  /// Value must have pattern `^projects/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningOperation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningOperation> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningOperation.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists operations that match the specified filter in the request.
+  ///
+  /// If the server doesn't support this method, it returns `UNIMPLEMENTED`.
+  /// NOTE: the `name` binding allows API services to override the binding to
+  /// use different resource name schemes, such as `users / * /operations`. To
+  /// override the binding, API services can add a binding such as
+  /// `"/v1/{name=users / * }/operations"` to their service configuration. For
+  /// backwards compatibility, the default name includes the operations
+  /// collection id, however overriding users must ensure the name binding is
+  /// the parent resource, without the operations collection id.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation's parent resource.
+  /// Value must have pattern `^projects/\[^/\]+$`.
+  ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [pageSize] - The standard list page size.
+  ///
+  /// [pageToken] - The standard list page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleLongrunningListOperationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleLongrunningListOperationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2/' + core.Uri.encodeFull('$name') + '/operations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleLongrunningListOperationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 /// Message that represents an arbitrary HTTP body.
 ///
 /// It should only be used for payload formats that can't be represented as
@@ -1757,8 +1855,11 @@
   /// `product_merchant_center`: See
   /// [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc).
   /// Supported values for user events imports: * `user_event` (default): One
-  /// JSON UserEvent per line. * `user_event_ga360`: Using
-  /// https://support.google.com/analytics/answer/3437719.
+  /// JSON UserEvent per line. * `user_event_ga360`: The schema is available
+  /// here: https://support.google.com/analytics/answer/3437719. *
+  /// `user_event_ga4`: This feature is in private preview. Please contact the
+  /// support team for importing Google Analytics 4 events. The schema is
+  /// available here: https://support.google.com/analytics/answer/7029846.
   core.String? dataSchema;
 
   /// The BigQuery data set to copy the data from with a length limit of 1,024
@@ -2131,8 +2232,10 @@
 
 /// A custom attribute that is not explicitly modeled in Product.
 class GoogleCloudRetailV2CustomAttribute {
-  /// If true, custom attribute values are indexed, so that it can be filtered,
-  /// faceted or boosted in SearchService.Search.
+  /// This field will only be used when AttributesConfig.attribute_config_level
+  /// of the Catalog is 'PRODUCT_LEVEL_ATTRIBUTE_CONFIG', if true, custom
+  /// attribute values are indexed, so that it can be filtered, faceted or
+  /// boosted in SearchService.Search.
   ///
   /// This field is ignored in a UserEvent. See SearchRequest.filter,
   /// SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
@@ -2145,8 +2248,9 @@
   /// returned.
   core.List<core.double>? numbers;
 
-  /// If true, custom attribute values are searchable by text queries in
-  /// SearchService.Search.
+  /// This field will only be used when AttributesConfig.attribute_config_level
+  /// of the Catalog is 'PRODUCT_LEVEL_ATTRIBUTE_CONFIG', if true, custom
+  /// attribute values are searchable by text queries in SearchService.Search.
   ///
   /// This field is ignored in a UserEvent. Only set if type text is set.
   /// Otherwise, a INVALID_ARGUMENT error is returned.
@@ -2253,6 +2357,8 @@
   /// JSON UserEvent per line. * `user_event_ga360`: Using
   /// https://support.google.com/analytics/answer/3437719. Supported values for
   /// control imports: * 'control' (default): One JSON Control per line.
+  /// Supported values for catalog attribute imports: * 'catalog_attribute'
+  /// (default): One CSV CatalogAttribute per line.
   core.String? dataSchema;
 
   /// Google Cloud Storage URIs to input files.
@@ -2463,8 +2569,10 @@
   /// - "INCREMENTAL" : Inserts new products or updates existing products.
   /// - "FULL" : Calculates diff and replaces the entire product dataset.
   /// Existing products may be deleted if they are not present in the source
-  /// location. Can only be while using BigQuerySource. Add the IAM permission
-  /// "BigQuery Data Viewer" for
+  /// location. Can only be set while using BigQuerySource. And the BigQuery
+  /// dataset must be created in the data location "us (multiple regions in
+  /// United States)", otherwise a PERMISSION_DENIED error is thrown. Add the
+  /// IAM permission "BigQuery Data Viewer" for
   /// cloud-retail-customer-data-access@system.gserviceaccount.com before using
   /// this feature otherwise an error is thrown. This feature is only available
   /// for users who have Retail Search enabled. Please submit a form
@@ -3139,8 +3247,10 @@
 
   /// The id of the collection members when type is Type.COLLECTION.
   ///
-  /// Should not set it for other types. A maximum of 1000 values are allowed.
-  /// Otherwise, an INVALID_ARGUMENT error is return.
+  /// Non-existent product ids are allowed. The type of the members must be
+  /// either Type.PRIMARY or Type.VARIANT otherwise and INVALID_ARGUMENT error
+  /// is thrown. Should not set it for other types. A maximum of 1000 values are
+  /// allowed. Otherwise, an INVALID_ARGUMENT error is return.
   core.List<core.String>? collectionMemberIds;
 
   /// The color of the product.
@@ -3241,7 +3351,7 @@
   /// The material of the product.
   ///
   /// For example, "leather", "wooden". A maximum of 20 values are allowed. Each
-  /// value must be a UTF-8 encoded string with a length limit of 128
+  /// value must be a UTF-8 encoded string with a length limit of 200
   /// characters. Otherwise, an INVALID_ARGUMENT error is returned.
   /// Corresponding properties: Google Merchant Center property
   /// [material](https://support.google.com/merchants/answer/6324410).
@@ -3285,7 +3395,8 @@
 
   /// The promotions applied to the product.
   ///
-  /// A maximum of 10 values are allowed per Product.
+  /// A maximum of 10 values are allowed per Product. Only
+  /// Promotion.promotion_id will be used, other fields will be ignored if set.
   core.List<GoogleCloudRetailV2Promotion>? promotions;
 
   /// The timestamp when the product is published by the retailer for the first
@@ -3785,9 +3896,9 @@
 class GoogleCloudRetailV2Promotion {
   /// ID of the promotion.
   ///
-  /// For example, "free gift". The value value must be a UTF-8 encoded string
-  /// with a length limit of 128 characters, and match the pattern: `a-zA-Z*`.
-  /// For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT
+  /// For example, "free gift". The value must be a UTF-8 encoded string with a
+  /// length limit of 128 characters, and match the pattern: `a-zA-Z*`. For
+  /// example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT
   /// error is returned. Google Merchant Center property
   /// [promotion](https://support.google.com/merchants/answer/7050148).
   core.String? promotionId;
@@ -4164,6 +4275,9 @@
   /// provided the page token. Otherwise, an INVALID_ARGUMENT error is returned.
   core.String? pageToken;
 
+  /// The specification for personalization.
+  GoogleCloudRetailV2SearchRequestPersonalizationSpec? personalizationSpec;
+
   /// Raw search query.
   core.String? query;
 
@@ -4253,6 +4367,7 @@
     this.pageCategories,
     this.pageSize,
     this.pageToken,
+    this.personalizationSpec,
     this.query,
     this.queryExpansionSpec,
     this.searchMode,
@@ -4304,6 +4419,11 @@
           pageToken: _json.containsKey('pageToken')
               ? _json['pageToken'] as core.String
               : null,
+          personalizationSpec: _json.containsKey('personalizationSpec')
+              ? GoogleCloudRetailV2SearchRequestPersonalizationSpec.fromJson(
+                  _json['personalizationSpec']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
           query:
               _json.containsKey('query') ? _json['query'] as core.String : null,
           queryExpansionSpec: _json.containsKey('queryExpansionSpec')
@@ -4340,6 +4460,8 @@
         if (pageCategories != null) 'pageCategories': pageCategories!,
         if (pageSize != null) 'pageSize': pageSize!,
         if (pageToken != null) 'pageToken': pageToken!,
+        if (personalizationSpec != null)
+          'personalizationSpec': personalizationSpec!,
         if (query != null) 'query': query!,
         if (queryExpansionSpec != null)
           'queryExpansionSpec': queryExpansionSpec!,
@@ -4360,8 +4482,16 @@
   core.List<GoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec>?
       conditionBoostSpecs;
 
+  /// Whether to skip boostspec validation.
+  ///
+  /// If this field is set to true, invalid BoostSpec.condition_boost_specs will
+  /// be ignored and valid BoostSpec.condition_boost_specs will still be
+  /// applied.
+  core.bool? skipBoostSpecValidation;
+
   GoogleCloudRetailV2SearchRequestBoostSpec({
     this.conditionBoostSpecs,
+    this.skipBoostSpecValidation,
   });
 
   GoogleCloudRetailV2SearchRequestBoostSpec.fromJson(core.Map _json)
@@ -4374,11 +4504,16 @@
                               value as core.Map<core.String, core.dynamic>))
                   .toList()
               : null,
+          skipBoostSpecValidation: _json.containsKey('skipBoostSpecValidation')
+              ? _json['skipBoostSpecValidation'] as core.bool
+              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (conditionBoostSpecs != null)
           'conditionBoostSpecs': conditionBoostSpecs!,
+        if (skipBoostSpecValidation != null)
+          'skipBoostSpecValidation': skipBoostSpecValidation!,
       };
 }
 
@@ -4670,6 +4805,29 @@
       };
 }
 
+/// The specification for personalization.
+class GoogleCloudRetailV2SearchRequestPersonalizationSpec {
+  /// Defaults to Mode.AUTO.
+  /// Possible string values are:
+  /// - "MODE_UNSPECIFIED" : Default value. Defaults to Mode.AUTO.
+  /// - "AUTO" : Let CRS decide whether to use personalization.
+  /// - "DISABLED" : Disable personalization.
+  core.String? mode;
+
+  GoogleCloudRetailV2SearchRequestPersonalizationSpec({
+    this.mode,
+  });
+
+  GoogleCloudRetailV2SearchRequestPersonalizationSpec.fromJson(core.Map _json)
+      : this(
+          mode: _json.containsKey('mode') ? _json['mode'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (mode != null) 'mode': mode!,
+      };
+}
+
 /// Specification to determine under which conditions query expansion should
 /// occur.
 class GoogleCloudRetailV2SearchRequestQueryExpansionSpec {
@@ -4732,6 +4890,11 @@
   /// Results of facets requested by user.
   core.List<GoogleCloudRetailV2SearchResponseFacet>? facets;
 
+  /// The invalid SearchRequest.BoostSpec.condition_boost_specs that are not
+  /// applied during serving.
+  core.List<GoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec>?
+      invalidConditionBoostSpecs;
+
   /// A token that can be sent as SearchRequest.page_token to retrieve the next
   /// page.
   ///
@@ -4763,6 +4926,7 @@
     this.attributionToken,
     this.correctedQuery,
     this.facets,
+    this.invalidConditionBoostSpecs,
     this.nextPageToken,
     this.queryExpansionInfo,
     this.redirectUri,
@@ -4790,6 +4954,15 @@
                           value as core.Map<core.String, core.dynamic>))
                   .toList()
               : null,
+          invalidConditionBoostSpecs: _json
+                  .containsKey('invalidConditionBoostSpecs')
+              ? (_json['invalidConditionBoostSpecs'] as core.List)
+                  .map((value) =>
+                      GoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec
+                          .fromJson(
+                              value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
           nextPageToken: _json.containsKey('nextPageToken')
               ? _json['nextPageToken'] as core.String
               : null,
@@ -4818,6 +4991,8 @@
         if (attributionToken != null) 'attributionToken': attributionToken!,
         if (correctedQuery != null) 'correctedQuery': correctedQuery!,
         if (facets != null) 'facets': facets!,
+        if (invalidConditionBoostSpecs != null)
+          'invalidConditionBoostSpecs': invalidConditionBoostSpecs!,
         if (nextPageToken != null) 'nextPageToken': nextPageToken!,
         if (queryExpansionInfo != null)
           'queryExpansionInfo': queryExpansionInfo!,
@@ -5734,8 +5909,8 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
diff --git a/generated/googleapis/lib/run/v1.dart b/generated/googleapis/lib/run/v1.dart
index 65e6623..5ddf5d4 100644
--- a/generated/googleapis/lib/run/v1.dart
+++ b/generated/googleapis/lib/run/v1.dart
@@ -15,8 +15,9 @@
 /// Cloud Run Admin API - v1
 ///
 /// Deploy and manage user provided container images that scale automatically
-/// based on incoming requests. The Cloud Run Admin API follows the Knative
-/// Serving API specification.
+/// based on incoming requests. The Cloud Run Admin API v1 follows the Knative
+/// Serving API specification, while v2 is aligned with Google Cloud AIP-based
+/// API standards, as described in https://google.aip.dev/.
 ///
 /// For more information, see <https://cloud.google.com/run/>
 ///
@@ -26,15 +27,19 @@
 ///   - [NamespacesAuthorizeddomainsResource]
 ///   - [NamespacesConfigurationsResource]
 ///   - [NamespacesDomainmappingsResource]
+///   - [NamespacesExecutionsResource]
+///   - [NamespacesJobsResource]
 ///   - [NamespacesRevisionsResource]
 ///   - [NamespacesRoutesResource]
 ///   - [NamespacesServicesResource]
+///   - [NamespacesTasksResource]
 /// - [ProjectsResource]
 ///   - [ProjectsAuthorizeddomainsResource]
 ///   - [ProjectsLocationsResource]
 ///     - [ProjectsLocationsAuthorizeddomainsResource]
 ///     - [ProjectsLocationsConfigurationsResource]
 ///     - [ProjectsLocationsDomainmappingsResource]
+///     - [ProjectsLocationsJobsResource]
 ///     - [ProjectsLocationsRevisionsResource]
 ///     - [ProjectsLocationsRoutesResource]
 ///     - [ProjectsLocationsServicesResource]
@@ -57,7 +62,9 @@
 /// Deploy and manage user provided container images that scale automatically
 /// based on incoming requests.
 ///
-/// The Cloud Run Admin API follows the Knative Serving API specification.
+/// The Cloud Run Admin API v1 follows the Knative Serving API specification,
+/// while v2 is aligned with Google Cloud AIP-based API standards, as described
+/// in https://google.aip.dev/.
 class CloudRunApi {
   /// See, edit, configure, and delete your Google Cloud data and see the email
   /// address for your Google Account.
@@ -85,11 +92,15 @@
       NamespacesConfigurationsResource(_requester);
   NamespacesDomainmappingsResource get domainmappings =>
       NamespacesDomainmappingsResource(_requester);
+  NamespacesExecutionsResource get executions =>
+      NamespacesExecutionsResource(_requester);
+  NamespacesJobsResource get jobs => NamespacesJobsResource(_requester);
   NamespacesRevisionsResource get revisions =>
       NamespacesRevisionsResource(_requester);
   NamespacesRoutesResource get routes => NamespacesRoutesResource(_requester);
   NamespacesServicesResource get services =>
       NamespacesServicesResource(_requester);
+  NamespacesTasksResource get tasks => NamespacesTasksResource(_requester);
 
   NamespacesResource(commons.ApiRequester client) : _requester = client;
 }
@@ -492,6 +503,472 @@
   }
 }
 
+class NamespacesExecutionsResource {
+  final commons.ApiRequester _requester;
+
+  NamespacesExecutionsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Delete an execution.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the execution to delete. Replace
+  /// {namespace_id} with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+/executions/\[^/\]+$`.
+  ///
+  /// [apiVersion] - Optional. Cloud Run currently ignores this parameter.
+  ///
+  /// [kind] - Optional. Cloud Run currently ignores this parameter.
+  ///
+  /// [propagationPolicy] - Optional. Specifies the propagation policy of
+  /// delete. Cloud Run currently ignores this setting, and deletes in the
+  /// background. Please see
+  /// kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ for
+  /// more information.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Status].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Status> delete(
+    core.String name, {
+    core.String? apiVersion,
+    core.String? kind,
+    core.String? propagationPolicy,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (apiVersion != null) 'apiVersion': [apiVersion],
+      if (kind != null) 'kind': [kind],
+      if (propagationPolicy != null) 'propagationPolicy': [propagationPolicy],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Status.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get information about an execution.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the execution to retrieve. Replace
+  /// {namespace_id} with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+/executions/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Execution].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Execution> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Execution.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List executions.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The namespace from which the executions should be
+  /// listed. Replace {namespace_id} with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+$`.
+  ///
+  /// [continue_] - Optional. Optional encoded string to continue paging.
+  ///
+  /// [fieldSelector] - Optional. Allows to filter resources based on a specific
+  /// value for a field name. Send this in a query string format. i.e.
+  /// 'metadata.name%3Dlorem'. Not currently used by Cloud Run.
+  ///
+  /// [includeUninitialized] - Optional. Not currently used by Cloud Run.
+  ///
+  /// [labelSelector] - Optional. Allows to filter resources based on a label.
+  /// Supported operations are =, !=, exists, in, and notIn.
+  ///
+  /// [limit] - Optional. The maximum number of records that should be returned.
+  ///
+  /// [resourceVersion] - Optional. The baseline resource version from which the
+  /// list or watch operation should start. Not currently used by Cloud Run.
+  ///
+  /// [watch] - Optional. Flag that indicates that the client expects to watch
+  /// this resource as well. Not currently used by Cloud Run.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListExecutionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListExecutionsResponse> list(
+    core.String parent, {
+    core.String? continue_,
+    core.String? fieldSelector,
+    core.bool? includeUninitialized,
+    core.String? labelSelector,
+    core.int? limit,
+    core.String? resourceVersion,
+    core.bool? watch,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (continue_ != null) 'continue': [continue_],
+      if (fieldSelector != null) 'fieldSelector': [fieldSelector],
+      if (includeUninitialized != null)
+        'includeUninitialized': ['${includeUninitialized}'],
+      if (labelSelector != null) 'labelSelector': [labelSelector],
+      if (limit != null) 'limit': ['${limit}'],
+      if (resourceVersion != null) 'resourceVersion': [resourceVersion],
+      if (watch != null) 'watch': ['${watch}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' +
+        core.Uri.encodeFull('$parent') +
+        '/executions';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListExecutionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class NamespacesJobsResource {
+  final commons.ApiRequester _requester;
+
+  NamespacesJobsResource(commons.ApiRequester client) : _requester = client;
+
+  /// Create a job.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The namespace in which the job should be created.
+  /// Replace {namespace_id} with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Job].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Job> create(
+    Job request,
+    core.String parent, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' +
+        core.Uri.encodeFull('$parent') +
+        '/jobs';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Job.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Delete a job.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the job to delete. Replace {namespace_id}
+  /// with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+/jobs/\[^/\]+$`.
+  ///
+  /// [apiVersion] - Optional. Cloud Run currently ignores this parameter.
+  ///
+  /// [kind] - Optional. Cloud Run currently ignores this parameter.
+  ///
+  /// [propagationPolicy] - Optional. Specifies the propagation policy of
+  /// delete. Cloud Run currently ignores this setting, and deletes in the
+  /// background. Please see
+  /// kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ for
+  /// more information.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Status].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Status> delete(
+    core.String name, {
+    core.String? apiVersion,
+    core.String? kind,
+    core.String? propagationPolicy,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (apiVersion != null) 'apiVersion': [apiVersion],
+      if (kind != null) 'kind': [kind],
+      if (propagationPolicy != null) 'propagationPolicy': [propagationPolicy],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Status.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Get information about a job.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the job to retrieve. Replace {namespace_id}
+  /// with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+/jobs/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Job].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Job> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Job.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List jobs.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The namespace from which the jobs should be listed.
+  /// Replace {namespace_id} with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+$`.
+  ///
+  /// [continue_] - Optional. Optional encoded string to continue paging.
+  ///
+  /// [fieldSelector] - Optional. Allows to filter resources based on a specific
+  /// value for a field name. Send this in a query string format. i.e.
+  /// 'metadata.name%3Dlorem'. Not currently used by Cloud Run.
+  ///
+  /// [includeUninitialized] - Optional. Not currently used by Cloud Run.
+  ///
+  /// [labelSelector] - Optional. Allows to filter resources based on a label.
+  /// Supported operations are =, !=, exists, in, and notIn.
+  ///
+  /// [limit] - Optional. The maximum number of records that should be returned.
+  ///
+  /// [resourceVersion] - Optional. The baseline resource version from which the
+  /// list or watch operation should start. Not currently used by Cloud Run.
+  ///
+  /// [watch] - Optional. Flag that indicates that the client expects to watch
+  /// this resource as well. Not currently used by Cloud Run.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListJobsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListJobsResponse> list(
+    core.String parent, {
+    core.String? continue_,
+    core.String? fieldSelector,
+    core.bool? includeUninitialized,
+    core.String? labelSelector,
+    core.int? limit,
+    core.String? resourceVersion,
+    core.bool? watch,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (continue_ != null) 'continue': [continue_],
+      if (fieldSelector != null) 'fieldSelector': [fieldSelector],
+      if (includeUninitialized != null)
+        'includeUninitialized': ['${includeUninitialized}'],
+      if (labelSelector != null) 'labelSelector': [labelSelector],
+      if (limit != null) 'limit': ['${limit}'],
+      if (resourceVersion != null) 'resourceVersion': [resourceVersion],
+      if (watch != null) 'watch': ['${watch}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' +
+        core.Uri.encodeFull('$parent') +
+        '/jobs';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListJobsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Replace a job.
+  ///
+  /// Only the spec and metadata labels and annotations are modifiable. After
+  /// the Replace request, Cloud Run will work to make the 'status' match the
+  /// requested 'spec'. May provide metadata.resourceVersion to enforce update
+  /// from last read for optimistic concurrency control.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the service being replaced. Replace
+  /// {namespace_id} with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+/jobs/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Job].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Job> replaceJob(
+    Job request,
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PUT',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Job.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Trigger creation of a new execution of this job.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the job to run. Replace {namespace_id} with
+  /// the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+/jobs/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Execution].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Execution> run(
+    RunJobRequest request,
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'apis/run.googleapis.com/v1/' + core.Uri.encodeFull('$name') + ':run';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Execution.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 class NamespacesRevisionsResource {
   final commons.ApiRequester _requester;
 
@@ -1058,6 +1535,121 @@
   }
 }
 
+class NamespacesTasksResource {
+  final commons.ApiRequester _requester;
+
+  NamespacesTasksResource(commons.ApiRequester client) : _requester = client;
+
+  /// Get information about a task.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the task to retrieve. Replace
+  /// {namespace_id} with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+/tasks/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Task].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Task> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Task.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// List tasks.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The namespace from which the tasks should be listed.
+  /// Replace {namespace_id} with the project ID or number.
+  /// Value must have pattern `^namespaces/\[^/\]+$`.
+  ///
+  /// [continue_] - Optional. Optional encoded string to continue paging.
+  ///
+  /// [fieldSelector] - Optional. Allows to filter resources based on a specific
+  /// value for a field name. Send this in a query string format. i.e.
+  /// 'metadata.name%3Dlorem'. Not currently used by Cloud Run.
+  ///
+  /// [includeUninitialized] - Optional. Not currently used by Cloud Run.
+  ///
+  /// [labelSelector] - Optional. Allows to filter resources based on a label.
+  /// Supported operations are =, !=, exists, in, and notIn.
+  ///
+  /// [limit] - Optional. The maximum number of records that should be returned.
+  ///
+  /// [resourceVersion] - Optional. The baseline resource version from which the
+  /// list or watch operation should start. Not currently used by Cloud Run.
+  ///
+  /// [watch] - Optional. Flag that indicates that the client expects to watch
+  /// this resource as well. Not currently used by Cloud Run.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListTasksResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListTasksResponse> list(
+    core.String parent, {
+    core.String? continue_,
+    core.String? fieldSelector,
+    core.bool? includeUninitialized,
+    core.String? labelSelector,
+    core.int? limit,
+    core.String? resourceVersion,
+    core.bool? watch,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (continue_ != null) 'continue': [continue_],
+      if (fieldSelector != null) 'fieldSelector': [fieldSelector],
+      if (includeUninitialized != null)
+        'includeUninitialized': ['${includeUninitialized}'],
+      if (labelSelector != null) 'labelSelector': [labelSelector],
+      if (limit != null) 'limit': ['${limit}'],
+      if (resourceVersion != null) 'resourceVersion': [resourceVersion],
+      if (watch != null) 'watch': ['${watch}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'apis/run.googleapis.com/v1/' +
+        core.Uri.encodeFull('$parent') +
+        '/tasks';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListTasksResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 class ProjectsResource {
   final commons.ApiRequester _requester;
 
@@ -1130,6 +1722,8 @@
       ProjectsLocationsConfigurationsResource(_requester);
   ProjectsLocationsDomainmappingsResource get domainmappings =>
       ProjectsLocationsDomainmappingsResource(_requester);
+  ProjectsLocationsJobsResource get jobs =>
+      ProjectsLocationsJobsResource(_requester);
   ProjectsLocationsRevisionsResource get revisions =>
       ProjectsLocationsRevisionsResource(_requester);
   ProjectsLocationsRoutesResource get routes =>
@@ -1585,6 +2179,160 @@
   }
 }
 
+class ProjectsLocationsJobsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsJobsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Get the IAM Access Control policy currently in effect for the given job.
+  ///
+  /// This result does not include any inherited policies.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/jobs/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy. Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected. Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset. The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1. To learn which resources support
+  /// conditions in their IAM policies, see the
+  /// [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the IAM Access control policy for the specified job.
+  ///
+  /// Overwrites any existing policy.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/jobs/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> setIamPolicy(
+    SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified job.
+  ///
+  /// There are no permissions required for making this API call.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/jobs/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TestIamPermissionsResponse> testIamPermissions(
+    TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 class ProjectsLocationsRevisionsResource {
   final commons.ApiRequester _requester;
 
@@ -3078,6 +3826,36 @@
       };
 }
 
+/// ContainerStatus holds the information of container name and image digest
+/// value.
+class ContainerStatus {
+  /// ImageDigest holds the resolved digest for the image specified, regardless
+  /// of whether a tag or digest was originally specified in the Container
+  /// object.
+  core.String? imageDigest;
+
+  /// The name of the container, if specified.
+  core.String? name;
+
+  ContainerStatus({
+    this.imageDigest,
+    this.name,
+  });
+
+  ContainerStatus.fromJson(core.Map _json)
+      : this(
+          imageDigest: _json.containsKey('imageDigest')
+              ? _json['imageDigest'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (imageDigest != null) 'imageDigest': imageDigest!,
+        if (name != null) 'name': name!,
+      };
+}
+
 /// Resource to hold the state and status of a user's domain mapping.
 ///
 /// NOTE: This resource is currently in Beta.
@@ -3403,6 +4181,351 @@
       };
 }
 
+/// Execution represents the configuration of a single execution.
+///
+/// A execution an immutable resource that references a container image which is
+/// run to completion.
+class Execution {
+  /// APIVersion defines the versioned schema of this representation of an
+  /// object.
+  ///
+  /// Servers should convert recognized schemas to the latest internal value,
+  /// and may reject unrecognized values. More info:
+  /// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+  /// +optional
+  ///
+  /// Optional.
+  core.String? apiVersion;
+
+  /// Kind is a string value representing the REST resource this object
+  /// represents.
+  ///
+  /// Servers may infer this from the endpoint the client submits requests to.
+  /// Cannot be updated. In CamelCase. More info:
+  /// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+  /// +optional
+  ///
+  /// Optional.
+  core.String? kind;
+
+  /// Standard object's metadata.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+  /// +optional
+  ///
+  /// Optional.
+  ObjectMeta? metadata;
+
+  /// Specification of the desired behavior of an execution.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+  /// +optional
+  ///
+  /// Optional.
+  ExecutionSpec? spec;
+
+  /// Current status of an execution.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+  /// +optional
+  ///
+  /// Output only.
+  ExecutionStatus? status;
+
+  Execution({
+    this.apiVersion,
+    this.kind,
+    this.metadata,
+    this.spec,
+    this.status,
+  });
+
+  Execution.fromJson(core.Map _json)
+      : this(
+          apiVersion: _json.containsKey('apiVersion')
+              ? _json['apiVersion'] as core.String
+              : null,
+          kind: _json.containsKey('kind') ? _json['kind'] as core.String : null,
+          metadata: _json.containsKey('metadata')
+              ? ObjectMeta.fromJson(
+                  _json['metadata'] as core.Map<core.String, core.dynamic>)
+              : null,
+          spec: _json.containsKey('spec')
+              ? ExecutionSpec.fromJson(
+                  _json['spec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          status: _json.containsKey('status')
+              ? ExecutionStatus.fromJson(
+                  _json['status'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (apiVersion != null) 'apiVersion': apiVersion!,
+        if (kind != null) 'kind': kind!,
+        if (metadata != null) 'metadata': metadata!,
+        if (spec != null) 'spec': spec!,
+        if (status != null) 'status': status!,
+      };
+}
+
+/// Reference to an Execution.
+///
+/// Use /Executions.GetExecution with the given name to get full execution
+/// including the latest status.
+class ExecutionReference {
+  /// Creation timestamp of the execution.
+  ///
+  /// Optional.
+  core.String? creationTimestamp;
+
+  /// Name of the execution.
+  ///
+  /// Optional.
+  core.String? name;
+
+  ExecutionReference({
+    this.creationTimestamp,
+    this.name,
+  });
+
+  ExecutionReference.fromJson(core.Map _json)
+      : this(
+          creationTimestamp: _json.containsKey('creationTimestamp')
+              ? _json['creationTimestamp'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (creationTimestamp != null) 'creationTimestamp': creationTimestamp!,
+        if (name != null) 'name': name!,
+      };
+}
+
+/// ExecutionSpec describes how the execution will look.
+class ExecutionSpec {
+  /// Specifies the maximum desired number of tasks the execution should run at
+  /// any given time.
+  ///
+  /// Must be \<= task_count. The actual number of tasks running in steady state
+  /// will be less than this number when ((.spec.task_count -
+  /// .status.successful) \< .spec.parallelism), i.e. when the work left to do
+  /// is less than max parallelism. More info:
+  /// https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
+  /// +optional
+  ///
+  /// Optional.
+  core.int? parallelism;
+
+  /// Specifies the desired number of tasks the execution should run.
+  ///
+  /// Setting to 1 means that parallelism is limited to 1 and the success of
+  /// that task signals the success of the execution. More info:
+  /// https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
+  /// +optional
+  ///
+  /// Optional.
+  core.int? taskCount;
+
+  /// Describes the task(s) that will be created when executing an execution.
+  ///
+  /// Optional.
+  TaskTemplateSpec? template;
+
+  ExecutionSpec({
+    this.parallelism,
+    this.taskCount,
+    this.template,
+  });
+
+  ExecutionSpec.fromJson(core.Map _json)
+      : this(
+          parallelism: _json.containsKey('parallelism')
+              ? _json['parallelism'] as core.int
+              : null,
+          taskCount: _json.containsKey('taskCount')
+              ? _json['taskCount'] as core.int
+              : null,
+          template: _json.containsKey('template')
+              ? TaskTemplateSpec.fromJson(
+                  _json['template'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (parallelism != null) 'parallelism': parallelism!,
+        if (taskCount != null) 'taskCount': taskCount!,
+        if (template != null) 'template': template!,
+      };
+}
+
+/// ExecutionStatus represents the current state of a Execution.
+class ExecutionStatus {
+  /// Represents time when the execution was completed.
+  ///
+  /// It is not guaranteed to be set in happens-before order across separate
+  /// operations. It is represented in RFC3339 form and is in UTC. +optional
+  ///
+  /// Optional.
+  core.String? completionTime;
+
+  /// The latest available observations of an execution's current state.
+  ///
+  /// More info:
+  /// https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
+  /// +optional
+  ///
+  /// Optional.
+  core.List<GoogleCloudRunV1Condition>? conditions;
+
+  /// The number of tasks which reached phase Failed.
+  ///
+  /// +optional
+  ///
+  /// Optional.
+  core.int? failedCount;
+
+  /// URI where logs for this execution can be found in Cloud Console.
+  ///
+  /// Optional.
+  core.String? logUri;
+
+  /// The 'generation' of the execution that was last processed by the
+  /// controller.
+  ///
+  /// Optional.
+  core.int? observedGeneration;
+
+  /// The number of actively running tasks.
+  ///
+  /// +optional
+  ///
+  /// Optional.
+  core.int? runningCount;
+
+  /// Represents time when the execution started to run.
+  ///
+  /// It is not guaranteed to be set in happens-before order across separate
+  /// operations. It is represented in RFC3339 form and is in UTC. +optional
+  ///
+  /// Optional.
+  core.String? startTime;
+
+  /// The number of tasks which reached phase Succeeded.
+  ///
+  /// +optional
+  ///
+  /// Optional.
+  core.int? succeededCount;
+
+  ExecutionStatus({
+    this.completionTime,
+    this.conditions,
+    this.failedCount,
+    this.logUri,
+    this.observedGeneration,
+    this.runningCount,
+    this.startTime,
+    this.succeededCount,
+  });
+
+  ExecutionStatus.fromJson(core.Map _json)
+      : this(
+          completionTime: _json.containsKey('completionTime')
+              ? _json['completionTime'] as core.String
+              : null,
+          conditions: _json.containsKey('conditions')
+              ? (_json['conditions'] as core.List)
+                  .map((value) => GoogleCloudRunV1Condition.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          failedCount: _json.containsKey('failedCount')
+              ? _json['failedCount'] as core.int
+              : null,
+          logUri: _json.containsKey('logUri')
+              ? _json['logUri'] as core.String
+              : null,
+          observedGeneration: _json.containsKey('observedGeneration')
+              ? _json['observedGeneration'] as core.int
+              : null,
+          runningCount: _json.containsKey('runningCount')
+              ? _json['runningCount'] as core.int
+              : null,
+          startTime: _json.containsKey('startTime')
+              ? _json['startTime'] as core.String
+              : null,
+          succeededCount: _json.containsKey('succeededCount')
+              ? _json['succeededCount'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (completionTime != null) 'completionTime': completionTime!,
+        if (conditions != null) 'conditions': conditions!,
+        if (failedCount != null) 'failedCount': failedCount!,
+        if (logUri != null) 'logUri': logUri!,
+        if (observedGeneration != null)
+          'observedGeneration': observedGeneration!,
+        if (runningCount != null) 'runningCount': runningCount!,
+        if (startTime != null) 'startTime': startTime!,
+        if (succeededCount != null) 'succeededCount': succeededCount!,
+      };
+}
+
+/// ExecutionTemplateSpec describes the metadata and spec an Execution should
+/// have when created from a job.
+///
+/// Based on:
+/// https://github.com/kubernetes/api/blob/e771f807/core/v1/types.go#L3179-L3190
+class ExecutionTemplateSpec {
+  /// Optional metadata for this Execution, including labels and annotations.
+  ///
+  /// The following annotation keys set properties of the created execution: *
+  /// `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections.
+  /// Multiple values should be comma separated. *
+  /// `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access
+  /// connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress.
+  /// Supported values are `all-traffic`, `all` (deprecated), and
+  /// `private-ranges-only`. `all-traffic` and `all` provide the same
+  /// functionality. `all` is deprecated but will continue to be supported.
+  /// Prefer `all-traffic`.
+  ///
+  /// Optional.
+  ObjectMeta? metadata;
+
+  /// ExecutionSpec holds the desired configuration for executions of this job.
+  ///
+  /// Required.
+  ExecutionSpec? spec;
+
+  ExecutionTemplateSpec({
+    this.metadata,
+    this.spec,
+  });
+
+  ExecutionTemplateSpec.fromJson(core.Map _json)
+      : this(
+          metadata: _json.containsKey('metadata')
+              ? ObjectMeta.fromJson(
+                  _json['metadata'] as core.Map<core.String, core.dynamic>)
+              : null,
+          spec: _json.containsKey('spec')
+              ? ExecutionSpec.fromJson(
+                  _json['spec'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (metadata != null) 'metadata': metadata!,
+        if (spec != null) 'spec': spec!,
+      };
+}
+
 /// Represents a textual expression in the Common Expression Language (CEL)
 /// syntax.
 ///
@@ -3496,6 +4619,15 @@
       };
 }
 
+/// 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).
+typedef GoogleRpcStatus = $Status;
+
 /// Not supported by Cloud Run HTTPGetAction describes an action based on HTTP
 /// Get requests.
 class HTTPGetAction {
@@ -3574,6 +4706,191 @@
       };
 }
 
+/// Job represents the configuration of a single job.
+///
+/// A job an immutable resource that references a container image which is run
+/// to completion.
+class Job {
+  /// APIVersion defines the versioned schema of this representation of an
+  /// object.
+  ///
+  /// Servers should convert recognized schemas to the latest internal value,
+  /// and may reject unrecognized values. More info:
+  /// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+  /// +optional
+  ///
+  /// Optional.
+  core.String? apiVersion;
+
+  /// Kind is a string value representing the REST resource this object
+  /// represents.
+  ///
+  /// Servers may infer this from the endpoint the client submits requests to.
+  /// Cannot be updated. In CamelCase. More info:
+  /// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+  /// +optional
+  ///
+  /// Optional.
+  core.String? kind;
+
+  /// Standard object's metadata.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+  /// +optional
+  ///
+  /// Optional.
+  ObjectMeta? metadata;
+
+  /// Specification of the desired behavior of a job.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+  /// +optional
+  ///
+  /// Optional.
+  JobSpec? spec;
+
+  /// Current status of a job.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+  /// +optional
+  ///
+  /// Output only.
+  JobStatus? status;
+
+  Job({
+    this.apiVersion,
+    this.kind,
+    this.metadata,
+    this.spec,
+    this.status,
+  });
+
+  Job.fromJson(core.Map _json)
+      : this(
+          apiVersion: _json.containsKey('apiVersion')
+              ? _json['apiVersion'] as core.String
+              : null,
+          kind: _json.containsKey('kind') ? _json['kind'] as core.String : null,
+          metadata: _json.containsKey('metadata')
+              ? ObjectMeta.fromJson(
+                  _json['metadata'] as core.Map<core.String, core.dynamic>)
+              : null,
+          spec: _json.containsKey('spec')
+              ? JobSpec.fromJson(
+                  _json['spec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          status: _json.containsKey('status')
+              ? JobStatus.fromJson(
+                  _json['status'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (apiVersion != null) 'apiVersion': apiVersion!,
+        if (kind != null) 'kind': kind!,
+        if (metadata != null) 'metadata': metadata!,
+        if (spec != null) 'spec': spec!,
+        if (status != null) 'status': status!,
+      };
+}
+
+/// JobSpec describes how the job will look.
+class JobSpec {
+  /// Describes the execution that will be created when running a job.
+  ///
+  /// Optional.
+  ExecutionTemplateSpec? template;
+
+  JobSpec({
+    this.template,
+  });
+
+  JobSpec.fromJson(core.Map _json)
+      : this(
+          template: _json.containsKey('template')
+              ? ExecutionTemplateSpec.fromJson(
+                  _json['template'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (template != null) 'template': template!,
+      };
+}
+
+/// JobStatus represents the current state of a Job.
+class JobStatus {
+  /// The latest available observations of a job's current state.
+  ///
+  /// More info:
+  /// https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
+  core.List<GoogleCloudRunV1Condition>? conditions;
+
+  /// Status information for each of the specified containers.
+  ///
+  /// The status includes the resolved digest for specified images, which occurs
+  /// during creation of the job.
+  core.List<ContainerStatus>? containerStatuses;
+
+  /// Number of executions created for this job.
+  core.int? executionCount;
+
+  /// A pointer to the most recently created execution for this job.
+  ///
+  /// This is set regardless of the eventual state of the execution.
+  ExecutionReference? latestCreatedExecution;
+
+  /// The 'generation' of the job that was last processed by the controller.
+  core.int? observedGeneration;
+
+  JobStatus({
+    this.conditions,
+    this.containerStatuses,
+    this.executionCount,
+    this.latestCreatedExecution,
+    this.observedGeneration,
+  });
+
+  JobStatus.fromJson(core.Map _json)
+      : this(
+          conditions: _json.containsKey('conditions')
+              ? (_json['conditions'] as core.List)
+                  .map((value) => GoogleCloudRunV1Condition.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          containerStatuses: _json.containsKey('containerStatuses')
+              ? (_json['containerStatuses'] as core.List)
+                  .map((value) => ContainerStatus.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          executionCount: _json.containsKey('executionCount')
+              ? _json['executionCount'] as core.int
+              : null,
+          latestCreatedExecution: _json.containsKey('latestCreatedExecution')
+              ? ExecutionReference.fromJson(_json['latestCreatedExecution']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          observedGeneration: _json.containsKey('observedGeneration')
+              ? _json['observedGeneration'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (conditions != null) 'conditions': conditions!,
+        if (containerStatuses != null) 'containerStatuses': containerStatuses!,
+        if (executionCount != null) 'executionCount': executionCount!,
+        if (latestCreatedExecution != null)
+          'latestCreatedExecution': latestCreatedExecution!,
+        if (observedGeneration != null)
+          'observedGeneration': observedGeneration!,
+      };
+}
+
 /// Maps a string key to a path within a volume.
 class KeyToPath {
   /// The Cloud Secret Manager secret version.
@@ -3768,6 +5085,120 @@
       };
 }
 
+/// ListExecutionsResponse is a list of Executions resources.
+class ListExecutionsResponse {
+  /// The API version for this call such as "run.googleapis.com/v1".
+  core.String? apiVersion;
+
+  /// List of Executions.
+  core.List<Execution>? items;
+
+  /// The kind of this resource, in this case "ExecutionsList".
+  core.String? kind;
+
+  /// Metadata associated with this executions list.
+  ListMeta? metadata;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListExecutionsResponse({
+    this.apiVersion,
+    this.items,
+    this.kind,
+    this.metadata,
+    this.unreachable,
+  });
+
+  ListExecutionsResponse.fromJson(core.Map _json)
+      : this(
+          apiVersion: _json.containsKey('apiVersion')
+              ? _json['apiVersion'] as core.String
+              : null,
+          items: _json.containsKey('items')
+              ? (_json['items'] as core.List)
+                  .map((value) => Execution.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          kind: _json.containsKey('kind') ? _json['kind'] as core.String : null,
+          metadata: _json.containsKey('metadata')
+              ? ListMeta.fromJson(
+                  _json['metadata'] as core.Map<core.String, core.dynamic>)
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (apiVersion != null) 'apiVersion': apiVersion!,
+        if (items != null) 'items': items!,
+        if (kind != null) 'kind': kind!,
+        if (metadata != null) 'metadata': metadata!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// ListJobsResponse is a list of Jobs resources.
+class ListJobsResponse {
+  /// The API version for this call such as "run.googleapis.com/v1".
+  core.String? apiVersion;
+
+  /// List of Jobs.
+  core.List<Job>? items;
+
+  /// The kind of this resource, in this case "JobsList".
+  core.String? kind;
+
+  /// Metadata associated with this jobs list.
+  ListMeta? metadata;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListJobsResponse({
+    this.apiVersion,
+    this.items,
+    this.kind,
+    this.metadata,
+    this.unreachable,
+  });
+
+  ListJobsResponse.fromJson(core.Map _json)
+      : this(
+          apiVersion: _json.containsKey('apiVersion')
+              ? _json['apiVersion'] as core.String
+              : null,
+          items: _json.containsKey('items')
+              ? (_json['items'] as core.List)
+                  .map((value) => Job.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          kind: _json.containsKey('kind') ? _json['kind'] as core.String : null,
+          metadata: _json.containsKey('metadata')
+              ? ListMeta.fromJson(
+                  _json['metadata'] as core.Map<core.String, core.dynamic>)
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (apiVersion != null) 'apiVersion': apiVersion!,
+        if (items != null) 'items': items!,
+        if (kind != null) 'kind': kind!,
+        if (metadata != null) 'metadata': metadata!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
 /// The response message for Locations.ListLocations.
 class ListLocationsResponse {
   /// A list of locations that matches the specified filter in the request.
@@ -4027,6 +5458,63 @@
       };
 }
 
+/// ListTasksResponse is a list of Tasks resources.
+class ListTasksResponse {
+  /// The API version for this call such as "run.googleapis.com/v1".
+  core.String? apiVersion;
+
+  /// List of Tasks.
+  core.List<Task>? items;
+
+  /// The kind of this resource, in this case "TasksList".
+  core.String? kind;
+
+  /// Metadata associated with this tasks list.
+  ListMeta? metadata;
+
+  /// Locations that could not be reached.
+  core.List<core.String>? unreachable;
+
+  ListTasksResponse({
+    this.apiVersion,
+    this.items,
+    this.kind,
+    this.metadata,
+    this.unreachable,
+  });
+
+  ListTasksResponse.fromJson(core.Map _json)
+      : this(
+          apiVersion: _json.containsKey('apiVersion')
+              ? _json['apiVersion'] as core.String
+              : null,
+          items: _json.containsKey('items')
+              ? (_json['items'] as core.List)
+                  .map((value) => Task.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          kind: _json.containsKey('kind') ? _json['kind'] as core.String : null,
+          metadata: _json.containsKey('metadata')
+              ? ListMeta.fromJson(
+                  _json['metadata'] as core.Map<core.String, core.dynamic>)
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (apiVersion != null) 'apiVersion': apiVersion!,
+        if (items != null) 'items': items!,
+        if (kind != null) 'kind': kind!,
+        if (metadata != null) 'metadata': metadata!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
 /// Not supported by Cloud Run LocalObjectReference contains enough information
 /// to let you locate the referenced object inside the same namespace.
 class LocalObjectReference {
@@ -4061,7 +5549,7 @@
   /// metadata.
   ///
   /// They are not queryable and should be preserved when modifying objects.
-  /// More info: http://kubernetes.io/docs/user-guide/annotations
+  /// More info: https://kubernetes.io/docs/user-guide/annotations
   core.Map<core.String, core.String>? annotations;
 
   /// (Optional) Not supported by Cloud Run The name of the cluster which the
@@ -4148,7 +5636,7 @@
   /// categorize (scope and select) objects.
   ///
   /// May match selectors of replication controllers and routes. More info:
-  /// http://kubernetes.io/docs/user-guide/labels
+  /// https://kubernetes.io/docs/user-guide/labels
   core.Map<core.String, core.String>? labels;
 
   /// Name must be unique within a namespace, within a Cloud Run region.
@@ -4157,7 +5645,7 @@
   /// client to request the generation of an appropriate name automatically.
   /// Name is primarily intended for creation idempotence and configuration
   /// definition. Cannot be updated. More info:
-  /// http://kubernetes.io/docs/user-guide/identifiers#names +optional
+  /// https://kubernetes.io/docs/user-guide/identifiers#names +optional
   core.String? name;
 
   /// Namespace defines the space within each name must be unique, within a
@@ -4199,7 +5687,7 @@
   /// It is typically generated by the server on successful creation of a
   /// resource and is not allowed to change on PUT operations. Populated by the
   /// system. Read-only. More info:
-  /// http://kubernetes.io/docs/user-guide/identifiers#uids
+  /// https://kubernetes.io/docs/user-guide/identifiers#uids
   core.String? uid;
 
   ObjectMeta({
@@ -4333,12 +5821,12 @@
 
   /// Name of the referent.
   ///
-  /// More info: http://kubernetes.io/docs/user-guide/identifiers#names
+  /// More info: https://kubernetes.io/docs/user-guide/identifiers#names
   core.String? name;
 
   /// UID of the referent.
   ///
-  /// More info: http://kubernetes.io/docs/user-guide/identifiers#uids
+  /// More info: https://kubernetes.io/docs/user-guide/identifiers#uids
   core.String? uid;
 
   OwnerReference({
@@ -5167,6 +6655,9 @@
       };
 }
 
+/// Request message for creating a new execution of a job.
+typedef RunJobRequest = $Empty;
+
 /// Not supported by Cloud Run SecretEnvSource selects a Secret to populate the
 /// environment variables with.
 ///
@@ -5815,7 +7306,7 @@
   /// UID of the resource.
   ///
   /// (when there is a single resource which can be described). More info:
-  /// http://kubernetes.io/docs/user-guide/identifiers#uids +optional
+  /// https://kubernetes.io/docs/user-guide/identifiers#uids +optional
   core.String? uid;
 
   StatusDetails({
@@ -5885,8 +7376,359 @@
       };
 }
 
+/// Task represents a single run of a container to completion.
+class Task {
+  /// APIVersion defines the versioned schema of this representation of an
+  /// object.
+  ///
+  /// Servers should convert recognized schemas to the latest internal value,
+  /// and may reject unrecognized values. More info:
+  /// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+  /// +optional
+  ///
+  /// Optional.
+  core.String? apiVersion;
+
+  /// Kind is a string value representing the REST resource this object
+  /// represents.
+  ///
+  /// Servers may infer this from the endpoint the client submits requests to.
+  /// Cannot be updated. In CamelCase. More info:
+  /// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+  /// +optional
+  ///
+  /// Optional.
+  core.String? kind;
+
+  /// Standard object's metadata.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+  /// +optional
+  ///
+  /// Optional.
+  ObjectMeta? metadata;
+
+  /// Specification of the desired behavior of an execution.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+  /// +optional
+  ///
+  /// Optional.
+  TaskSpec? spec;
+
+  /// Current status of an execution.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
+  /// +optional
+  ///
+  /// Output only.
+  TaskStatus? status;
+
+  Task({
+    this.apiVersion,
+    this.kind,
+    this.metadata,
+    this.spec,
+    this.status,
+  });
+
+  Task.fromJson(core.Map _json)
+      : this(
+          apiVersion: _json.containsKey('apiVersion')
+              ? _json['apiVersion'] as core.String
+              : null,
+          kind: _json.containsKey('kind') ? _json['kind'] as core.String : null,
+          metadata: _json.containsKey('metadata')
+              ? ObjectMeta.fromJson(
+                  _json['metadata'] as core.Map<core.String, core.dynamic>)
+              : null,
+          spec: _json.containsKey('spec')
+              ? TaskSpec.fromJson(
+                  _json['spec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          status: _json.containsKey('status')
+              ? TaskStatus.fromJson(
+                  _json['status'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (apiVersion != null) 'apiVersion': apiVersion!,
+        if (kind != null) 'kind': kind!,
+        if (metadata != null) 'metadata': metadata!,
+        if (spec != null) 'spec': spec!,
+        if (status != null) 'status': status!,
+      };
+}
+
+/// Result of a task attempt.
+class TaskAttemptResult {
+  /// The exit code of this attempt.
+  ///
+  /// This may be unset if the container was unable to exit cleanly with a code
+  /// due to some other failure. See status field for possible failure details.
+  ///
+  /// Optional.
+  core.int? exitCode;
+
+  /// The status of this attempt.
+  ///
+  /// If the status code is OK, then the attempt succeeded.
+  ///
+  /// Optional.
+  GoogleRpcStatus? status;
+
+  TaskAttemptResult({
+    this.exitCode,
+    this.status,
+  });
+
+  TaskAttemptResult.fromJson(core.Map _json)
+      : this(
+          exitCode: _json.containsKey('exitCode')
+              ? _json['exitCode'] as core.int
+              : null,
+          status: _json.containsKey('status')
+              ? GoogleRpcStatus.fromJson(
+                  _json['status'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (exitCode != null) 'exitCode': exitCode!,
+        if (status != null) 'status': status!,
+      };
+}
+
+/// TaskSpec is a description of a task.
+class TaskSpec {
+  /// List of containers belonging to the task.
+  ///
+  /// We disallow a number of fields on this Container. Only a single container
+  /// may be provided.
+  ///
+  /// Optional.
+  core.List<Container>? containers;
+
+  /// Number of retries allowed per task, before marking this job failed.
+  ///
+  /// Optional.
+  core.int? maxRetries;
+
+  /// Email address of the IAM service account associated with the task of a job
+  /// execution.
+  ///
+  /// The service account represents the identity of the running task, and
+  /// determines what permissions the task has. If not provided, the task will
+  /// use the project's default service account. +optional
+  ///
+  /// Optional.
+  core.String? serviceAccountName;
+
+  /// Optional duration in seconds the task may be active before the system will
+  /// actively try to mark it failed and kill associated containers.
+  ///
+  /// This applies per attempt of a task, meaning each retry can run for the
+  /// full timeout. +optional
+  ///
+  /// Optional.
+  core.String? timeoutSeconds;
+
+  /// List of volumes that can be mounted by containers belonging to the task.
+  ///
+  /// More info: https://kubernetes.io/docs/concepts/storage/volumes +optional
+  ///
+  /// Optional.
+  core.List<Volume>? volumes;
+
+  TaskSpec({
+    this.containers,
+    this.maxRetries,
+    this.serviceAccountName,
+    this.timeoutSeconds,
+    this.volumes,
+  });
+
+  TaskSpec.fromJson(core.Map _json)
+      : this(
+          containers: _json.containsKey('containers')
+              ? (_json['containers'] as core.List)
+                  .map((value) => Container.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          maxRetries: _json.containsKey('maxRetries')
+              ? _json['maxRetries'] as core.int
+              : null,
+          serviceAccountName: _json.containsKey('serviceAccountName')
+              ? _json['serviceAccountName'] as core.String
+              : null,
+          timeoutSeconds: _json.containsKey('timeoutSeconds')
+              ? _json['timeoutSeconds'] as core.String
+              : null,
+          volumes: _json.containsKey('volumes')
+              ? (_json['volumes'] as core.List)
+                  .map((value) => Volume.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (containers != null) 'containers': containers!,
+        if (maxRetries != null) 'maxRetries': maxRetries!,
+        if (serviceAccountName != null)
+          'serviceAccountName': serviceAccountName!,
+        if (timeoutSeconds != null) 'timeoutSeconds': timeoutSeconds!,
+        if (volumes != null) 'volumes': volumes!,
+      };
+}
+
+/// TaskStatus represents the status of a task of a job execution.
+class TaskStatus {
+  /// Represents time when the task was completed.
+  ///
+  /// It is not guaranteed to be set in happens-before order across separate
+  /// operations. It is represented in RFC3339 form and is in UTC. +optional
+  ///
+  /// Optional.
+  core.String? completionTime;
+
+  /// The latest available observations of a task's current state.
+  ///
+  /// More info:
+  /// https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
+  /// +optional
+  ///
+  /// Optional.
+  core.List<GoogleCloudRunV1Condition>? conditions;
+
+  /// Index of the task, unique per execution, and beginning at 0.
+  ///
+  /// Required.
+  core.int? index;
+
+  /// Result of the last attempt of this task.
+  ///
+  /// +optional
+  ///
+  /// Optional.
+  TaskAttemptResult? lastAttemptResult;
+
+  /// URI where logs for this task can be found in Cloud Console.
+  ///
+  /// Optional.
+  core.String? logUri;
+
+  /// The 'generation' of the execution that was last processed by the
+  /// controller.
+  ///
+  /// Optional.
+  core.int? observedGeneration;
+
+  /// The number of times this task was retried.
+  ///
+  /// Instances are retried when they fail up to the maxRetries limit. +optional
+  ///
+  /// Optional.
+  core.int? retried;
+
+  /// Represents time when the task started to run.
+  ///
+  /// It is not guaranteed to be set in happens-before order across separate
+  /// operations. It is represented in RFC3339 form and is in UTC. +optional
+  ///
+  /// Optional.
+  core.String? startTime;
+
+  TaskStatus({
+    this.completionTime,
+    this.conditions,
+    this.index,
+    this.lastAttemptResult,
+    this.logUri,
+    this.observedGeneration,
+    this.retried,
+    this.startTime,
+  });
+
+  TaskStatus.fromJson(core.Map _json)
+      : this(
+          completionTime: _json.containsKey('completionTime')
+              ? _json['completionTime'] as core.String
+              : null,
+          conditions: _json.containsKey('conditions')
+              ? (_json['conditions'] as core.List)
+                  .map((value) => GoogleCloudRunV1Condition.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          index: _json.containsKey('index') ? _json['index'] as core.int : null,
+          lastAttemptResult: _json.containsKey('lastAttemptResult')
+              ? TaskAttemptResult.fromJson(_json['lastAttemptResult']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          logUri: _json.containsKey('logUri')
+              ? _json['logUri'] as core.String
+              : null,
+          observedGeneration: _json.containsKey('observedGeneration')
+              ? _json['observedGeneration'] as core.int
+              : null,
+          retried: _json.containsKey('retried')
+              ? _json['retried'] as core.int
+              : null,
+          startTime: _json.containsKey('startTime')
+              ? _json['startTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (completionTime != null) 'completionTime': completionTime!,
+        if (conditions != null) 'conditions': conditions!,
+        if (index != null) 'index': index!,
+        if (lastAttemptResult != null) 'lastAttemptResult': lastAttemptResult!,
+        if (logUri != null) 'logUri': logUri!,
+        if (observedGeneration != null)
+          'observedGeneration': observedGeneration!,
+        if (retried != null) 'retried': retried!,
+        if (startTime != null) 'startTime': startTime!,
+      };
+}
+
+/// TaskTemplateSpec describes the data a task should have when created from a
+/// template.
+class TaskTemplateSpec {
+  /// Specification of the desired behavior of the task.
+  ///
+  /// More info:
+  /// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
+  /// +optional
+  ///
+  /// Optional.
+  TaskSpec? spec;
+
+  TaskTemplateSpec({
+    this.spec,
+  });
+
+  TaskTemplateSpec.fromJson(core.Map _json)
+      : this(
+          spec: _json.containsKey('spec')
+              ? TaskSpec.fromJson(
+                  _json['spec'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (spec != null) 'spec': spec!,
+      };
+}
+
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
@@ -5915,15 +7757,13 @@
   /// Percent specifies percent of the traffic to this Revision or
   /// Configuration.
   ///
-  /// This defaults to zero if unspecified. Cloud Run currently requires 100
-  /// percent for a single ConfigurationName TrafficTarget entry.
+  /// This defaults to zero if unspecified.
   core.int? percent;
 
   /// RevisionName of a specific revision to which to send this portion of
   /// traffic.
   ///
-  /// This is mutually exclusive with ConfigurationName. Providing RevisionName
-  /// in spec is not currently supported by Cloud Run.
+  /// This is mutually exclusive with ConfigurationName.
   core.String? revisionName;
 
   /// Tag is used to expose a dedicated url for referencing this target
@@ -5935,7 +7775,7 @@
   /// URL displays the URL for accessing tagged traffic targets.
   ///
   /// URL is displayed in status, and is disallowed on spec. URL must contain a
-  /// scheme (e.g. http://) and a hostname, but may not contain anything else
+  /// scheme (e.g. https://) and a hostname, but may not contain anything else
   /// (e.g. basic auth, url path, etc.)
   ///
   /// Output only.
diff --git a/generated/googleapis/lib/run/v2.dart b/generated/googleapis/lib/run/v2.dart
index 71c09fc..3b0b68b 100644
--- a/generated/googleapis/lib/run/v2.dart
+++ b/generated/googleapis/lib/run/v2.dart
@@ -15,8 +15,9 @@
 /// Cloud Run Admin API - v2
 ///
 /// Deploy and manage user provided container images that scale automatically
-/// based on incoming requests. The Cloud Run Admin API follows the Knative
-/// Serving API specification.
+/// based on incoming requests. The Cloud Run Admin API v1 follows the Knative
+/// Serving API specification, while v2 is aligned with Google Cloud AIP-based
+/// API standards, as described in https://google.aip.dev/.
 ///
 /// For more information, see <https://cloud.google.com/run/>
 ///
@@ -46,7 +47,9 @@
 /// Deploy and manage user provided container images that scale automatically
 /// based on incoming requests.
 ///
-/// The Cloud Run Admin API follows the Knative Serving API specification.
+/// The Cloud Run Admin API v1 follows the Knative Serving API specification,
+/// while v2 is aligned with Google Cloud AIP-based API standards, as described
+/// in https://google.aip.dev/.
 class CloudRunApi {
   /// See, edit, configure, and delete your Google Cloud data and see the email
   /// address for your Google Account.
@@ -184,14 +187,21 @@
   ///
   /// Request parameters:
   ///
-  /// [name] - The name of the operation's parent resource.
+  /// [name] - Required. To query for all of the operations for a project.
   /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
   ///
-  /// [filter] - The standard list filter.
+  /// [filter] - Optional. A filter for matching the completed or in-progress
+  /// operations. The supported formats of *filter* are: To query for only
+  /// completed operations: done:true To query for only ongoing operations:
+  /// done:false Must be empty to query for all of the latest operations for the
+  /// given parent project.
   ///
-  /// [pageSize] - The standard list page size.
+  /// [pageSize] - The maximum number of records that should be returned.
+  /// Requested page size cannot exceed 100. If not set or set to less than or
+  /// equal to 0, the default page size is 100. .
   ///
-  /// [pageToken] - The standard list page token.
+  /// [pageToken] - Token identifying which result to start with, which is
+  /// returned by a previous list call.
   ///
   /// [$fields] - Selector specifying which fields to include in a partial
   /// response.
@@ -872,6 +882,9 @@
   /// - "EXECUTION_REASON_UNDEFINED" : Default value.
   /// - "JOB_STATUS_SERVICE_POLLING_ERROR" : Internal system error getting
   /// execution status. System will retry.
+  /// - "NON_ZERO_EXIT_CODE" : A task reached its retry limit and the last
+  /// attempt failed due to the user container exiting with a non-zero exit
+  /// code.
   core.String? executionReason;
 
   /// A reason for the internal condition.
@@ -944,6 +957,8 @@
   /// - "NO_DEPLOYMENT" : There was no deployment defined. This value is no
   /// longer used, but Services created in older versions of the API might
   /// contain this value.
+  /// - "HEALTH_CHECK_SKIPPED" : A revision's container has no port specified
+  /// since the revision is of a manually scaled service with 0 instance count
   core.String? revisionReason;
 
   /// How to interpret failures of this condition, one of Error, Warning, Info
@@ -1450,7 +1465,7 @@
   ///
   /// On read, describes whether the resource uses preview features. Launch
   /// Stages are defined at
-  /// [Google Cloud Platform Launch Stages](http://cloud.google.com/terms/launch-stages).
+  /// [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages).
   /// Possible string values are:
   /// - "LAUNCH_STAGE_UNSPECIFIED" : Do not use this default value.
   /// - "UNIMPLEMENTED" : The feature is not yet implemented. Users can not use
@@ -1466,7 +1481,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -1479,7 +1494,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// [Terms of Service](https://cloud.google.com/terms/) and the
   /// [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation)
   /// documentation.
@@ -2018,7 +2033,7 @@
   /// Cloud Run will populate some annotations using 'run.googleapis.com' or
   /// 'serving.knative.dev' namespaces. This field follows Kubernetes
   /// annotations' namespacing, limits, and rules. More info:
-  /// http://kubernetes.io/docs/user-guide/annotations
+  /// https://kubernetes.io/docs/user-guide/annotations
   core.Map<core.String, core.String>? annotations;
 
   /// Settings for the Binary Authorization feature.
@@ -2055,6 +2070,8 @@
   core.String? deleteTime;
 
   /// User-provided description of the Service.
+  ///
+  /// This field currently has a 512-character limit.
   core.String? description;
 
   /// A system-generated fingerprint for this version of the resource.
@@ -2123,7 +2140,7 @@
   core.String? latestReadyRevision;
 
   /// The launch stage as defined by
-  /// [Google Cloud Platform Launch Stages](http://cloud.google.com/terms/launch-stages).
+  /// [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages).
   ///
   /// Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA
   /// is assumed.
@@ -2142,7 +2159,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -2155,7 +2172,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// [Terms of Service](https://cloud.google.com/terms/) and the
   /// [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation)
   /// documentation.
@@ -2425,8 +2442,7 @@
 class GoogleCloudRunOpV2TrafficTarget {
   /// Specifies percent of the traffic to this Revision.
   ///
-  /// This defaults to zero if unspecified. Cloud Run currently requires 100
-  /// percent for a single TrafficTarget entry.
+  /// This defaults to zero if unspecified.
   core.int? percent;
 
   /// Revision to which to send this portion of traffic, if traffic allocation
@@ -2996,7 +3012,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef GoogleIamV1TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef GoogleIamV1TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef GoogleIamV1TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/searchconsole/v1.dart b/generated/googleapis/lib/searchconsole/v1.dart
index e1f11d6..fc32f83 100644
--- a/generated/googleapis/lib/searchconsole/v1.dart
+++ b/generated/googleapis/lib/searchconsole/v1.dart
@@ -25,6 +25,8 @@
 /// - [SearchanalyticsResource]
 /// - [SitemapsResource]
 /// - [SitesResource]
+/// - [UrlInspectionResource]
+///   - [UrlInspectionIndexResource]
 /// - [UrlTestingToolsResource]
 ///   - [UrlTestingToolsMobileFriendlyTestResource]
 library searchconsole.v1;
@@ -57,6 +59,7 @@
       SearchanalyticsResource(_requester);
   SitemapsResource get sitemaps => SitemapsResource(_requester);
   SitesResource get sites => SitesResource(_requester);
+  UrlInspectionResource get urlInspection => UrlInspectionResource(_requester);
   UrlTestingToolsResource get urlTestingTools =>
       UrlTestingToolsResource(_requester);
 
@@ -437,6 +440,58 @@
   }
 }
 
+class UrlInspectionResource {
+  final commons.ApiRequester _requester;
+
+  UrlInspectionIndexResource get index =>
+      UrlInspectionIndexResource(_requester);
+
+  UrlInspectionResource(commons.ApiRequester client) : _requester = client;
+}
+
+class UrlInspectionIndexResource {
+  final commons.ApiRequester _requester;
+
+  UrlInspectionIndexResource(commons.ApiRequester client) : _requester = client;
+
+  /// Index inspection.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [InspectUrlIndexResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<InspectUrlIndexResponse> inspect(
+    InspectUrlIndexRequest request, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    const _url = 'v1/urlInspection/index:inspect';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return InspectUrlIndexResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 class UrlTestingToolsResource {
   final commons.ApiRequester _requester;
 
@@ -490,6 +545,172 @@
   }
 }
 
+/// AMP inspection result of the live page or the current information from
+/// Google's index, depending on whether you requested a live inspection or not.
+class AmpInspectionResult {
+  /// Index status of the AMP URL.
+  /// Possible string values are:
+  /// - "VERDICT_UNSPECIFIED" : Unknown verdict.
+  /// - "PASS" : Equivalent to "Valid" for the page or item in Search Console.
+  /// - "PARTIAL" : Equivalent to "Valid with warnings" for the page or item in
+  /// Search Console.
+  /// - "FAIL" : Equivalent to "Error" or "Invalid" for the page or item in
+  /// Search Console.
+  /// - "NEUTRAL" : Equivalent to "Excluded" for the page or item in Search
+  /// Console.
+  core.String? ampIndexStatusVerdict;
+
+  /// URL of the AMP that was inspected.
+  ///
+  /// If the submitted URL is a desktop page that refers to an AMP version, the
+  /// AMP version will be inspected.
+  core.String? ampUrl;
+
+  /// Whether or not the page blocks indexing through a noindex rule.
+  /// Possible string values are:
+  /// - "AMP_INDEXING_STATE_UNSPECIFIED" : Unknown indexing status.
+  /// - "AMP_INDEXING_ALLOWED" : Indexing allowed.
+  /// - "BLOCKED_DUE_TO_NOINDEX" : Indexing not allowed, 'noindex' detected.
+  /// - "BLOCKED_DUE_TO_EXPIRED_UNAVAILABLE_AFTER" : Indexing not allowed,
+  /// 'unavailable_after' date expired.
+  core.String? indexingState;
+
+  /// A list of zero or more AMP issues found for the inspected URL.
+  core.List<AmpIssue>? issues;
+
+  /// Last time this AMP version was crawled by Google.
+  ///
+  /// Absent if the URL was never crawled successfully.
+  core.String? lastCrawlTime;
+
+  /// Whether or not Google could fetch the AMP.
+  /// Possible string values are:
+  /// - "PAGE_FETCH_STATE_UNSPECIFIED" : Unknown fetch state.
+  /// - "SUCCESSFUL" : Successful fetch.
+  /// - "SOFT_404" : Soft 404.
+  /// - "BLOCKED_ROBOTS_TXT" : Blocked by robots.txt.
+  /// - "NOT_FOUND" : Not found (404).
+  /// - "ACCESS_DENIED" : Blocked due to unauthorized request (401).
+  /// - "SERVER_ERROR" : Server error (5xx).
+  /// - "REDIRECT_ERROR" : Redirection error.
+  /// - "ACCESS_FORBIDDEN" : Blocked due to access forbidden (403).
+  /// - "BLOCKED_4XX" : Blocked due to other 4xx issue (not 403, 404).
+  /// - "INTERNAL_CRAWL_ERROR" : Internal error.
+  /// - "INVALID_URL" : Invalid URL.
+  core.String? pageFetchState;
+
+  /// Whether or not the page is blocked to Google by a robots.txt rule.
+  /// Possible string values are:
+  /// - "ROBOTS_TXT_STATE_UNSPECIFIED" : Unknown robots.txt state, typically
+  /// because the page wasn't fetched or found, or because robots.txt itself
+  /// couldn't be reached.
+  /// - "ALLOWED" : Crawl allowed by robots.txt.
+  /// - "DISALLOWED" : Crawl blocked by robots.txt.
+  core.String? robotsTxtState;
+
+  /// The status of the most severe error on the page.
+  ///
+  /// If a page has both warnings and errors, the page status is error. Error
+  /// status means the page cannot be shown in Search results.
+  /// Possible string values are:
+  /// - "VERDICT_UNSPECIFIED" : Unknown verdict.
+  /// - "PASS" : Equivalent to "Valid" for the page or item in Search Console.
+  /// - "PARTIAL" : Equivalent to "Valid with warnings" for the page or item in
+  /// Search Console.
+  /// - "FAIL" : Equivalent to "Error" or "Invalid" for the page or item in
+  /// Search Console.
+  /// - "NEUTRAL" : Equivalent to "Excluded" for the page or item in Search
+  /// Console.
+  core.String? verdict;
+
+  AmpInspectionResult({
+    this.ampIndexStatusVerdict,
+    this.ampUrl,
+    this.indexingState,
+    this.issues,
+    this.lastCrawlTime,
+    this.pageFetchState,
+    this.robotsTxtState,
+    this.verdict,
+  });
+
+  AmpInspectionResult.fromJson(core.Map _json)
+      : this(
+          ampIndexStatusVerdict: _json.containsKey('ampIndexStatusVerdict')
+              ? _json['ampIndexStatusVerdict'] as core.String
+              : null,
+          ampUrl: _json.containsKey('ampUrl')
+              ? _json['ampUrl'] as core.String
+              : null,
+          indexingState: _json.containsKey('indexingState')
+              ? _json['indexingState'] as core.String
+              : null,
+          issues: _json.containsKey('issues')
+              ? (_json['issues'] as core.List)
+                  .map((value) => AmpIssue.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          lastCrawlTime: _json.containsKey('lastCrawlTime')
+              ? _json['lastCrawlTime'] as core.String
+              : null,
+          pageFetchState: _json.containsKey('pageFetchState')
+              ? _json['pageFetchState'] as core.String
+              : null,
+          robotsTxtState: _json.containsKey('robotsTxtState')
+              ? _json['robotsTxtState'] as core.String
+              : null,
+          verdict: _json.containsKey('verdict')
+              ? _json['verdict'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (ampIndexStatusVerdict != null)
+          'ampIndexStatusVerdict': ampIndexStatusVerdict!,
+        if (ampUrl != null) 'ampUrl': ampUrl!,
+        if (indexingState != null) 'indexingState': indexingState!,
+        if (issues != null) 'issues': issues!,
+        if (lastCrawlTime != null) 'lastCrawlTime': lastCrawlTime!,
+        if (pageFetchState != null) 'pageFetchState': pageFetchState!,
+        if (robotsTxtState != null) 'robotsTxtState': robotsTxtState!,
+        if (verdict != null) 'verdict': verdict!,
+      };
+}
+
+/// AMP issue.
+class AmpIssue {
+  /// Brief description of this issue.
+  core.String? issueMessage;
+
+  /// Severity of this issue: WARNING or ERROR.
+  /// Possible string values are:
+  /// - "SEVERITY_UNSPECIFIED" : Unknown severity.
+  /// - "WARNING" : Warning.
+  /// - "ERROR" : Error.
+  core.String? severity;
+
+  AmpIssue({
+    this.issueMessage,
+    this.severity,
+  });
+
+  AmpIssue.fromJson(core.Map _json)
+      : this(
+          issueMessage: _json.containsKey('issueMessage')
+              ? _json['issueMessage'] as core.String
+              : null,
+          severity: _json.containsKey('severity')
+              ? _json['severity'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (issueMessage != null) 'issueMessage': issueMessage!,
+        if (severity != null) 'severity': severity!,
+      };
+}
+
 class ApiDataRow {
   core.double? clicks;
   core.double? ctr;
@@ -645,6 +866,38 @@
       };
 }
 
+/// Rich Results items grouped by type.
+class DetectedItems {
+  /// List of Rich Results items.
+  core.List<Item>? items;
+
+  /// Rich Results type
+  core.String? richResultType;
+
+  DetectedItems({
+    this.items,
+    this.richResultType,
+  });
+
+  DetectedItems.fromJson(core.Map _json)
+      : this(
+          items: _json.containsKey('items')
+              ? (_json['items'] as core.List)
+                  .map((value) => Item.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          richResultType: _json.containsKey('richResultType')
+              ? _json['richResultType'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (items != null) 'items': items!,
+        if (richResultType != null) 'richResultType': richResultType!,
+      };
+}
+
 /// Describe image data.
 class Image {
   /// Image data in format determined by the mime type.
@@ -681,6 +934,279 @@
       };
 }
 
+/// Results of index status inspection for either the live page or the version
+/// in Google's index, depending on whether you requested a live inspection or
+/// not.
+///
+/// For more information, see the
+/// [Index coverage report documentation](https://support.google.com/webmasters/answer/7440203).
+class IndexStatusInspectionResult {
+  /// Could Google find and index the page.
+  ///
+  /// More details about page indexing appear in 'indexing_state'.
+  core.String? coverageState;
+
+  /// Primary crawler that was used by Google to crawl your site.
+  /// Possible string values are:
+  /// - "CRAWLING_USER_AGENT_UNSPECIFIED" : Unknown user agent.
+  /// - "DESKTOP" : Desktop user agent.
+  /// - "MOBILE" : Mobile user agent.
+  core.String? crawledAs;
+
+  /// The URL of the page that Google selected as canonical.
+  ///
+  /// If the page was not indexed, this field is absent.
+  core.String? googleCanonical;
+
+  /// Whether or not the page blocks indexing through a noindex rule.
+  /// Possible string values are:
+  /// - "INDEXING_STATE_UNSPECIFIED" : Unknown indexing status.
+  /// - "INDEXING_ALLOWED" : Indexing allowed.
+  /// - "BLOCKED_BY_META_TAG" : Indexing not allowed, 'noindex' detected in
+  /// 'robots' meta tag.
+  /// - "BLOCKED_BY_HTTP_HEADER" : Indexing not allowed, 'noindex' detected in
+  /// 'X-Robots-Tag' http header.
+  /// - "BLOCKED_BY_ROBOTS_TXT" : Indexing not allowed, No: 'noindex' detected
+  /// in robots.txt.
+  core.String? indexingState;
+
+  /// Last time this URL was crawled by Google using the
+  /// [primary crawler](https://support.google.com/webmasters/answer/7440203#primary_crawler).
+  ///
+  /// Absent if the URL was never crawled successfully.
+  core.String? lastCrawlTime;
+
+  /// Whether or not Google could retrieve the page from your server.
+  ///
+  /// Equivalent to \["page
+  /// fetch"\](https://support.google.com/webmasters/answer/9012289#index_coverage)
+  /// in the URL inspection report.
+  /// Possible string values are:
+  /// - "PAGE_FETCH_STATE_UNSPECIFIED" : Unknown fetch state.
+  /// - "SUCCESSFUL" : Successful fetch.
+  /// - "SOFT_404" : Soft 404.
+  /// - "BLOCKED_ROBOTS_TXT" : Blocked by robots.txt.
+  /// - "NOT_FOUND" : Not found (404).
+  /// - "ACCESS_DENIED" : Blocked due to unauthorized request (401).
+  /// - "SERVER_ERROR" : Server error (5xx).
+  /// - "REDIRECT_ERROR" : Redirection error.
+  /// - "ACCESS_FORBIDDEN" : Blocked due to access forbidden (403).
+  /// - "BLOCKED_4XX" : Blocked due to other 4xx issue (not 403, 404).
+  /// - "INTERNAL_CRAWL_ERROR" : Internal error.
+  /// - "INVALID_URL" : Invalid URL.
+  core.String? pageFetchState;
+
+  /// URLs that link to the inspected URL, directly and indirectly.
+  core.List<core.String>? referringUrls;
+
+  /// Whether or not the page is blocked to Google by a robots.txt rule.
+  /// Possible string values are:
+  /// - "ROBOTS_TXT_STATE_UNSPECIFIED" : Unknown robots.txt state, typically
+  /// because the page wasn't fetched or found, or because robots.txt itself
+  /// couldn't be reached.
+  /// - "ALLOWED" : Crawl allowed by robots.txt.
+  /// - "DISALLOWED" : Crawl blocked by robots.txt.
+  core.String? robotsTxtState;
+
+  /// Any sitemaps that this URL was listed in, as known by Google.
+  ///
+  /// Not guaranteed to be an exhaustive list, especially if Google did not
+  /// discover this URL through a sitemap. Absent if no sitemaps were found.
+  core.List<core.String>? sitemap;
+
+  /// The URL that your page or site
+  /// [declares as canonical](https://developers.google.com/search/docs/advanced/crawling/consolidate-duplicate-urls?#define-canonical).
+  ///
+  /// If you did not declare a canonical URL, this field is absent.
+  core.String? userCanonical;
+
+  /// High level verdict about whether the URL *is* indexed (indexed status), or
+  /// *can be* indexed (live inspection).
+  /// Possible string values are:
+  /// - "VERDICT_UNSPECIFIED" : Unknown verdict.
+  /// - "PASS" : Equivalent to "Valid" for the page or item in Search Console.
+  /// - "PARTIAL" : Equivalent to "Valid with warnings" for the page or item in
+  /// Search Console.
+  /// - "FAIL" : Equivalent to "Error" or "Invalid" for the page or item in
+  /// Search Console.
+  /// - "NEUTRAL" : Equivalent to "Excluded" for the page or item in Search
+  /// Console.
+  core.String? verdict;
+
+  IndexStatusInspectionResult({
+    this.coverageState,
+    this.crawledAs,
+    this.googleCanonical,
+    this.indexingState,
+    this.lastCrawlTime,
+    this.pageFetchState,
+    this.referringUrls,
+    this.robotsTxtState,
+    this.sitemap,
+    this.userCanonical,
+    this.verdict,
+  });
+
+  IndexStatusInspectionResult.fromJson(core.Map _json)
+      : this(
+          coverageState: _json.containsKey('coverageState')
+              ? _json['coverageState'] as core.String
+              : null,
+          crawledAs: _json.containsKey('crawledAs')
+              ? _json['crawledAs'] as core.String
+              : null,
+          googleCanonical: _json.containsKey('googleCanonical')
+              ? _json['googleCanonical'] as core.String
+              : null,
+          indexingState: _json.containsKey('indexingState')
+              ? _json['indexingState'] as core.String
+              : null,
+          lastCrawlTime: _json.containsKey('lastCrawlTime')
+              ? _json['lastCrawlTime'] as core.String
+              : null,
+          pageFetchState: _json.containsKey('pageFetchState')
+              ? _json['pageFetchState'] as core.String
+              : null,
+          referringUrls: _json.containsKey('referringUrls')
+              ? (_json['referringUrls'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          robotsTxtState: _json.containsKey('robotsTxtState')
+              ? _json['robotsTxtState'] as core.String
+              : null,
+          sitemap: _json.containsKey('sitemap')
+              ? (_json['sitemap'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          userCanonical: _json.containsKey('userCanonical')
+              ? _json['userCanonical'] as core.String
+              : null,
+          verdict: _json.containsKey('verdict')
+              ? _json['verdict'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (coverageState != null) 'coverageState': coverageState!,
+        if (crawledAs != null) 'crawledAs': crawledAs!,
+        if (googleCanonical != null) 'googleCanonical': googleCanonical!,
+        if (indexingState != null) 'indexingState': indexingState!,
+        if (lastCrawlTime != null) 'lastCrawlTime': lastCrawlTime!,
+        if (pageFetchState != null) 'pageFetchState': pageFetchState!,
+        if (referringUrls != null) 'referringUrls': referringUrls!,
+        if (robotsTxtState != null) 'robotsTxtState': robotsTxtState!,
+        if (sitemap != null) 'sitemap': sitemap!,
+        if (userCanonical != null) 'userCanonical': userCanonical!,
+        if (verdict != null) 'verdict': verdict!,
+      };
+}
+
+/// Index inspection request.
+class InspectUrlIndexRequest {
+  /// URL to inspect.
+  ///
+  /// Must be under the property specified in "site_url".
+  ///
+  /// Required.
+  core.String? inspectionUrl;
+
+  /// An \[IETF BCP-47\](https://en.wikipedia.org/wiki/IETF_language_tag)
+  /// language code representing the requested language for translated issue
+  /// messages, e.g. "en-US", "or "de-CH".
+  ///
+  /// Default value is "en-US".
+  ///
+  /// Optional.
+  core.String? languageCode;
+
+  /// The URL of the property as defined in Search Console.
+  ///
+  /// **Examples:** `http://www.example.com/` for a URL-prefix property, or
+  /// `sc-domain:example.com` for a Domain property.
+  ///
+  /// Required.
+  core.String? siteUrl;
+
+  InspectUrlIndexRequest({
+    this.inspectionUrl,
+    this.languageCode,
+    this.siteUrl,
+  });
+
+  InspectUrlIndexRequest.fromJson(core.Map _json)
+      : this(
+          inspectionUrl: _json.containsKey('inspectionUrl')
+              ? _json['inspectionUrl'] as core.String
+              : null,
+          languageCode: _json.containsKey('languageCode')
+              ? _json['languageCode'] as core.String
+              : null,
+          siteUrl: _json.containsKey('siteUrl')
+              ? _json['siteUrl'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (inspectionUrl != null) 'inspectionUrl': inspectionUrl!,
+        if (languageCode != null) 'languageCode': languageCode!,
+        if (siteUrl != null) 'siteUrl': siteUrl!,
+      };
+}
+
+/// Index-Status inspection response.
+class InspectUrlIndexResponse {
+  /// URL inspection results.
+  UrlInspectionResult? inspectionResult;
+
+  InspectUrlIndexResponse({
+    this.inspectionResult,
+  });
+
+  InspectUrlIndexResponse.fromJson(core.Map _json)
+      : this(
+          inspectionResult: _json.containsKey('inspectionResult')
+              ? UrlInspectionResult.fromJson(_json['inspectionResult']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (inspectionResult != null) 'inspectionResult': inspectionResult!,
+      };
+}
+
+/// A specific rich result found on the page.
+class Item {
+  /// A list of zero or more rich result issues found for this instance.
+  core.List<RichResultsIssue>? issues;
+
+  /// The user-provided name of this item.
+  core.String? name;
+
+  Item({
+    this.issues,
+    this.name,
+  });
+
+  Item.fromJson(core.Map _json)
+      : this(
+          issues: _json.containsKey('issues')
+              ? (_json['issues'] as core.List)
+                  .map((value) => RichResultsIssue.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (issues != null) 'issues': issues!,
+        if (name != null) 'name': name!,
+      };
+}
+
 /// Mobile-friendly issue.
 class MobileFriendlyIssue {
   /// Rule violated.
@@ -718,6 +1244,106 @@
       };
 }
 
+/// Mobile-usability inspection results.
+class MobileUsabilityInspectionResult {
+  /// A list of zero or more mobile-usability issues detected for this URL.
+  core.List<MobileUsabilityIssue>? issues;
+
+  /// High-level mobile-usability inspection result for this URL.
+  /// Possible string values are:
+  /// - "VERDICT_UNSPECIFIED" : Unknown verdict.
+  /// - "PASS" : Equivalent to "Valid" for the page or item in Search Console.
+  /// - "PARTIAL" : Equivalent to "Valid with warnings" for the page or item in
+  /// Search Console.
+  /// - "FAIL" : Equivalent to "Error" or "Invalid" for the page or item in
+  /// Search Console.
+  /// - "NEUTRAL" : Equivalent to "Excluded" for the page or item in Search
+  /// Console.
+  core.String? verdict;
+
+  MobileUsabilityInspectionResult({
+    this.issues,
+    this.verdict,
+  });
+
+  MobileUsabilityInspectionResult.fromJson(core.Map _json)
+      : this(
+          issues: _json.containsKey('issues')
+              ? (_json['issues'] as core.List)
+                  .map((value) => MobileUsabilityIssue.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          verdict: _json.containsKey('verdict')
+              ? _json['verdict'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (issues != null) 'issues': issues!,
+        if (verdict != null) 'verdict': verdict!,
+      };
+}
+
+/// Mobile-usability issue.
+class MobileUsabilityIssue {
+  /// Mobile-usability issue type.
+  /// Possible string values are:
+  /// - "MOBILE_USABILITY_ISSUE_TYPE_UNSPECIFIED" : Unknown issue. Sorry, we
+  /// don't have any description for the rule that was broken.
+  /// - "USES_INCOMPATIBLE_PLUGINS" : Plugins incompatible with mobile devices
+  /// are being used.
+  /// [Learn more](https://support.google.com/webmasters/answer/6352293#flash_usage#error-list).
+  /// - "CONFIGURE_VIEWPORT" : Viewport is not specified using the meta viewport
+  /// tag.
+  /// [Learn more](https://support.google.com/webmasters/answer/6352293#viewport_not_configured#error-list).
+  /// - "FIXED_WIDTH_VIEWPORT" : Viewport defined to a fixed width.
+  /// [Learn more](https://support.google.com/webmasters/answer/6352293#fixed-width_viewport#error-list).
+  /// - "SIZE_CONTENT_TO_VIEWPORT" : Content not sized to viewport.
+  /// [Learn more](https://support.google.com/webmasters/answer/6352293#content_not_sized_to_viewport#error-list).
+  /// - "USE_LEGIBLE_FONT_SIZES" : Font size is too small for easy reading on a
+  /// small screen.
+  /// [Learn More](https://support.google.com/webmasters/answer/6352293#small_font_size#error-list).
+  /// - "TAP_TARGETS_TOO_CLOSE" : Touch elements are too close to each other.
+  /// [Learn more](https://support.google.com/webmasters/answer/6352293#touch_elements_too_close#error-list).
+  core.String? issueType;
+
+  /// Additional information regarding the issue.
+  core.String? message;
+
+  /// Not returned; reserved for future use.
+  /// Possible string values are:
+  /// - "SEVERITY_UNSPECIFIED" : Unknown severity.
+  /// - "WARNING" : Warning.
+  /// - "ERROR" : Error.
+  core.String? severity;
+
+  MobileUsabilityIssue({
+    this.issueType,
+    this.message,
+    this.severity,
+  });
+
+  MobileUsabilityIssue.fromJson(core.Map _json)
+      : this(
+          issueType: _json.containsKey('issueType')
+              ? _json['issueType'] as core.String
+              : null,
+          message: _json.containsKey('message')
+              ? _json['message'] as core.String
+              : null,
+          severity: _json.containsKey('severity')
+              ? _json['severity'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (issueType != null) 'issueType': issueType!,
+        if (message != null) 'message': message!,
+        if (severity != null) 'severity': severity!,
+      };
+}
+
 /// Information about a resource with issue.
 class ResourceIssue {
   /// Describes a blocked resource issue.
@@ -740,6 +1366,88 @@
       };
 }
 
+/// Rich-Results inspection result, including any rich results found at this
+/// URL.
+class RichResultsInspectionResult {
+  /// A list of zero or more rich results detected on this page.
+  ///
+  /// Rich results that cannot even be parsed due to syntactic issues will not
+  /// be listed here.
+  core.List<DetectedItems>? detectedItems;
+
+  /// High-level rich results inspection result for this URL.
+  /// Possible string values are:
+  /// - "VERDICT_UNSPECIFIED" : Unknown verdict.
+  /// - "PASS" : Equivalent to "Valid" for the page or item in Search Console.
+  /// - "PARTIAL" : Equivalent to "Valid with warnings" for the page or item in
+  /// Search Console.
+  /// - "FAIL" : Equivalent to "Error" or "Invalid" for the page or item in
+  /// Search Console.
+  /// - "NEUTRAL" : Equivalent to "Excluded" for the page or item in Search
+  /// Console.
+  core.String? verdict;
+
+  RichResultsInspectionResult({
+    this.detectedItems,
+    this.verdict,
+  });
+
+  RichResultsInspectionResult.fromJson(core.Map _json)
+      : this(
+          detectedItems: _json.containsKey('detectedItems')
+              ? (_json['detectedItems'] as core.List)
+                  .map((value) => DetectedItems.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          verdict: _json.containsKey('verdict')
+              ? _json['verdict'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (detectedItems != null) 'detectedItems': detectedItems!,
+        if (verdict != null) 'verdict': verdict!,
+      };
+}
+
+/// Severity and status of a single issue affecting a single rich result
+/// instance on a page.
+class RichResultsIssue {
+  /// Rich Results issue type.
+  core.String? issueMessage;
+
+  /// Severity of this issue: WARNING, or ERROR.
+  ///
+  /// Items with an issue of status ERROR cannot appear with rich result
+  /// features in Google Search results.
+  /// Possible string values are:
+  /// - "SEVERITY_UNSPECIFIED" : Unknown severity.
+  /// - "WARNING" : Warning.
+  /// - "ERROR" : Error.
+  core.String? severity;
+
+  RichResultsIssue({
+    this.issueMessage,
+    this.severity,
+  });
+
+  RichResultsIssue.fromJson(core.Map _json)
+      : this(
+          issueMessage: _json.containsKey('issueMessage')
+              ? _json['issueMessage'] as core.String
+              : null,
+          severity: _json.containsKey('severity')
+              ? _json['severity'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (issueMessage != null) 'issueMessage': issueMessage!,
+        if (severity != null) 'severity': severity!,
+      };
+}
+
 /// Mobile-friendly test request.
 class RunMobileFriendlyTestRequest {
   /// Whether or not screenshot is requested.
@@ -1130,6 +1838,70 @@
       };
 }
 
+/// URL inspection result, including all inspection results.
+class UrlInspectionResult {
+  /// Result of the AMP analysis.
+  ///
+  /// Absent if the page is not an AMP page.
+  AmpInspectionResult? ampResult;
+
+  /// Result of the index status analysis.
+  IndexStatusInspectionResult? indexStatusResult;
+
+  /// Link to Search Console URL inspection.
+  core.String? inspectionResultLink;
+
+  /// Result of the Mobile usability analysis.
+  MobileUsabilityInspectionResult? mobileUsabilityResult;
+
+  /// Result of the Rich Results analysis.
+  ///
+  /// Absent if there are no rich results found.
+  RichResultsInspectionResult? richResultsResult;
+
+  UrlInspectionResult({
+    this.ampResult,
+    this.indexStatusResult,
+    this.inspectionResultLink,
+    this.mobileUsabilityResult,
+    this.richResultsResult,
+  });
+
+  UrlInspectionResult.fromJson(core.Map _json)
+      : this(
+          ampResult: _json.containsKey('ampResult')
+              ? AmpInspectionResult.fromJson(
+                  _json['ampResult'] as core.Map<core.String, core.dynamic>)
+              : null,
+          indexStatusResult: _json.containsKey('indexStatusResult')
+              ? IndexStatusInspectionResult.fromJson(_json['indexStatusResult']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          inspectionResultLink: _json.containsKey('inspectionResultLink')
+              ? _json['inspectionResultLink'] as core.String
+              : null,
+          mobileUsabilityResult: _json.containsKey('mobileUsabilityResult')
+              ? MobileUsabilityInspectionResult.fromJson(
+                  _json['mobileUsabilityResult']
+                      as core.Map<core.String, core.dynamic>)
+              : null,
+          richResultsResult: _json.containsKey('richResultsResult')
+              ? RichResultsInspectionResult.fromJson(_json['richResultsResult']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (ampResult != null) 'ampResult': ampResult!,
+        if (indexStatusResult != null) 'indexStatusResult': indexStatusResult!,
+        if (inspectionResultLink != null)
+          'inspectionResultLink': inspectionResultLink!,
+        if (mobileUsabilityResult != null)
+          'mobileUsabilityResult': mobileUsabilityResult!,
+        if (richResultsResult != null) 'richResultsResult': richResultsResult!,
+      };
+}
+
 /// Contains permission level information about a Search Console site.
 ///
 /// For more information, see
diff --git a/generated/googleapis/lib/secretmanager/v1.dart b/generated/googleapis/lib/secretmanager/v1.dart
index 07d0da2..3e8f847 100644
--- a/generated/googleapis/lib/secretmanager/v1.dart
+++ b/generated/googleapis/lib/secretmanager/v1.dart
@@ -1967,7 +1967,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/securitycenter/v1.dart b/generated/googleapis/lib/securitycenter/v1.dart
index 2ae3822..8703754 100644
--- a/generated/googleapis/lib/securitycenter/v1.dart
+++ b/generated/googleapis/lib/securitycenter/v1.dart
@@ -4558,10 +4558,14 @@
   /// e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527
   core.List<Reference>? references;
 
+  /// Whether upstream fix is available for the CVE.
+  core.bool? upstreamFixAvailable;
+
   Cve({
     this.cvssv3,
     this.id,
     this.references,
+    this.upstreamFixAvailable,
   });
 
   Cve.fromJson(core.Map _json)
@@ -4577,12 +4581,17 @@
                       value as core.Map<core.String, core.dynamic>))
                   .toList()
               : null,
+          upstreamFixAvailable: _json.containsKey('upstreamFixAvailable')
+              ? _json['upstreamFixAvailable'] as core.bool
+              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (cvssv3 != null) 'cvssv3': cvssv3!,
         if (id != null) 'id': id!,
         if (references != null) 'references': references!,
+        if (upstreamFixAvailable != null)
+          'upstreamFixAvailable': upstreamFixAvailable!,
       };
 }
 
@@ -4862,6 +4871,9 @@
 
   /// Indicates the mute state of a finding (either unspecified, muted, unmuted
   /// or undefined).
+  ///
+  /// Unlike other attributes of a finding, a finding provider shouldn't set the
+  /// value of mute.
   /// Possible string values are:
   /// - "MUTE_UNSPECIFIED" : Unspecified.
   /// - "MUTED" : Finding has been muted.
@@ -4872,7 +4884,9 @@
   /// First known as mute_annotation.
   ///
   /// Records additional information about the mute operation e.g. mute config
-  /// that muted the finding, user who muted the finding, etc.
+  /// that muted the finding, user who muted the finding, etc. Unlike other
+  /// attributes of a finding, a finding provider shouldn't set the value of
+  /// mute.
   core.String? muteInitiator;
 
   /// The most recent time this finding was muted or unmuted.
@@ -7035,7 +7049,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/servicecontrol/v1.dart b/generated/googleapis/lib/servicecontrol/v1.dart
index 85ea5ba..8fb0f2a 100644
--- a/generated/googleapis/lib/servicecontrol/v1.dart
+++ b/generated/googleapis/lib/servicecontrol/v1.dart
@@ -2061,11 +2061,11 @@
 
   /// Identity of the operation.
   ///
-  /// This is expected to be unique within the scope of the service that
-  /// generated the operation, and guarantees idempotency in case of retries. In
-  /// order to ensure best performance and latency in the Quota backends,
-  /// operation_ids are optimally associated with time, so that related
-  /// operations can be accessed fast in storage. For this reason, the
+  /// For Allocation Quota, this is expected to be unique within the scope of
+  /// the service that generated the operation, and guarantees idempotency in
+  /// case of retries. In order to ensure best performance and latency in the
+  /// Quota backends, operation_ids are optimally associated with time, so that
+  /// related operations can be accessed fast in storage. For this reason, the
   /// recommended token for services that intend to operate at a high QPS is
   /// Unix time in nanos + UUID
   core.String? operationId;
diff --git a/generated/googleapis/lib/servicedirectory/v1.dart b/generated/googleapis/lib/servicedirectory/v1.dart
index c1e63e8..70fb61d 100644
--- a/generated/googleapis/lib/servicedirectory/v1.dart
+++ b/generated/googleapis/lib/servicedirectory/v1.dart
@@ -1927,7 +1927,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/servicemanagement/v1.dart b/generated/googleapis/lib/servicemanagement/v1.dart
index 8800a4a..035ba06 100644
--- a/generated/googleapis/lib/servicemanagement/v1.dart
+++ b/generated/googleapis/lib/servicemanagement/v1.dart
@@ -3615,7 +3615,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -3628,7 +3628,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// [Terms of Service](https://cloud.google.com/terms/) and the
   /// [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation)
   /// documentation.
@@ -3836,7 +3836,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -3849,7 +3849,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// [Terms of Service](https://cloud.google.com/terms/) and the
   /// [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation)
   /// documentation.
@@ -3980,7 +3980,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -3993,7 +3993,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// [Terms of Service](https://cloud.google.com/terms/) and the
   /// [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation)
   /// documentation.
@@ -5143,7 +5143,7 @@
 }
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/servicenetworking/v1.dart b/generated/googleapis/lib/servicenetworking/v1.dart
index 823d453..6fec7fd 100644
--- a/generated/googleapis/lib/servicenetworking/v1.dart
+++ b/generated/googleapis/lib/servicenetworking/v1.dart
@@ -1418,6 +1418,12 @@
 
 /// Request to create a subnetwork in a previously peered service network.
 class AddSubnetworkRequest {
+  /// The IAM permission check determines whether the consumer project has
+  /// 'servicenetworking.services.use' permission or not.
+  ///
+  /// Optional.
+  core.bool? checkServiceNetworkingUsePermission;
+
   /// A resource that represents the service consumer, such as
   /// `projects/123456`.
   ///
@@ -1526,6 +1532,7 @@
   core.List<core.String>? subnetworkUsers;
 
   AddSubnetworkRequest({
+    this.checkServiceNetworkingUsePermission,
     this.consumer,
     this.consumerNetwork,
     this.description,
@@ -1543,6 +1550,10 @@
 
   AddSubnetworkRequest.fromJson(core.Map _json)
       : this(
+          checkServiceNetworkingUsePermission:
+              _json.containsKey('checkServiceNetworkingUsePermission')
+                  ? _json['checkServiceNetworkingUsePermission'] as core.bool
+                  : null,
           consumer: _json.containsKey('consumer')
               ? _json['consumer'] as core.String
               : null,
@@ -1593,6 +1604,9 @@
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (checkServiceNetworkingUsePermission != null)
+          'checkServiceNetworkingUsePermission':
+              checkServiceNetworkingUsePermission!,
         if (consumer != null) 'consumer': consumer!,
         if (consumerNetwork != null) 'consumerNetwork': consumerNetwork!,
         if (description != null) 'description': description!,
diff --git a/generated/googleapis/lib/serviceusage/v1.dart b/generated/googleapis/lib/serviceusage/v1.dart
index 7971c27..d92aa6a 100644
--- a/generated/googleapis/lib/serviceusage/v1.dart
+++ b/generated/googleapis/lib/serviceusage/v1.dart
@@ -1531,7 +1531,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -1544,7 +1544,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// [Terms of Service](https://cloud.google.com/terms/) and the
   /// [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation)
   /// documentation.
diff --git a/generated/googleapis/lib/shared.dart b/generated/googleapis/lib/shared.dart
index 99c58d47..96fd6f9 100644
--- a/generated/googleapis/lib/shared.dart
+++ b/generated/googleapis/lib/shared.dart
@@ -652,6 +652,7 @@
 /// - connectors:v1 : AuditLogConfig
 /// - datafusion:v1 : AuditLogConfig
 /// - datamigration:v1 : AuditLogConfig
+/// - dataplex:v1 : GoogleIamV1AuditLogConfig
 /// - deploymentmanager:v2 : AuditLogConfig
 /// - domains:v1 : AuditLogConfig
 /// - eventarc:v1 : AuditLogConfig
@@ -2411,6 +2412,7 @@
 /// - displayvideo:v1 : Date
 /// - dlp:v2 : GoogleTypeDate
 /// - documentai:v1 : GoogleTypeDate
+/// - mybusinessbusinesscalls:v1 : Date
 /// - mybusinessbusinessinformation:v1 : Date
 /// - osconfig:v1 : Date
 /// - people:v1 : Date
@@ -2956,6 +2958,112 @@
 
 /// Used by:
 ///
+/// - dataplex:v1 : GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions
+/// - dataplex:v1 : GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions
+class $DiscoverySpecCsvOptions {
+  /// The delimiter being used to separate values.
+  ///
+  /// This defaults to ','.
+  ///
+  /// Optional.
+  core.String? delimiter;
+
+  /// Whether to disable the inference of data type for CSV data.
+  ///
+  /// If true, all columns will be registered as strings.
+  ///
+  /// Optional.
+  core.bool? disableTypeInference;
+
+  /// The character encoding of the data.
+  ///
+  /// The default is UTF-8.
+  ///
+  /// Optional.
+  core.String? encoding;
+
+  /// The number of rows to interpret as header rows that should be skipped when
+  /// reading data rows.
+  ///
+  /// Optional.
+  core.int? headerRows;
+
+  $DiscoverySpecCsvOptions({
+    this.delimiter,
+    this.disableTypeInference,
+    this.encoding,
+    this.headerRows,
+  });
+
+  $DiscoverySpecCsvOptions.fromJson(core.Map _json)
+      : this(
+          delimiter: _json.containsKey('delimiter')
+              ? _json['delimiter'] as core.String
+              : null,
+          disableTypeInference: _json.containsKey('disableTypeInference')
+              ? _json['disableTypeInference'] as core.bool
+              : null,
+          encoding: _json.containsKey('encoding')
+              ? _json['encoding'] as core.String
+              : null,
+          headerRows: _json.containsKey('headerRows')
+              ? _json['headerRows'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (delimiter != null) 'delimiter': delimiter!,
+        if (disableTypeInference != null)
+          'disableTypeInference': disableTypeInference!,
+        if (encoding != null) 'encoding': encoding!,
+        if (headerRows != null) 'headerRows': headerRows!,
+      };
+}
+
+/// Used by:
+///
+/// - dataplex:v1 : GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions
+/// - dataplex:v1 : GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions
+class $DiscoverySpecJsonOptions {
+  /// Whether to disable the inference of data type for Json data.
+  ///
+  /// If true, all columns will be registered as their primitive types (strings,
+  /// number or boolean).
+  ///
+  /// Optional.
+  core.bool? disableTypeInference;
+
+  /// The character encoding of the data.
+  ///
+  /// The default is UTF-8.
+  ///
+  /// Optional.
+  core.String? encoding;
+
+  $DiscoverySpecJsonOptions({
+    this.disableTypeInference,
+    this.encoding,
+  });
+
+  $DiscoverySpecJsonOptions.fromJson(core.Map _json)
+      : this(
+          disableTypeInference: _json.containsKey('disableTypeInference')
+              ? _json['disableTypeInference'] as core.bool
+              : null,
+          encoding: _json.containsKey('encoding')
+              ? _json['encoding'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (disableTypeInference != null)
+          'disableTypeInference': disableTypeInference!,
+        if (encoding != null) 'encoding': encoding!,
+      };
+}
+
+/// Used by:
+///
 /// - compute:v1 : DisksRemoveResourcePoliciesRequest
 /// - compute:v1 : RegionDisksRemoveResourcePoliciesRequest
 class $DisksRemoveResourcePoliciesRequest {
@@ -3183,6 +3291,10 @@
 /// - baremetalsolution:v1 : Empty
 /// - baremetalsolution:v1 : ResetInstanceRequest
 /// - baremetalsolution:v1 : ResetInstanceResponse
+/// - baremetalsolution:v2 : Empty
+/// - baremetalsolution:v2 : ResetInstanceRequest
+/// - baremetalsolution:v2 : RestoreVolumeSnapshotRequest
+/// - baremetalsolution:v2 : StartInstanceRequest
 /// - bigquerydatatransfer:v1 : CheckValidCredsRequest
 /// - bigquerydatatransfer:v1 : Empty
 /// - bigqueryreservation:v1 : Empty
@@ -3192,6 +3304,8 @@
 /// - billingbudgets:v1 : GoogleProtobufEmpty
 /// - binaryauthorization:v1 : Empty
 /// - books:v1 : Empty
+/// - certificatemanager:v1 : CancelOperationRequest
+/// - certificatemanager:v1 : Empty
 /// - chat:v1 : Empty
 /// - chat:v1 : GoogleAppsCardV1Divider
 /// - chromepolicy:v1 : GoogleProtobufEmpty
@@ -3256,6 +3370,9 @@
 /// - content:v2.1 : PauseBuyOnGoogleProgramRequest
 /// - content:v2.1 : RequestReviewBuyOnGoogleProgramRequest
 /// - datacatalog:v1 : Empty
+/// - datacatalog:v1 : GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema
+/// - datacatalog:v1 : GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema
+/// - datacatalog:v1 : GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema
 /// - datacatalog:v1 : GoogleCloudDatacatalogV1StarEntryRequest
 /// - datacatalog:v1 : GoogleCloudDatacatalogV1StarEntryResponse
 /// - datacatalog:v1 : GoogleCloudDatacatalogV1UnstarEntryRequest
@@ -3275,6 +3392,13 @@
 /// - datapipelines:v1 : GoogleCloudDatapipelinesV1RunPipelineRequest
 /// - datapipelines:v1 : GoogleCloudDatapipelinesV1StopPipelineRequest
 /// - datapipelines:v1 : GoogleProtobufEmpty
+/// - dataplex:v1 : Empty
+/// - dataplex:v1 : GoogleCloudDataplexV1ActionInvalidDataOrganization
+/// - dataplex:v1 : GoogleCloudDataplexV1ActionMissingData
+/// - dataplex:v1 : GoogleCloudDataplexV1ActionMissingResource
+/// - dataplex:v1 : GoogleCloudDataplexV1ActionUnauthorizedResource
+/// - dataplex:v1 : GoogleCloudDataplexV1CancelJobRequest
+/// - dataplex:v1 : GoogleLongrunningCancelOperationRequest
 /// - dataproc:v1 : CancelJobRequest
 /// - dataproc:v1 : DiagnoseClusterRequest
 /// - dataproc:v1 : Empty
@@ -3463,6 +3587,7 @@
 /// - recaptchaenterprise:v1 : GoogleProtobufEmpty
 /// - redis:v1 : Empty
 /// - retail:v2 : GoogleProtobufEmpty
+/// - run:v1 : RunJobRequest
 /// - run:v2 : GoogleProtobufEmpty
 /// - runtimeconfig:v1 : CancelOperationRequest
 /// - runtimeconfig:v1 : Empty
@@ -3842,6 +3967,7 @@
 /// - datacatalog:v1 : Expr
 /// - datafusion:v1 : Expr
 /// - datamigration:v1 : Expr
+/// - dataplex:v1 : GoogleTypeExpr
 /// - dataproc:v1 : Expr
 /// - deploymentmanager:v2 : Expr
 /// - domains:v1 : Expr
@@ -5518,8 +5644,10 @@
 /// Used by:
 ///
 /// - apigateway:v1 : ApigatewayLocation
+/// - baremetalsolution:v2 : Location
 /// - bigquerydatatransfer:v1 : Location
 /// - bigtableadmin:v2 : Location
+/// - certificatemanager:v1 : Location
 /// - clouddeploy:v1 : Location
 /// - cloudfunctions:v1 : Location
 /// - cloudkms:v1 : Location
@@ -5626,6 +5754,7 @@
 /// Used by:
 ///
 /// - appengine:v1 : Location
+/// - dataplex:v1 : GoogleCloudLocationLocation
 /// - logging:v2 : Location
 class $Location01 {
   /// The friendly name for this location, typically a nearby city name.
@@ -5890,7 +6019,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -5903,7 +6032,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
   /// Platform Subject to the Deprecation Policy
   /// (https://cloud.google.com/terms/deprecation) documentation.
@@ -7282,10 +7411,7 @@
 /// - domains:v1 : PostalAddress
 /// - jobs:v3 : PostalAddress
 /// - jobs:v4 : PostalAddress
-/// - mybusinessaccountmanagement:v1 : PostalAddress
-/// - mybusinessbusinessinformation:v1 : PostalAddress
-/// - mybusinessverifications:v1 : PostalAddress
-class $PostalAddress {
+class $PostalAddress00 {
   /// Unstructured address lines describing the lower levels of an address.
   ///
   /// Because values in address_lines do not have type information and may
@@ -7395,7 +7521,7 @@
   /// Optional.
   core.String? sublocality;
 
-  $PostalAddress({
+  $PostalAddress00({
     this.addressLines,
     this.administrativeArea,
     this.languageCode,
@@ -7409,7 +7535,193 @@
     this.sublocality,
   });
 
-  $PostalAddress.fromJson(core.Map _json)
+  $PostalAddress00.fromJson(core.Map _json)
+      : this(
+          addressLines: _json.containsKey('addressLines')
+              ? (_json['addressLines'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          administrativeArea: _json.containsKey('administrativeArea')
+              ? _json['administrativeArea'] as core.String
+              : null,
+          languageCode: _json.containsKey('languageCode')
+              ? _json['languageCode'] as core.String
+              : null,
+          locality: _json.containsKey('locality')
+              ? _json['locality'] as core.String
+              : null,
+          organization: _json.containsKey('organization')
+              ? _json['organization'] as core.String
+              : null,
+          postalCode: _json.containsKey('postalCode')
+              ? _json['postalCode'] as core.String
+              : null,
+          recipients: _json.containsKey('recipients')
+              ? (_json['recipients'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          regionCode: _json.containsKey('regionCode')
+              ? _json['regionCode'] as core.String
+              : null,
+          revision: _json.containsKey('revision')
+              ? _json['revision'] as core.int
+              : null,
+          sortingCode: _json.containsKey('sortingCode')
+              ? _json['sortingCode'] as core.String
+              : null,
+          sublocality: _json.containsKey('sublocality')
+              ? _json['sublocality'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (addressLines != null) 'addressLines': addressLines!,
+        if (administrativeArea != null)
+          'administrativeArea': administrativeArea!,
+        if (languageCode != null) 'languageCode': languageCode!,
+        if (locality != null) 'locality': locality!,
+        if (organization != null) 'organization': organization!,
+        if (postalCode != null) 'postalCode': postalCode!,
+        if (recipients != null) 'recipients': recipients!,
+        if (regionCode != null) 'regionCode': regionCode!,
+        if (revision != null) 'revision': revision!,
+        if (sortingCode != null) 'sortingCode': sortingCode!,
+        if (sublocality != null) 'sublocality': sublocality!,
+      };
+}
+
+/// Used by:
+///
+/// - mybusinessaccountmanagement:v1 : PostalAddress
+/// - mybusinessbusinessinformation:v1 : PostalAddress
+/// - mybusinessverifications:v1 : PostalAddress
+class $PostalAddress01 {
+  /// Unstructured address lines describing the lower levels of an address.
+  ///
+  /// Because values in address_lines do not have type information and may
+  /// sometimes contain multiple values in a single field (e.g. "Austin, TX"),
+  /// it is important that the line order is clear. The order of address lines
+  /// should be "envelope order" for the country/region of the address. In
+  /// places where this can vary (e.g. Japan), address_language is used to make
+  /// it explicit (e.g. "ja" for large-to-small ordering and "ja-Latn" or "en"
+  /// for small-to-large). This way, the most specific line of an address can be
+  /// selected based on the language. The minimum permitted structural
+  /// representation of an address consists of a region_code with all remaining
+  /// information placed in the address_lines. It would be possible to format
+  /// such an address very approximately without geocoding, but no semantic
+  /// reasoning could be made about any of the address components until it was
+  /// at least partially resolved. Creating an address only containing a
+  /// region_code and address_lines, and then geocoding is the recommended way
+  /// to handle completely unstructured addresses (as opposed to guessing which
+  /// parts of the address should be localities or administrative areas).
+  core.List<core.String>? addressLines;
+
+  /// Highest administrative subdivision which is used for postal addresses of a
+  /// country or region.
+  ///
+  /// For example, this can be a state, a province, an oblast, or a prefecture.
+  /// Specifically, for Spain this is the province and not the autonomous
+  /// community (e.g. "Barcelona" and not "Catalonia"). Many countries don't use
+  /// an administrative area in postal addresses. E.g. in Switzerland this
+  /// should be left unpopulated.
+  ///
+  /// Optional.
+  core.String? administrativeArea;
+
+  /// BCP-47 language code of the contents of this address (if known).
+  ///
+  /// This is often the UI language of the input form or is expected to match
+  /// one of the languages used in the address' country/region, or their
+  /// transliterated equivalents. This can affect formatting in certain
+  /// countries, but is not critical to the correctness of the data and will
+  /// never affect any validation or other non-formatting related operations. If
+  /// this value is not known, it should be omitted (rather than specifying a
+  /// possibly incorrect default). Examples: "zh-Hant", "ja", "ja-Latn", "en".
+  ///
+  /// Optional.
+  core.String? languageCode;
+
+  /// Generally refers to the city/town portion of the address.
+  ///
+  /// Examples: US city, IT comune, UK post town. In regions of the world where
+  /// localities are not well defined or do not fit into this structure well,
+  /// leave locality empty and use address_lines.
+  ///
+  /// Optional.
+  core.String? locality;
+
+  /// The name of the organization at the address.
+  ///
+  /// Optional.
+  core.String? organization;
+
+  /// Postal code of the address.
+  ///
+  /// Not all countries use or require postal codes to be present, but where
+  /// they are used, they may trigger additional validation with other parts of
+  /// the address (e.g. state/zip validation in the U.S.A.).
+  ///
+  /// Optional.
+  core.String? postalCode;
+
+  /// The recipient at the address.
+  ///
+  /// This field may, under certain circumstances, contain multiline
+  /// information. For example, it might contain "care of" information.
+  ///
+  /// Optional.
+  core.List<core.String>? recipients;
+
+  /// CLDR region code of the country/region of the address.
+  ///
+  /// This is never inferred and it is up to the user to ensure the value is
+  /// correct. See https://cldr.unicode.org/ and
+  /// https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
+  /// for details. Example: "CH" for Switzerland.
+  ///
+  /// Required.
+  core.String? regionCode;
+
+  /// The schema revision of the `PostalAddress`.
+  ///
+  /// This must be set to 0, which is the latest revision. All new revisions
+  /// **must** be backward compatible with old revisions.
+  core.int? revision;
+
+  /// Additional, country-specific, sorting code.
+  ///
+  /// This is not used in most regions. Where it is used, the value is either a
+  /// string like "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or
+  /// just a number alone, representing the "sector code" (Jamaica), "delivery
+  /// area indicator" (Malawi) or "post office indicator" (e.g. Côte d'Ivoire).
+  ///
+  /// Optional.
+  core.String? sortingCode;
+
+  /// Sublocality of the address.
+  ///
+  /// For example, this can be neighborhoods, boroughs, districts.
+  ///
+  /// Optional.
+  core.String? sublocality;
+
+  $PostalAddress01({
+    this.addressLines,
+    this.administrativeArea,
+    this.languageCode,
+    this.locality,
+    this.organization,
+    this.postalCode,
+    this.recipients,
+    this.regionCode,
+    this.revision,
+    this.sortingCode,
+    this.sublocality,
+  });
+
+  $PostalAddress01.fromJson(core.Map _json)
       : this(
           addressLines: _json.containsKey('addressLines')
               ? (_json['addressLines'] as core.List)
@@ -9461,9 +9773,11 @@
 /// - artifactregistry:v1 : Status
 /// - assuredworkloads:v1 : GoogleRpcStatus
 /// - baremetalsolution:v1 : Status
+/// - baremetalsolution:v2 : Status
 /// - bigquerydatatransfer:v1 : Status
 /// - bigqueryreservation:v1 : Status
 /// - bigtableadmin:v2 : Status
+/// - certificatemanager:v1 : Status
 /// - chromemanagement:v1 : GoogleRpcStatus
 /// - cloudasset:v1 : Status
 /// - cloudbuild:v1 : Status
@@ -9488,6 +9802,7 @@
 /// - datafusion:v1 : Status
 /// - datamigration:v1 : Status
 /// - datapipelines:v1 : GoogleRpcStatus
+/// - dataplex:v1 : GoogleRpcStatus
 /// - dataproc:v1 : Status
 /// - datastore:v1 : Status
 /// - datastream:v1 : Status
@@ -9526,6 +9841,7 @@
 /// - pubsublite:v1 : Status
 /// - redis:v1 : Status
 /// - retail:v2 : GoogleRpcStatus
+/// - run:v1 : GoogleRpcStatus
 /// - run:v2 : GoogleRpcStatus
 /// - runtimeconfig:v1 : Status
 /// - securitycenter:v1 : Status
@@ -10011,7 +10327,7 @@
 /// - servicedirectory:v1 : TestIamPermissionsRequest
 /// - servicemanagement:v1 : TestIamPermissionsRequest
 /// - sourcerepo:v1 : TestIamPermissionsRequest
-class $TestIamPermissionsRequest {
+class $TestIamPermissionsRequest00 {
   /// The set of permissions to check for the `resource`.
   ///
   /// Permissions with wildcards (such as '*' or 'storage.*') are not allowed.
@@ -10019,11 +10335,67 @@
   /// [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
   core.List<core.String>? permissions;
 
-  $TestIamPermissionsRequest({
+  $TestIamPermissionsRequest00({
     this.permissions,
   });
 
-  $TestIamPermissionsRequest.fromJson(core.Map _json)
+  $TestIamPermissionsRequest00.fromJson(core.Map _json)
+      : this(
+          permissions: _json.containsKey('permissions')
+              ? (_json['permissions'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (permissions != null) 'permissions': permissions!,
+      };
+}
+
+/// Used by:
+///
+/// - dataplex:v1 : GoogleIamV1TestIamPermissionsRequest
+/// - dataproc:v1 : TestIamPermissionsRequest
+class $TestIamPermissionsRequest01 {
+  /// The set of permissions to check for the resource.
+  ///
+  /// Permissions with wildcards (such as '*' or 'storage.*') are not allowed.
+  /// For more information see IAM Overview
+  /// (https://cloud.google.com/iam/docs/overview#permissions).
+  core.List<core.String>? permissions;
+
+  $TestIamPermissionsRequest01({
+    this.permissions,
+  });
+
+  $TestIamPermissionsRequest01.fromJson(core.Map _json)
+      : this(
+          permissions: _json.containsKey('permissions')
+              ? (_json['permissions'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (permissions != null) 'permissions': permissions!,
+      };
+}
+
+/// Used by:
+///
+/// - dataplex:v1 : GoogleIamV1TestIamPermissionsResponse
+/// - dataproc:v1 : TestIamPermissionsResponse
+class $TestIamPermissionsResponse {
+  /// A subset of TestPermissionsRequest.permissions that the caller is allowed.
+  core.List<core.String>? permissions;
+
+  $TestIamPermissionsResponse({
+    this.permissions,
+  });
+
+  $TestIamPermissionsResponse.fromJson(core.Map _json)
       : this(
           permissions: _json.containsKey('permissions')
               ? (_json['permissions'] as core.List)
diff --git a/generated/googleapis/lib/sourcerepo/v1.dart b/generated/googleapis/lib/sourcerepo/v1.dart
index 84fa555..7e1e169 100644
--- a/generated/googleapis/lib/sourcerepo/v1.dart
+++ b/generated/googleapis/lib/sourcerepo/v1.dart
@@ -1218,7 +1218,7 @@
 typedef SyncRepoRequest = $Empty;
 
 /// Request message for `TestIamPermissions` method.
-typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest00;
 
 /// Response message for `TestIamPermissions` method.
 typedef TestIamPermissionsResponse = $PermissionsResponse;
diff --git a/generated/googleapis/lib/spanner/v1.dart b/generated/googleapis/lib/spanner/v1.dart
index bdd9d99..f643b1f 100644
--- a/generated/googleapis/lib/spanner/v1.dart
+++ b/generated/googleapis/lib/spanner/v1.dart
@@ -645,13 +645,17 @@
   /// the type of metadata. For example, the type string for
   /// CreateBackupMetadata is
   /// `type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata`.
-  /// * `metadata.` - any field in metadata.value. * `error` - Error associated
+  /// * `metadata.` - any field in metadata.value. `metadata.type_url` must be
+  /// specified if filtering on metadata fields. * `error` - Error associated
   /// with the long-running operation. * `response.@type` - the type of
   /// response. * `response.` - any field in response.value. You can combine
   /// multiple expressions by enclosing each expression in parentheses. By
   /// default, expressions are combined with AND logic, but you can specify AND,
   /// OR, and NOT logic explicitly. Here are a few examples: * `done:true` - The
-  /// operation is complete. * `metadata.database:prod` - The database the
+  /// operation is complete. *
+  /// `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata)
+  /// AND` \ `metadata.database:prod` - Returns operations where: * The
+  /// operation's metadata type is CreateBackupMetadata. * The database the
   /// backup was taken from has a name containing the string "prod". *
   /// `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata)
   /// AND` \ `(metadata.name:howl) AND` \ `(metadata.progress.start_time <
@@ -3170,6 +3174,16 @@
   /// `projects//instances//databases/`.
   core.String? database;
 
+  /// The database dialect information for the backup.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "DATABASE_DIALECT_UNSPECIFIED" : Default value. This value will create a
+  /// database with the GOOGLE_STANDARD_SQL dialect.
+  /// - "GOOGLE_STANDARD_SQL" : Google standard SQL.
+  /// - "POSTGRESQL" : PostgreSQL supported SQL.
+  core.String? databaseDialect;
+
   /// The encryption information for the backup.
   ///
   /// Output only.
@@ -3231,6 +3245,7 @@
   Backup({
     this.createTime,
     this.database,
+    this.databaseDialect,
     this.encryptionInfo,
     this.expireTime,
     this.name,
@@ -3248,6 +3263,9 @@
           database: _json.containsKey('database')
               ? _json['database'] as core.String
               : null,
+          databaseDialect: _json.containsKey('databaseDialect')
+              ? _json['databaseDialect'] as core.String
+              : null,
           encryptionInfo: _json.containsKey('encryptionInfo')
               ? EncryptionInfo.fromJson(_json['encryptionInfo']
                   as core.Map<core.String, core.dynamic>)
@@ -3274,6 +3292,7 @@
   core.Map<core.String, core.dynamic> toJson() => {
         if (createTime != null) 'createTime': createTime!,
         if (database != null) 'database': database!,
+        if (databaseDialect != null) 'databaseDialect': databaseDialect!,
         if (encryptionInfo != null) 'encryptionInfo': encryptionInfo!,
         if (expireTime != null) 'expireTime': expireTime!,
         if (name != null) 'name': name!,
@@ -3763,6 +3782,16 @@
   /// Required.
   core.String? createStatement;
 
+  /// The dialect of the Cloud Spanner Database.
+  ///
+  /// Optional.
+  /// Possible string values are:
+  /// - "DATABASE_DIALECT_UNSPECIFIED" : Default value. This value will create a
+  /// database with the GOOGLE_STANDARD_SQL dialect.
+  /// - "GOOGLE_STANDARD_SQL" : Google standard SQL.
+  /// - "POSTGRESQL" : PostgreSQL supported SQL.
+  core.String? databaseDialect;
+
   /// The encryption configuration for the database.
   ///
   /// If this field is not specified, Cloud Spanner will encrypt/decrypt all
@@ -3782,6 +3811,7 @@
 
   CreateDatabaseRequest({
     this.createStatement,
+    this.databaseDialect,
     this.encryptionConfig,
     this.extraStatements,
   });
@@ -3791,6 +3821,9 @@
           createStatement: _json.containsKey('createStatement')
               ? _json['createStatement'] as core.String
               : null,
+          databaseDialect: _json.containsKey('databaseDialect')
+              ? _json['databaseDialect'] as core.String
+              : null,
           encryptionConfig: _json.containsKey('encryptionConfig')
               ? EncryptionConfig.fromJson(_json['encryptionConfig']
                   as core.Map<core.String, core.dynamic>)
@@ -3804,6 +3837,7 @@
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (createStatement != null) 'createStatement': createStatement!,
+        if (databaseDialect != null) 'databaseDialect': databaseDialect!,
         if (encryptionConfig != null) 'encryptionConfig': encryptionConfig!,
         if (extraStatements != null) 'extraStatements': extraStatements!,
       };
@@ -3879,6 +3913,16 @@
   /// Output only.
   core.String? createTime;
 
+  /// The dialect of the Cloud Spanner Database.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "DATABASE_DIALECT_UNSPECIFIED" : Default value. This value will create a
+  /// database with the GOOGLE_STANDARD_SQL dialect.
+  /// - "GOOGLE_STANDARD_SQL" : Google standard SQL.
+  /// - "POSTGRESQL" : PostgreSQL supported SQL.
+  core.String? databaseDialect;
+
   /// The read-write region which contains the database's leader replicas.
   ///
   /// This is the same as the value of default_leader database option set using
@@ -3962,6 +4006,7 @@
 
   Database({
     this.createTime,
+    this.databaseDialect,
     this.defaultLeader,
     this.earliestVersionTime,
     this.encryptionConfig,
@@ -3977,6 +4022,9 @@
           createTime: _json.containsKey('createTime')
               ? _json['createTime'] as core.String
               : null,
+          databaseDialect: _json.containsKey('databaseDialect')
+              ? _json['databaseDialect'] as core.String
+              : null,
           defaultLeader: _json.containsKey('defaultLeader')
               ? _json['defaultLeader'] as core.String
               : null,
@@ -4007,6 +4055,7 @@
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (createTime != null) 'createTime': createTime!,
+        if (databaseDialect != null) 'databaseDialect': databaseDialect!,
         if (defaultLeader != null) 'defaultLeader': defaultLeader!,
         if (earliestVersionTime != null)
           'earliestVersionTime': earliestVersionTime!,
@@ -5202,12 +5251,12 @@
 
   /// The list of matching backup long-running operations.
   ///
-  /// Each operation's name will be prefixed by the backup's name and the
-  /// operation's metadata will be of type CreateBackupMetadata. Operations
-  /// returned include those that are pending or have completed/failed/canceled
-  /// within the last 7 days. Operations returned are ordered by
-  /// `operation.metadata.value.progress.start_time` in descending order
-  /// starting from the most recently started operation.
+  /// Each operation's name will be prefixed by the backup's name. The
+  /// operation's metadata field type `metadata.type_url` describes the type of
+  /// the metadata. Operations returned include those that are pending or have
+  /// completed/failed/canceled within the last 7 days. Operations returned are
+  /// ordered by `operation.metadata.value.progress.start_time` in descending
+  /// order starting from the most recently started operation.
   core.List<Operation>? operations;
 
   ListBackupOperationsResponse({
@@ -8040,10 +8089,28 @@
   /// struct's fields.
   StructType? structType;
 
+  /// The TypeAnnotationCode that disambiguates SQL type that Spanner will use
+  /// to represent values of this type during query processing.
+  ///
+  /// This is necessary for some type codes because a single TypeCode can be
+  /// mapped to different SQL types depending on the SQL dialect.
+  /// type_annotation typically is not needed to process the content of a value
+  /// (it doesn't affect serialization) and clients can ignore it on the read
+  /// path.
+  /// Possible string values are:
+  /// - "TYPE_ANNOTATION_CODE_UNSPECIFIED" : Not specified.
+  /// - "PG_NUMERIC" : PostgreSQL compatible NUMERIC type. This annotation needs
+  /// to be applied to Type instances having NUMERIC type code to specify that
+  /// values of this type should be treated as PostgreSQL NUMERIC values.
+  /// Currently this annotation is always needed for NUMERIC when a client
+  /// interacts with PostgreSQL-enabled Spanner databases.
+  core.String? typeAnnotation;
+
   Type({
     this.arrayElementType,
     this.code,
     this.structType,
+    this.typeAnnotation,
   });
 
   Type.fromJson(core.Map _json)
@@ -8057,12 +8124,16 @@
               ? StructType.fromJson(
                   _json['structType'] as core.Map<core.String, core.dynamic>)
               : null,
+          typeAnnotation: _json.containsKey('typeAnnotation')
+              ? _json['typeAnnotation'] as core.String
+              : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
         if (arrayElementType != null) 'arrayElementType': arrayElementType!,
         if (code != null) 'code': code!,
         if (structType != null) 'structType': structType!,
+        if (typeAnnotation != null) 'typeAnnotation': typeAnnotation!,
       };
 }
 
diff --git a/generated/googleapis/lib/speech/v1.dart b/generated/googleapis/lib/speech/v1.dart
index b5ebda9..cf70d9d 100644
--- a/generated/googleapis/lib/speech/v1.dart
+++ b/generated/googleapis/lib/speech/v1.dart
@@ -1442,6 +1442,9 @@
   /// costs more than the standard rate. default Best for audio that is not one
   /// of the specific audio models. For example, long-form audio. Ideally the
   /// audio is high-fidelity, recorded at a 16khz or greater sampling rate.
+  /// medical_conversation Best for audio that originated from a conversation
+  /// between a medical provider and patient. medical_dictation Best for audio
+  /// that originated from dictation notes by a medical provider.
   core.String? model;
 
   /// If set to `true`, the server will attempt to filter out profanities,
diff --git a/generated/googleapis/lib/src/user_agent.dart b/generated/googleapis/lib/src/user_agent.dart
index 85caedc..2a5da81 100644
--- a/generated/googleapis/lib/src/user_agent.dart
+++ b/generated/googleapis/lib/src/user_agent.dart
@@ -2,6 +2,6 @@
 
 /// Request headers used by all libraries in this package
 final requestHeaders = {
-  'user-agent': 'google-api-dart-client/8.0.0-dev',
-  'x-goog-api-client': 'gl-dart/${commons.dartVersion} gdcl/8.0.0-dev',
+  'user-agent': 'google-api-dart-client/8.0.0',
+  'x-goog-api-client': 'gl-dart/${commons.dartVersion} gdcl/8.0.0',
 };
diff --git a/generated/googleapis/lib/storagetransfer/v1.dart b/generated/googleapis/lib/storagetransfer/v1.dart
index b163582..3e1075e 100644
--- a/generated/googleapis/lib/storagetransfer/v1.dart
+++ b/generated/googleapis/lib/storagetransfer/v1.dart
@@ -541,7 +541,7 @@
   /// Attempts to start a new TransferOperation for the current TransferJob.
   ///
   /// A TransferJob has a maximum of one active TransferOperation. If this
-  /// method is called while a TransferOperation is active, an error wil be
+  /// method is called while a TransferOperation is active, an error will be
   /// returned.
   ///
   /// [request] - The metadata request object.
@@ -1114,10 +1114,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// A generic empty message that you can re-use to avoid defining duplicated
@@ -1402,70 +1402,149 @@
 }
 
 /// Specifies the metadata options for running a transfer.
+///
+/// These options only apply to transfers involving a POSIX filesystem and are
+/// ignored for other transfers.
 class MetadataOptions {
-  /// Specifies how each file's GID attribute should be handled by the transfer.
+  /// Specifies how each object's ACLs should be preserved for transfers between
+  /// Google Cloud Storage buckets.
   ///
-  /// If unspecified, the default behavior is the same as GID_SKIP when the
-  /// source is a POSIX file system.
+  /// If unspecified, the default behavior is the same as
+  /// ACL_DESTINATION_BUCKET_DEFAULT.
+  /// Possible string values are:
+  /// - "ACL_UNSPECIFIED" : ACL behavior is unspecified.
+  /// - "ACL_DESTINATION_BUCKET_DEFAULT" : Use the destination bucket's default
+  /// object ACLS, if applicable.
+  /// - "ACL_PRESERVE" : Preserve the object's original ACLs. This requires the
+  /// service account to have `storage.objects.getIamPolicy` permission for the
+  /// source object. \[Uniform bucket-level
+  /// access\](https://cloud.google.com/storage/docs/uniform-bucket-level-access)
+  /// must not be enabled on either the source or destination buckets.
+  core.String? acl;
+
+  /// Specifies how each file's POSIX group ID (GID) attribute should be handled
+  /// by the transfer.
+  ///
+  /// By default, GID is not preserved.
   /// Possible string values are:
   /// - "GID_UNSPECIFIED" : GID behavior is unspecified.
-  /// - "GID_SKIP" : Skip GID during a transfer job.
+  /// - "GID_SKIP" : Do not preserve GID during a transfer job.
   /// - "GID_NUMBER" : Preserve GID during a transfer job.
   core.String? gid;
 
+  /// Specifies how each object's Cloud KMS customer-managed encryption key
+  /// (CMEK) is preserved for transfers between Google Cloud Storage buckets.
+  ///
+  /// If unspecified, the default behavior is the same as
+  /// KMS_KEY_DESTINATION_BUCKET_DEFAULT.
+  /// Possible string values are:
+  /// - "KMS_KEY_UNSPECIFIED" : KmsKey behavior is unspecified.
+  /// - "KMS_KEY_DESTINATION_BUCKET_DEFAULT" : Use the destination bucket's
+  /// default encryption settings.
+  /// - "KMS_KEY_PRESERVE" : Preserve the object's original Cloud KMS
+  /// customer-managed encryption key (CMEK) if present. Objects that do not use
+  /// a Cloud KMS encryption key will be encrypted using the destination
+  /// bucket's encryption settings.
+  core.String? kmsKey;
+
   /// Specifies how each file's mode attribute should be handled by the
   /// transfer.
   ///
-  /// If unspecified, the default behavior is the same as MODE_SKIP when the
-  /// source is a POSIX file system.
+  /// By default, mode is not preserved.
   /// Possible string values are:
   /// - "MODE_UNSPECIFIED" : Mode behavior is unspecified.
-  /// - "MODE_SKIP" : Skip mode during a transfer job.
+  /// - "MODE_SKIP" : Do not preserve mode during a transfer job.
   /// - "MODE_PRESERVE" : Preserve mode during a transfer job.
   core.String? mode;
 
+  /// Specifies the storage class to set on objects being transferred to Google
+  /// Cloud Storage buckets.
+  ///
+  /// If unspecified, the default behavior is the same as
+  /// STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT.
+  /// Possible string values are:
+  /// - "STORAGE_CLASS_UNSPECIFIED" : Storage class behavior is unspecified.
+  /// - "STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT" : Use the destination
+  /// bucket's default storage class.
+  /// - "STORAGE_CLASS_PRESERVE" : Preserve the object's original storage class.
+  /// This is only supported for transfers from Google Cloud Storage buckets.
+  /// - "STORAGE_CLASS_STANDARD" : Set the storage class to STANDARD.
+  /// - "STORAGE_CLASS_NEARLINE" : Set the storage class to NEARLINE.
+  /// - "STORAGE_CLASS_COLDLINE" : Set the storage class to COLDLINE.
+  /// - "STORAGE_CLASS_ARCHIVE" : Set the storage class to ARCHIVE.
+  core.String? storageClass;
+
   /// Specifies how symlinks should be handled by the transfer.
   ///
-  /// If unspecified, the default behavior is the same as SYMLINK_SKIP when the
-  /// source is a POSIX file system.
+  /// By default, symlinks are not preserved.
   /// Possible string values are:
-  /// - "SYMLINK_UNSPECIFIED" : Symlink behavior is unspecified. The default
-  /// behavior is to skip symlinks during a transfer job.
-  /// - "SYMLINK_SKIP" : Skip symlinks during a transfer job.
+  /// - "SYMLINK_UNSPECIFIED" : Symlink behavior is unspecified.
+  /// - "SYMLINK_SKIP" : Do not preserve symlinks during a transfer job.
   /// - "SYMLINK_PRESERVE" : Preserve symlinks during a transfer job.
   core.String? symlink;
 
-  /// Specifies how each file's UID attribute should be handled by the transfer.
+  /// Specifies how each object's temporary hold status should be preserved for
+  /// transfers between Google Cloud Storage buckets.
   ///
-  /// If unspecified, the default behavior is the same as UID_SKIP when the
-  /// source is a POSIX file system.
+  /// If unspecified, the default behavior is the same as
+  /// TEMPORARY_HOLD_PRESERVE.
+  /// Possible string values are:
+  /// - "TEMPORARY_HOLD_UNSPECIFIED" : Temporary hold behavior is unspecified.
+  /// - "TEMPORARY_HOLD_SKIP" : Do not set a temporary hold on the destination
+  /// object.
+  /// - "TEMPORARY_HOLD_PRESERVE" : Preserve the object's original temporary
+  /// hold status.
+  core.String? temporaryHold;
+
+  /// Specifies how each file's POSIX user ID (UID) attribute should be handled
+  /// by the transfer.
+  ///
+  /// By default, UID is not preserved.
   /// Possible string values are:
   /// - "UID_UNSPECIFIED" : UID behavior is unspecified.
-  /// - "UID_SKIP" : Skip UID during a transfer job.
+  /// - "UID_SKIP" : Do not preserve UID during a transfer job.
   /// - "UID_NUMBER" : Preserve UID during a transfer job.
   core.String? uid;
 
   MetadataOptions({
+    this.acl,
     this.gid,
+    this.kmsKey,
     this.mode,
+    this.storageClass,
     this.symlink,
+    this.temporaryHold,
     this.uid,
   });
 
   MetadataOptions.fromJson(core.Map _json)
       : this(
+          acl: _json.containsKey('acl') ? _json['acl'] as core.String : null,
           gid: _json.containsKey('gid') ? _json['gid'] as core.String : null,
+          kmsKey: _json.containsKey('kmsKey')
+              ? _json['kmsKey'] as core.String
+              : null,
           mode: _json.containsKey('mode') ? _json['mode'] as core.String : null,
+          storageClass: _json.containsKey('storageClass')
+              ? _json['storageClass'] as core.String
+              : null,
           symlink: _json.containsKey('symlink')
               ? _json['symlink'] as core.String
               : null,
+          temporaryHold: _json.containsKey('temporaryHold')
+              ? _json['temporaryHold'] as core.String
+              : null,
           uid: _json.containsKey('uid') ? _json['uid'] as core.String : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (acl != null) 'acl': acl!,
         if (gid != null) 'gid': gid!,
+        if (kmsKey != null) 'kmsKey': kmsKey!,
         if (mode != null) 'mode': mode!,
+        if (storageClass != null) 'storageClass': storageClass!,
         if (symlink != null) 'symlink': symlink!,
+        if (temporaryHold != null) 'temporaryHold': temporaryHold!,
         if (uid != null) 'uid': uid!,
       };
 }
@@ -2111,6 +2190,8 @@
   core.bool? deleteObjectsUniqueInSink;
 
   /// Represents the selected metadata options for a transfer job.
+  ///
+  /// This feature is in Preview.
   MetadataOptions? metadataOptions;
 
   /// When to overwrite objects that already exist in the sink.
diff --git a/generated/googleapis/lib/testing/v1.dart b/generated/googleapis/lib/testing/v1.dart
index 1d92fce..fc2852c 100644
--- a/generated/googleapis/lib/testing/v1.dart
+++ b/generated/googleapis/lib/testing/v1.dart
@@ -1434,10 +1434,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// A single device file description.
@@ -3939,7 +3939,9 @@
 /// Uniformly shards test cases given a total number of shards.
 ///
 /// For Instrumentation test, it will be translated to "-e numShard" "-e
-/// shardIndex" AndroidJUnitRunner arguments. With uniform sharding enabled,
+/// shardIndex" AndroidJUnitRunner arguments. Based on the sharding mechanism
+/// AndroidJUnitRunner uses, there is no guarantee that test cases will be
+/// distributed uniformly across all shards. With uniform sharding enabled,
 /// specifying these sharding arguments via environment_variables is invalid.
 class UniformSharding {
   /// Total number of shards.
diff --git a/generated/googleapis/lib/transcoder/v1.dart b/generated/googleapis/lib/transcoder/v1.dart
index 3efd6dd..05b6e49 100644
--- a/generated/googleapis/lib/transcoder/v1.dart
+++ b/generated/googleapis/lib/transcoder/v1.dart
@@ -2763,7 +2763,8 @@
   /// Target CRF level.
   ///
   /// Must be between 10 and 36, where 10 is the highest quality and 36 is the
-  /// most efficient compression. The default is 21.
+  /// most efficient compression. The default is 21. *Note*: This field is not
+  /// supported.
   core.int? crfLevel;
 
   /// The target video frame rate in frames per second (FPS).
@@ -2819,7 +2820,7 @@
   /// Specify the `rate_control_mode`.
   ///
   /// The default is `vbr`. Supported rate control modes: - `vbr` - variable
-  /// bitrate - `crf` - constant rate factor
+  /// bitrate
   core.String? rateControlMode;
 
   /// The width of the video in pixels.
diff --git a/generated/googleapis/lib/vmmigration/v1.dart b/generated/googleapis/lib/vmmigration/v1.dart
index 5918aa1..c3dfa69 100644
--- a/generated/googleapis/lib/vmmigration/v1.dart
+++ b/generated/googleapis/lib/vmmigration/v1.dart
@@ -433,7 +433,7 @@
   ///
   /// Request parameters:
   ///
-  /// [name] - The Group name.
+  /// [name] - Output only. The Group name.
   /// Value must have pattern
   /// `^projects/\[^/\]+/locations/\[^/\]+/groups/\[^/\]+$`.
   ///
@@ -1271,6 +1271,50 @@
     return ListDatacenterConnectorsResponse.fromJson(
         _response as core.Map<core.String, core.dynamic>);
   }
+
+  /// Upgrades the appliance relate to this DatacenterConnector to the in-place
+  /// updateable version.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [datacenterConnector] - Required. The DatacenterConnector name.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/sources/\[^/\]+/datacenterConnectors/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> upgradeAppliance(
+    UpgradeApplianceRequest request,
+    core.String datacenterConnector, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1/' +
+        core.Uri.encodeFull('$datacenterConnector') +
+        ':upgradeAppliance';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
 }
 
 class ProjectsLocationsSourcesMigratingVmsResource {
@@ -2625,7 +2669,7 @@
   ///
   /// Request parameters:
   ///
-  /// [name] - The name of the target project.
+  /// [name] - Output only. The name of the target project.
   /// Value must have pattern
   /// `^projects/\[^/\]+/locations/\[^/\]+/targetProjects/\[^/\]+$`.
   ///
@@ -2704,6 +2748,49 @@
       };
 }
 
+/// Describes an appliance version.
+class ApplianceVersion {
+  /// Determine whether it's critical to upgrade the appliance to this version.
+  core.bool? critical;
+
+  /// Link to a page that contains the version release notes.
+  core.String? releaseNotesUri;
+
+  /// A link for downloading the version.
+  core.String? uri;
+
+  /// The appliance version.
+  core.String? version;
+
+  ApplianceVersion({
+    this.critical,
+    this.releaseNotesUri,
+    this.uri,
+    this.version,
+  });
+
+  ApplianceVersion.fromJson(core.Map _json)
+      : this(
+          critical: _json.containsKey('critical')
+              ? _json['critical'] as core.bool
+              : null,
+          releaseNotesUri: _json.containsKey('releaseNotesUri')
+              ? _json['releaseNotesUri'] as core.String
+              : null,
+          uri: _json.containsKey('uri') ? _json['uri'] as core.String : null,
+          version: _json.containsKey('version')
+              ? _json['version'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (critical != null) 'critical': critical!,
+        if (releaseNotesUri != null) 'releaseNotesUri': releaseNotesUri!,
+        if (uri != null) 'uri': uri!,
+        if (version != null) 'version': version!,
+      };
+}
+
 /// AppliedLicense holds the license data returned by adaptation module report.
 class AppliedLicense {
   /// The OS license returned from the adaptation module's report.
@@ -2736,6 +2823,44 @@
       };
 }
 
+/// Holds informatiom about the available versions for upgrade.
+class AvailableUpdates {
+  /// The latest version for in place update.
+  ///
+  /// The current appliance can be updated to this version using the API or m4c
+  /// CLI.
+  ApplianceVersion? inPlaceUpdate;
+
+  /// The newest deployable version of the appliance.
+  ///
+  /// The current appliance can't be updated into this version, and the owner
+  /// must manually deploy this OVA to a new appliance.
+  ApplianceVersion? newDeployableAppliance;
+
+  AvailableUpdates({
+    this.inPlaceUpdate,
+    this.newDeployableAppliance,
+  });
+
+  AvailableUpdates.fromJson(core.Map _json)
+      : this(
+          inPlaceUpdate: _json.containsKey('inPlaceUpdate')
+              ? ApplianceVersion.fromJson(
+                  _json['inPlaceUpdate'] as core.Map<core.String, core.dynamic>)
+              : null,
+          newDeployableAppliance: _json.containsKey('newDeployableAppliance')
+              ? ApplianceVersion.fromJson(_json['newDeployableAppliance']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (inPlaceUpdate != null) 'inPlaceUpdate': inPlaceUpdate!,
+        if (newDeployableAppliance != null)
+          'newDeployableAppliance': newDeployableAppliance!,
+      };
+}
+
 /// Request message for 'CancelCloneJob' request.
 typedef CancelCloneJobRequest = $Empty;
 
@@ -2773,6 +2898,8 @@
   Status? error;
 
   /// The name of the clone.
+  ///
+  /// Output only.
   core.String? name;
 
   /// State of the clone job.
@@ -3408,6 +3535,28 @@
 /// user) to connect the Datacenter to GCP and support vm migration data
 /// transfer.
 class DatacenterConnector {
+  /// Appliance OVA version.
+  ///
+  /// This is the OVA which is manually installed by the user and contains the
+  /// infrastructure for the automatically updatable components on the
+  /// appliance.
+  ///
+  /// Output only.
+  core.String? applianceInfrastructureVersion;
+
+  /// Appliance last installed update bundle version.
+  ///
+  /// This is the version of the automatically updatable components on the
+  /// appliance.
+  ///
+  /// Output only.
+  core.String? applianceSoftwareVersion;
+
+  /// The available versions for updating this appliance.
+  ///
+  /// Output only.
+  AvailableUpdates? availableVersions;
+
   /// The communication channel between the datacenter connector and GCP.
   ///
   /// Output only.
@@ -3467,6 +3616,11 @@
   /// Output only.
   core.String? updateTime;
 
+  /// The status of the current / last upgradeAppliance operation.
+  ///
+  /// Output only.
+  UpgradeStatus? upgradeStatus;
+
   /// The version running in the DatacenterConnector.
   ///
   /// This is supplied by the OVA connector during the registration process and
@@ -3474,6 +3628,9 @@
   core.String? version;
 
   DatacenterConnector({
+    this.applianceInfrastructureVersion,
+    this.applianceSoftwareVersion,
+    this.availableVersions,
     this.bucket,
     this.createTime,
     this.error,
@@ -3483,11 +3640,24 @@
     this.state,
     this.stateTime,
     this.updateTime,
+    this.upgradeStatus,
     this.version,
   });
 
   DatacenterConnector.fromJson(core.Map _json)
       : this(
+          applianceInfrastructureVersion:
+              _json.containsKey('applianceInfrastructureVersion')
+                  ? _json['applianceInfrastructureVersion'] as core.String
+                  : null,
+          applianceSoftwareVersion:
+              _json.containsKey('applianceSoftwareVersion')
+                  ? _json['applianceSoftwareVersion'] as core.String
+                  : null,
+          availableVersions: _json.containsKey('availableVersions')
+              ? AvailableUpdates.fromJson(_json['availableVersions']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
           bucket: _json.containsKey('bucket')
               ? _json['bucket'] as core.String
               : null,
@@ -3513,12 +3683,21 @@
           updateTime: _json.containsKey('updateTime')
               ? _json['updateTime'] as core.String
               : null,
+          upgradeStatus: _json.containsKey('upgradeStatus')
+              ? UpgradeStatus.fromJson(
+                  _json['upgradeStatus'] as core.Map<core.String, core.dynamic>)
+              : null,
           version: _json.containsKey('version')
               ? _json['version'] as core.String
               : null,
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (applianceInfrastructureVersion != null)
+          'applianceInfrastructureVersion': applianceInfrastructureVersion!,
+        if (applianceSoftwareVersion != null)
+          'applianceSoftwareVersion': applianceSoftwareVersion!,
+        if (availableVersions != null) 'availableVersions': availableVersions!,
         if (bucket != null) 'bucket': bucket!,
         if (createTime != null) 'createTime': createTime!,
         if (error != null) 'error': error!,
@@ -3528,6 +3707,7 @@
         if (state != null) 'state': state!,
         if (stateTime != null) 'stateTime': stateTime!,
         if (updateTime != null) 'updateTime': updateTime!,
+        if (upgradeStatus != null) 'upgradeStatus': upgradeStatus!,
         if (version != null) 'version': version!,
       };
 }
@@ -3550,8 +3730,6 @@
   core.String? updateTime;
 
   /// The description of the VMs in a Source of type Vmware.
-  ///
-  /// Output only.
   VmwareVmsDetails? vmwareVms;
 
   FetchInventoryResponse({
@@ -3595,6 +3773,8 @@
   core.String? displayName;
 
   /// The Group name.
+  ///
+  /// Output only.
   core.String? name;
 
   /// The update time timestamp.
@@ -4714,6 +4894,8 @@
   core.String? description;
 
   /// The name of the target project.
+  ///
+  /// Output only.
   core.String? name;
 
   /// The target project ID (number) or project name.
@@ -4758,6 +4940,98 @@
       };
 }
 
+/// Request message for 'UpgradeAppliance' request.
+class UpgradeApplianceRequest {
+  /// A request ID to identify requests.
+  ///
+  /// Specify a unique request ID so that if you must retry your request, the
+  /// server will know to ignore the request if it has already been completed.
+  /// The server will guarantee that for at least 60 minutes after the first
+  /// request. For example, consider a situation where you make an initial
+  /// request and t he request times out. If you make the request again with the
+  /// same request ID, the server can check if original operation with the same
+  /// request ID was received, and if so, will ignore the second request. This
+  /// prevents clients from accidentally creating duplicate commitments. The
+  /// request ID must be a valid UUID with the exception that zero UUID is not
+  /// supported (00000000-0000-0000-0000-000000000000).
+  core.String? requestId;
+
+  UpgradeApplianceRequest({
+    this.requestId,
+  });
+
+  UpgradeApplianceRequest.fromJson(core.Map _json)
+      : this(
+          requestId: _json.containsKey('requestId')
+              ? _json['requestId'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (requestId != null) 'requestId': requestId!,
+      };
+}
+
+/// UpgradeStatus contains information about upgradeAppliance operation.
+class UpgradeStatus {
+  /// Provides details on the state of the upgrade operation in case of an
+  /// error.
+  Status? error;
+
+  /// The version from which we upgraded.
+  core.String? previousVersion;
+
+  /// The time the operation was started.
+  core.String? startTime;
+
+  /// The state of the upgradeAppliance operation.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The state was not sampled by the health checks
+  /// yet.
+  /// - "RUNNING" : The upgrade has started.
+  /// - "FAILED" : The upgrade failed.
+  /// - "SUCCEEDED" : The upgrade finished successfully.
+  core.String? state;
+
+  /// The version to upgrade to.
+  core.String? version;
+
+  UpgradeStatus({
+    this.error,
+    this.previousVersion,
+    this.startTime,
+    this.state,
+    this.version,
+  });
+
+  UpgradeStatus.fromJson(core.Map _json)
+      : this(
+          error: _json.containsKey('error')
+              ? Status.fromJson(
+                  _json['error'] as core.Map<core.String, core.dynamic>)
+              : null,
+          previousVersion: _json.containsKey('previousVersion')
+              ? _json['previousVersion'] as core.String
+              : null,
+          startTime: _json.containsKey('startTime')
+              ? _json['startTime'] as core.String
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          version: _json.containsKey('version')
+              ? _json['version'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (error != null) 'error': error!,
+        if (previousVersion != null) 'previousVersion': previousVersion!,
+        if (startTime != null) 'startTime': startTime!,
+        if (state != null) 'state': state!,
+        if (version != null) 'version': version!,
+      };
+}
+
 /// Utilization report details the utilization (CPU, memory, etc.) of selected
 /// source VMs.
 class UtilizationReport {
@@ -5092,7 +5366,7 @@
   /// The VM's OS.
   ///
   /// See for example
-  /// https://pubs.vmware.com/vi-sdk/visdk250/ReferenceGuide/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html
+  /// https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html
   /// for types of strings this might hold.
   core.String? guestDescription;
 
diff --git a/generated/googleapis/pubspec.yaml b/generated/googleapis/pubspec.yaml
index 8d90013..e34f72d 100644
--- a/generated/googleapis/pubspec.yaml
+++ b/generated/googleapis/pubspec.yaml
@@ -1,5 +1,5 @@
 name: googleapis
-version: 8.0.0-dev
+version: 8.0.0
 description: Auto-generated client libraries for accessing Google APIs described through the API discovery service.
 repository: https://github.com/google/googleapis.dart/tree/master/generated/googleapis
 environment:
diff --git a/generated/googleapis/test/admin/directory_v1_test.dart b/generated/googleapis/test/admin/directory_v1_test.dart
index 3e2f909..d6e30ec 100644
--- a/generated/googleapis/test/admin/directory_v1_test.dart
+++ b/generated/googleapis/test/admin/directory_v1_test.dart
@@ -6960,6 +6960,7 @@
       final res = api.DirectoryApi(mock).customers.chrome.printers;
       final arg_parent = 'foo';
       final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
       final arg_orgUnitId = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
@@ -7001,6 +7002,10 @@
           unittest.equals(arg_filter),
         );
         unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
           queryMap['orgUnitId']!.first,
           unittest.equals(arg_orgUnitId),
         );
@@ -7025,6 +7030,7 @@
       }), true);
       final response = await res.list(arg_parent,
           filter: arg_filter,
+          orderBy: arg_orderBy,
           orgUnitId: arg_orgUnitId,
           pageSize: arg_pageSize,
           pageToken: arg_pageToken,
diff --git a/generated/googleapis/test/apigee/v1_test.dart b/generated/googleapis/test/apigee/v1_test.dart
index 81405a7..2967ef4 100644
--- a/generated/googleapis/test/apigee/v1_test.dart
+++ b/generated/googleapis/test/apigee/v1_test.dart
@@ -2461,6 +2461,7 @@
   buildCounterGoogleCloudApigeeV1DebugSession++;
   if (buildCounterGoogleCloudApigeeV1DebugSession < 3) {
     o.count = 42;
+    o.createTime = 'foo';
     o.filter = 'foo';
     o.name = 'foo';
     o.timeout = 'foo';
@@ -2480,6 +2481,10 @@
       unittest.equals(42),
     );
     unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.filter!,
       unittest.equals('foo'),
     );
@@ -3446,6 +3451,45 @@
   buildCounterGoogleCloudApigeeV1DimensionMetric--;
 }
 
+core.int buildCounterGoogleCloudApigeeV1EndpointAttachment = 0;
+api.GoogleCloudApigeeV1EndpointAttachment
+    buildGoogleCloudApigeeV1EndpointAttachment() {
+  final o = api.GoogleCloudApigeeV1EndpointAttachment();
+  buildCounterGoogleCloudApigeeV1EndpointAttachment++;
+  if (buildCounterGoogleCloudApigeeV1EndpointAttachment < 3) {
+    o.host = 'foo';
+    o.location = 'foo';
+    o.name = 'foo';
+    o.serviceAttachment = 'foo';
+  }
+  buildCounterGoogleCloudApigeeV1EndpointAttachment--;
+  return o;
+}
+
+void checkGoogleCloudApigeeV1EndpointAttachment(
+    api.GoogleCloudApigeeV1EndpointAttachment o) {
+  buildCounterGoogleCloudApigeeV1EndpointAttachment++;
+  if (buildCounterGoogleCloudApigeeV1EndpointAttachment < 3) {
+    unittest.expect(
+      o.host!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.location!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.serviceAttachment!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudApigeeV1EndpointAttachment--;
+}
+
 core.int buildCounterGoogleCloudApigeeV1EntityMetadata = 0;
 api.GoogleCloudApigeeV1EntityMetadata buildGoogleCloudApigeeV1EntityMetadata() {
   final o = api.GoogleCloudApigeeV1EntityMetadata();
@@ -5198,13 +5242,50 @@
   buildCounterGoogleCloudApigeeV1ListDeveloperSubscriptionsResponse--;
 }
 
+core.List<api.GoogleCloudApigeeV1EndpointAttachment> buildUnnamed100() => [
+      buildGoogleCloudApigeeV1EndpointAttachment(),
+      buildGoogleCloudApigeeV1EndpointAttachment(),
+    ];
+
+void checkUnnamed100(core.List<api.GoogleCloudApigeeV1EndpointAttachment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudApigeeV1EndpointAttachment(o[0]);
+  checkGoogleCloudApigeeV1EndpointAttachment(o[1]);
+}
+
+core.int buildCounterGoogleCloudApigeeV1ListEndpointAttachmentsResponse = 0;
+api.GoogleCloudApigeeV1ListEndpointAttachmentsResponse
+    buildGoogleCloudApigeeV1ListEndpointAttachmentsResponse() {
+  final o = api.GoogleCloudApigeeV1ListEndpointAttachmentsResponse();
+  buildCounterGoogleCloudApigeeV1ListEndpointAttachmentsResponse++;
+  if (buildCounterGoogleCloudApigeeV1ListEndpointAttachmentsResponse < 3) {
+    o.endpointAttachments = buildUnnamed100();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterGoogleCloudApigeeV1ListEndpointAttachmentsResponse--;
+  return o;
+}
+
+void checkGoogleCloudApigeeV1ListEndpointAttachmentsResponse(
+    api.GoogleCloudApigeeV1ListEndpointAttachmentsResponse o) {
+  buildCounterGoogleCloudApigeeV1ListEndpointAttachmentsResponse++;
+  if (buildCounterGoogleCloudApigeeV1ListEndpointAttachmentsResponse < 3) {
+    checkUnnamed100(o.endpointAttachments!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudApigeeV1ListEndpointAttachmentsResponse--;
+}
+
 core.List<api.GoogleCloudApigeeV1EnvironmentGroupAttachment>
-    buildUnnamed100() => [
+    buildUnnamed101() => [
           buildGoogleCloudApigeeV1EnvironmentGroupAttachment(),
           buildGoogleCloudApigeeV1EnvironmentGroupAttachment(),
         ];
 
-void checkUnnamed100(
+void checkUnnamed101(
     core.List<api.GoogleCloudApigeeV1EnvironmentGroupAttachment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1EnvironmentGroupAttachment(o[0]);
@@ -5219,7 +5300,7 @@
   buildCounterGoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse <
       3) {
-    o.environmentGroupAttachments = buildUnnamed100();
+    o.environmentGroupAttachments = buildUnnamed101();
     o.nextPageToken = 'foo';
   }
   buildCounterGoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse--;
@@ -5231,7 +5312,7 @@
   buildCounterGoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse <
       3) {
-    checkUnnamed100(o.environmentGroupAttachments!);
+    checkUnnamed101(o.environmentGroupAttachments!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -5240,12 +5321,12 @@
   buildCounterGoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1EnvironmentGroup> buildUnnamed101() => [
+core.List<api.GoogleCloudApigeeV1EnvironmentGroup> buildUnnamed102() => [
       buildGoogleCloudApigeeV1EnvironmentGroup(),
       buildGoogleCloudApigeeV1EnvironmentGroup(),
     ];
 
-void checkUnnamed101(core.List<api.GoogleCloudApigeeV1EnvironmentGroup> o) {
+void checkUnnamed102(core.List<api.GoogleCloudApigeeV1EnvironmentGroup> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1EnvironmentGroup(o[0]);
   checkGoogleCloudApigeeV1EnvironmentGroup(o[1]);
@@ -5257,7 +5338,7 @@
   final o = api.GoogleCloudApigeeV1ListEnvironmentGroupsResponse();
   buildCounterGoogleCloudApigeeV1ListEnvironmentGroupsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListEnvironmentGroupsResponse < 3) {
-    o.environmentGroups = buildUnnamed101();
+    o.environmentGroups = buildUnnamed102();
     o.nextPageToken = 'foo';
   }
   buildCounterGoogleCloudApigeeV1ListEnvironmentGroupsResponse--;
@@ -5268,7 +5349,7 @@
     api.GoogleCloudApigeeV1ListEnvironmentGroupsResponse o) {
   buildCounterGoogleCloudApigeeV1ListEnvironmentGroupsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListEnvironmentGroupsResponse < 3) {
-    checkUnnamed101(o.environmentGroups!);
+    checkUnnamed102(o.environmentGroups!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -5277,12 +5358,12 @@
   buildCounterGoogleCloudApigeeV1ListEnvironmentGroupsResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1ResourceFile> buildUnnamed102() => [
+core.List<api.GoogleCloudApigeeV1ResourceFile> buildUnnamed103() => [
       buildGoogleCloudApigeeV1ResourceFile(),
       buildGoogleCloudApigeeV1ResourceFile(),
     ];
 
-void checkUnnamed102(core.List<api.GoogleCloudApigeeV1ResourceFile> o) {
+void checkUnnamed103(core.List<api.GoogleCloudApigeeV1ResourceFile> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1ResourceFile(o[0]);
   checkGoogleCloudApigeeV1ResourceFile(o[1]);
@@ -5294,7 +5375,7 @@
   final o = api.GoogleCloudApigeeV1ListEnvironmentResourcesResponse();
   buildCounterGoogleCloudApigeeV1ListEnvironmentResourcesResponse++;
   if (buildCounterGoogleCloudApigeeV1ListEnvironmentResourcesResponse < 3) {
-    o.resourceFile = buildUnnamed102();
+    o.resourceFile = buildUnnamed103();
   }
   buildCounterGoogleCloudApigeeV1ListEnvironmentResourcesResponse--;
   return o;
@@ -5304,17 +5385,17 @@
     api.GoogleCloudApigeeV1ListEnvironmentResourcesResponse o) {
   buildCounterGoogleCloudApigeeV1ListEnvironmentResourcesResponse++;
   if (buildCounterGoogleCloudApigeeV1ListEnvironmentResourcesResponse < 3) {
-    checkUnnamed102(o.resourceFile!);
+    checkUnnamed103(o.resourceFile!);
   }
   buildCounterGoogleCloudApigeeV1ListEnvironmentResourcesResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1Export> buildUnnamed103() => [
+core.List<api.GoogleCloudApigeeV1Export> buildUnnamed104() => [
       buildGoogleCloudApigeeV1Export(),
       buildGoogleCloudApigeeV1Export(),
     ];
 
-void checkUnnamed103(core.List<api.GoogleCloudApigeeV1Export> o) {
+void checkUnnamed104(core.List<api.GoogleCloudApigeeV1Export> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Export(o[0]);
   checkGoogleCloudApigeeV1Export(o[1]);
@@ -5326,7 +5407,7 @@
   final o = api.GoogleCloudApigeeV1ListExportsResponse();
   buildCounterGoogleCloudApigeeV1ListExportsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListExportsResponse < 3) {
-    o.exports = buildUnnamed103();
+    o.exports = buildUnnamed104();
   }
   buildCounterGoogleCloudApigeeV1ListExportsResponse--;
   return o;
@@ -5336,17 +5417,17 @@
     api.GoogleCloudApigeeV1ListExportsResponse o) {
   buildCounterGoogleCloudApigeeV1ListExportsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListExportsResponse < 3) {
-    checkUnnamed103(o.exports!);
+    checkUnnamed104(o.exports!);
   }
   buildCounterGoogleCloudApigeeV1ListExportsResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1ServiceIssuersMapping> buildUnnamed104() => [
+core.List<api.GoogleCloudApigeeV1ServiceIssuersMapping> buildUnnamed105() => [
       buildGoogleCloudApigeeV1ServiceIssuersMapping(),
       buildGoogleCloudApigeeV1ServiceIssuersMapping(),
     ];
 
-void checkUnnamed104(
+void checkUnnamed105(
     core.List<api.GoogleCloudApigeeV1ServiceIssuersMapping> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1ServiceIssuersMapping(o[0]);
@@ -5359,7 +5440,7 @@
   final o = api.GoogleCloudApigeeV1ListHybridIssuersResponse();
   buildCounterGoogleCloudApigeeV1ListHybridIssuersResponse++;
   if (buildCounterGoogleCloudApigeeV1ListHybridIssuersResponse < 3) {
-    o.issuers = buildUnnamed104();
+    o.issuers = buildUnnamed105();
   }
   buildCounterGoogleCloudApigeeV1ListHybridIssuersResponse--;
   return o;
@@ -5369,17 +5450,17 @@
     api.GoogleCloudApigeeV1ListHybridIssuersResponse o) {
   buildCounterGoogleCloudApigeeV1ListHybridIssuersResponse++;
   if (buildCounterGoogleCloudApigeeV1ListHybridIssuersResponse < 3) {
-    checkUnnamed104(o.issuers!);
+    checkUnnamed105(o.issuers!);
   }
   buildCounterGoogleCloudApigeeV1ListHybridIssuersResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1InstanceAttachment> buildUnnamed105() => [
+core.List<api.GoogleCloudApigeeV1InstanceAttachment> buildUnnamed106() => [
       buildGoogleCloudApigeeV1InstanceAttachment(),
       buildGoogleCloudApigeeV1InstanceAttachment(),
     ];
 
-void checkUnnamed105(core.List<api.GoogleCloudApigeeV1InstanceAttachment> o) {
+void checkUnnamed106(core.List<api.GoogleCloudApigeeV1InstanceAttachment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1InstanceAttachment(o[0]);
   checkGoogleCloudApigeeV1InstanceAttachment(o[1]);
@@ -5391,7 +5472,7 @@
   final o = api.GoogleCloudApigeeV1ListInstanceAttachmentsResponse();
   buildCounterGoogleCloudApigeeV1ListInstanceAttachmentsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListInstanceAttachmentsResponse < 3) {
-    o.attachments = buildUnnamed105();
+    o.attachments = buildUnnamed106();
     o.nextPageToken = 'foo';
   }
   buildCounterGoogleCloudApigeeV1ListInstanceAttachmentsResponse--;
@@ -5402,7 +5483,7 @@
     api.GoogleCloudApigeeV1ListInstanceAttachmentsResponse o) {
   buildCounterGoogleCloudApigeeV1ListInstanceAttachmentsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListInstanceAttachmentsResponse < 3) {
-    checkUnnamed105(o.attachments!);
+    checkUnnamed106(o.attachments!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -5411,12 +5492,12 @@
   buildCounterGoogleCloudApigeeV1ListInstanceAttachmentsResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1Instance> buildUnnamed106() => [
+core.List<api.GoogleCloudApigeeV1Instance> buildUnnamed107() => [
       buildGoogleCloudApigeeV1Instance(),
       buildGoogleCloudApigeeV1Instance(),
     ];
 
-void checkUnnamed106(core.List<api.GoogleCloudApigeeV1Instance> o) {
+void checkUnnamed107(core.List<api.GoogleCloudApigeeV1Instance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Instance(o[0]);
   checkGoogleCloudApigeeV1Instance(o[1]);
@@ -5428,7 +5509,7 @@
   final o = api.GoogleCloudApigeeV1ListInstancesResponse();
   buildCounterGoogleCloudApigeeV1ListInstancesResponse++;
   if (buildCounterGoogleCloudApigeeV1ListInstancesResponse < 3) {
-    o.instances = buildUnnamed106();
+    o.instances = buildUnnamed107();
     o.nextPageToken = 'foo';
   }
   buildCounterGoogleCloudApigeeV1ListInstancesResponse--;
@@ -5439,7 +5520,7 @@
     api.GoogleCloudApigeeV1ListInstancesResponse o) {
   buildCounterGoogleCloudApigeeV1ListInstancesResponse++;
   if (buildCounterGoogleCloudApigeeV1ListInstancesResponse < 3) {
-    checkUnnamed106(o.instances!);
+    checkUnnamed107(o.instances!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -5448,12 +5529,12 @@
   buildCounterGoogleCloudApigeeV1ListInstancesResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1NatAddress> buildUnnamed107() => [
+core.List<api.GoogleCloudApigeeV1NatAddress> buildUnnamed108() => [
       buildGoogleCloudApigeeV1NatAddress(),
       buildGoogleCloudApigeeV1NatAddress(),
     ];
 
-void checkUnnamed107(core.List<api.GoogleCloudApigeeV1NatAddress> o) {
+void checkUnnamed108(core.List<api.GoogleCloudApigeeV1NatAddress> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1NatAddress(o[0]);
   checkGoogleCloudApigeeV1NatAddress(o[1]);
@@ -5465,7 +5546,7 @@
   final o = api.GoogleCloudApigeeV1ListNatAddressesResponse();
   buildCounterGoogleCloudApigeeV1ListNatAddressesResponse++;
   if (buildCounterGoogleCloudApigeeV1ListNatAddressesResponse < 3) {
-    o.natAddresses = buildUnnamed107();
+    o.natAddresses = buildUnnamed108();
     o.nextPageToken = 'foo';
   }
   buildCounterGoogleCloudApigeeV1ListNatAddressesResponse--;
@@ -5476,7 +5557,7 @@
     api.GoogleCloudApigeeV1ListNatAddressesResponse o) {
   buildCounterGoogleCloudApigeeV1ListNatAddressesResponse++;
   if (buildCounterGoogleCloudApigeeV1ListNatAddressesResponse < 3) {
-    checkUnnamed107(o.natAddresses!);
+    checkUnnamed108(o.natAddresses!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -5485,12 +5566,12 @@
   buildCounterGoogleCloudApigeeV1ListNatAddressesResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1Developer> buildUnnamed108() => [
+core.List<api.GoogleCloudApigeeV1Developer> buildUnnamed109() => [
       buildGoogleCloudApigeeV1Developer(),
       buildGoogleCloudApigeeV1Developer(),
     ];
 
-void checkUnnamed108(core.List<api.GoogleCloudApigeeV1Developer> o) {
+void checkUnnamed109(core.List<api.GoogleCloudApigeeV1Developer> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Developer(o[0]);
   checkGoogleCloudApigeeV1Developer(o[1]);
@@ -5502,7 +5583,7 @@
   final o = api.GoogleCloudApigeeV1ListOfDevelopersResponse();
   buildCounterGoogleCloudApigeeV1ListOfDevelopersResponse++;
   if (buildCounterGoogleCloudApigeeV1ListOfDevelopersResponse < 3) {
-    o.developer = buildUnnamed108();
+    o.developer = buildUnnamed109();
   }
   buildCounterGoogleCloudApigeeV1ListOfDevelopersResponse--;
   return o;
@@ -5512,18 +5593,18 @@
     api.GoogleCloudApigeeV1ListOfDevelopersResponse o) {
   buildCounterGoogleCloudApigeeV1ListOfDevelopersResponse++;
   if (buildCounterGoogleCloudApigeeV1ListOfDevelopersResponse < 3) {
-    checkUnnamed108(o.developer!);
+    checkUnnamed109(o.developer!);
   }
   buildCounterGoogleCloudApigeeV1ListOfDevelopersResponse--;
 }
 
 core.List<api.GoogleCloudApigeeV1OrganizationProjectMapping>
-    buildUnnamed109() => [
+    buildUnnamed110() => [
           buildGoogleCloudApigeeV1OrganizationProjectMapping(),
           buildGoogleCloudApigeeV1OrganizationProjectMapping(),
         ];
 
-void checkUnnamed109(
+void checkUnnamed110(
     core.List<api.GoogleCloudApigeeV1OrganizationProjectMapping> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1OrganizationProjectMapping(o[0]);
@@ -5536,7 +5617,7 @@
   final o = api.GoogleCloudApigeeV1ListOrganizationsResponse();
   buildCounterGoogleCloudApigeeV1ListOrganizationsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListOrganizationsResponse < 3) {
-    o.organizations = buildUnnamed109();
+    o.organizations = buildUnnamed110();
   }
   buildCounterGoogleCloudApigeeV1ListOrganizationsResponse--;
   return o;
@@ -5546,17 +5627,17 @@
     api.GoogleCloudApigeeV1ListOrganizationsResponse o) {
   buildCounterGoogleCloudApigeeV1ListOrganizationsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListOrganizationsResponse < 3) {
-    checkUnnamed109(o.organizations!);
+    checkUnnamed110(o.organizations!);
   }
   buildCounterGoogleCloudApigeeV1ListOrganizationsResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1RatePlan> buildUnnamed110() => [
+core.List<api.GoogleCloudApigeeV1RatePlan> buildUnnamed111() => [
       buildGoogleCloudApigeeV1RatePlan(),
       buildGoogleCloudApigeeV1RatePlan(),
     ];
 
-void checkUnnamed110(core.List<api.GoogleCloudApigeeV1RatePlan> o) {
+void checkUnnamed111(core.List<api.GoogleCloudApigeeV1RatePlan> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1RatePlan(o[0]);
   checkGoogleCloudApigeeV1RatePlan(o[1]);
@@ -5569,7 +5650,7 @@
   buildCounterGoogleCloudApigeeV1ListRatePlansResponse++;
   if (buildCounterGoogleCloudApigeeV1ListRatePlansResponse < 3) {
     o.nextStartKey = 'foo';
-    o.ratePlans = buildUnnamed110();
+    o.ratePlans = buildUnnamed111();
   }
   buildCounterGoogleCloudApigeeV1ListRatePlansResponse--;
   return o;
@@ -5583,17 +5664,17 @@
       o.nextStartKey!,
       unittest.equals('foo'),
     );
-    checkUnnamed110(o.ratePlans!);
+    checkUnnamed111(o.ratePlans!);
   }
   buildCounterGoogleCloudApigeeV1ListRatePlansResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1SharedFlow> buildUnnamed111() => [
+core.List<api.GoogleCloudApigeeV1SharedFlow> buildUnnamed112() => [
       buildGoogleCloudApigeeV1SharedFlow(),
       buildGoogleCloudApigeeV1SharedFlow(),
     ];
 
-void checkUnnamed111(core.List<api.GoogleCloudApigeeV1SharedFlow> o) {
+void checkUnnamed112(core.List<api.GoogleCloudApigeeV1SharedFlow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1SharedFlow(o[0]);
   checkGoogleCloudApigeeV1SharedFlow(o[1]);
@@ -5605,7 +5686,7 @@
   final o = api.GoogleCloudApigeeV1ListSharedFlowsResponse();
   buildCounterGoogleCloudApigeeV1ListSharedFlowsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListSharedFlowsResponse < 3) {
-    o.sharedFlows = buildUnnamed111();
+    o.sharedFlows = buildUnnamed112();
   }
   buildCounterGoogleCloudApigeeV1ListSharedFlowsResponse--;
   return o;
@@ -5615,17 +5696,17 @@
     api.GoogleCloudApigeeV1ListSharedFlowsResponse o) {
   buildCounterGoogleCloudApigeeV1ListSharedFlowsResponse++;
   if (buildCounterGoogleCloudApigeeV1ListSharedFlowsResponse < 3) {
-    checkUnnamed111(o.sharedFlows!);
+    checkUnnamed112(o.sharedFlows!);
   }
   buildCounterGoogleCloudApigeeV1ListSharedFlowsResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1TraceConfigOverride> buildUnnamed112() => [
+core.List<api.GoogleCloudApigeeV1TraceConfigOverride> buildUnnamed113() => [
       buildGoogleCloudApigeeV1TraceConfigOverride(),
       buildGoogleCloudApigeeV1TraceConfigOverride(),
     ];
 
-void checkUnnamed112(core.List<api.GoogleCloudApigeeV1TraceConfigOverride> o) {
+void checkUnnamed113(core.List<api.GoogleCloudApigeeV1TraceConfigOverride> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1TraceConfigOverride(o[0]);
   checkGoogleCloudApigeeV1TraceConfigOverride(o[1]);
@@ -5638,7 +5719,7 @@
   buildCounterGoogleCloudApigeeV1ListTraceConfigOverridesResponse++;
   if (buildCounterGoogleCloudApigeeV1ListTraceConfigOverridesResponse < 3) {
     o.nextPageToken = 'foo';
-    o.traceConfigOverrides = buildUnnamed112();
+    o.traceConfigOverrides = buildUnnamed113();
   }
   buildCounterGoogleCloudApigeeV1ListTraceConfigOverridesResponse--;
   return o;
@@ -5652,28 +5733,11 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed112(o.traceConfigOverrides!);
+    checkUnnamed113(o.traceConfigOverrides!);
   }
   buildCounterGoogleCloudApigeeV1ListTraceConfigOverridesResponse--;
 }
 
-core.List<core.String> buildUnnamed113() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed113(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed114() => [
       'foo',
       'foo',
@@ -5691,13 +5755,30 @@
   );
 }
 
+core.List<core.String> buildUnnamed115() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed115(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGoogleCloudApigeeV1Metadata = 0;
 api.GoogleCloudApigeeV1Metadata buildGoogleCloudApigeeV1Metadata() {
   final o = api.GoogleCloudApigeeV1Metadata();
   buildCounterGoogleCloudApigeeV1Metadata++;
   if (buildCounterGoogleCloudApigeeV1Metadata < 3) {
-    o.errors = buildUnnamed113();
-    o.notices = buildUnnamed114();
+    o.errors = buildUnnamed114();
+    o.notices = buildUnnamed115();
   }
   buildCounterGoogleCloudApigeeV1Metadata--;
   return o;
@@ -5706,13 +5787,13 @@
 void checkGoogleCloudApigeeV1Metadata(api.GoogleCloudApigeeV1Metadata o) {
   buildCounterGoogleCloudApigeeV1Metadata++;
   if (buildCounterGoogleCloudApigeeV1Metadata < 3) {
-    checkUnnamed113(o.errors!);
-    checkUnnamed114(o.notices!);
+    checkUnnamed114(o.errors!);
+    checkUnnamed115(o.notices!);
   }
   buildCounterGoogleCloudApigeeV1Metadata--;
 }
 
-core.List<core.Object?> buildUnnamed115() => [
+core.List<core.Object?> buildUnnamed116() => [
       {
         'list': [1, 2, 3],
         'bool': true,
@@ -5725,7 +5806,7 @@
       },
     ];
 
-void checkUnnamed115(core.List<core.Object?> o) {
+void checkUnnamed116(core.List<core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o[0]) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -5763,7 +5844,7 @@
   buildCounterGoogleCloudApigeeV1Metric++;
   if (buildCounterGoogleCloudApigeeV1Metric < 3) {
     o.name = 'foo';
-    o.values = buildUnnamed115();
+    o.values = buildUnnamed116();
   }
   buildCounterGoogleCloudApigeeV1Metric--;
   return o;
@@ -5776,7 +5857,7 @@
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed115(o.values!);
+    checkUnnamed116(o.values!);
   }
   buildCounterGoogleCloudApigeeV1Metric--;
 }
@@ -5834,12 +5915,12 @@
   buildCounterGoogleCloudApigeeV1NatAddress--;
 }
 
-core.List<core.String> buildUnnamed116() => [
+core.List<core.String> buildUnnamed117() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed116(core.List<core.String> o) {
+void checkUnnamed117(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -5856,7 +5937,7 @@
   final o = api.GoogleCloudApigeeV1Operation();
   buildCounterGoogleCloudApigeeV1Operation++;
   if (buildCounterGoogleCloudApigeeV1Operation < 3) {
-    o.methods = buildUnnamed116();
+    o.methods = buildUnnamed117();
     o.resource = 'foo';
   }
   buildCounterGoogleCloudApigeeV1Operation--;
@@ -5866,7 +5947,7 @@
 void checkGoogleCloudApigeeV1Operation(api.GoogleCloudApigeeV1Operation o) {
   buildCounterGoogleCloudApigeeV1Operation++;
   if (buildCounterGoogleCloudApigeeV1Operation < 3) {
-    checkUnnamed116(o.methods!);
+    checkUnnamed117(o.methods!);
     unittest.expect(
       o.resource!,
       unittest.equals('foo'),
@@ -5875,23 +5956,23 @@
   buildCounterGoogleCloudApigeeV1Operation--;
 }
 
-core.List<api.GoogleCloudApigeeV1Attribute> buildUnnamed117() => [
+core.List<api.GoogleCloudApigeeV1Attribute> buildUnnamed118() => [
       buildGoogleCloudApigeeV1Attribute(),
       buildGoogleCloudApigeeV1Attribute(),
     ];
 
-void checkUnnamed117(core.List<api.GoogleCloudApigeeV1Attribute> o) {
+void checkUnnamed118(core.List<api.GoogleCloudApigeeV1Attribute> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Attribute(o[0]);
   checkGoogleCloudApigeeV1Attribute(o[1]);
 }
 
-core.List<api.GoogleCloudApigeeV1Operation> buildUnnamed118() => [
+core.List<api.GoogleCloudApigeeV1Operation> buildUnnamed119() => [
       buildGoogleCloudApigeeV1Operation(),
       buildGoogleCloudApigeeV1Operation(),
     ];
 
-void checkUnnamed118(core.List<api.GoogleCloudApigeeV1Operation> o) {
+void checkUnnamed119(core.List<api.GoogleCloudApigeeV1Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Operation(o[0]);
   checkGoogleCloudApigeeV1Operation(o[1]);
@@ -5904,8 +5985,8 @@
   buildCounterGoogleCloudApigeeV1OperationConfig++;
   if (buildCounterGoogleCloudApigeeV1OperationConfig < 3) {
     o.apiSource = 'foo';
-    o.attributes = buildUnnamed117();
-    o.operations = buildUnnamed118();
+    o.attributes = buildUnnamed118();
+    o.operations = buildUnnamed119();
     o.quota = buildGoogleCloudApigeeV1Quota();
   }
   buildCounterGoogleCloudApigeeV1OperationConfig--;
@@ -5920,19 +6001,19 @@
       o.apiSource!,
       unittest.equals('foo'),
     );
-    checkUnnamed117(o.attributes!);
-    checkUnnamed118(o.operations!);
+    checkUnnamed118(o.attributes!);
+    checkUnnamed119(o.operations!);
     checkGoogleCloudApigeeV1Quota(o.quota!);
   }
   buildCounterGoogleCloudApigeeV1OperationConfig--;
 }
 
-core.List<api.GoogleCloudApigeeV1OperationConfig> buildUnnamed119() => [
+core.List<api.GoogleCloudApigeeV1OperationConfig> buildUnnamed120() => [
       buildGoogleCloudApigeeV1OperationConfig(),
       buildGoogleCloudApigeeV1OperationConfig(),
     ];
 
-void checkUnnamed119(core.List<api.GoogleCloudApigeeV1OperationConfig> o) {
+void checkUnnamed120(core.List<api.GoogleCloudApigeeV1OperationConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1OperationConfig(o[0]);
   checkGoogleCloudApigeeV1OperationConfig(o[1]);
@@ -5944,7 +6025,7 @@
   buildCounterGoogleCloudApigeeV1OperationGroup++;
   if (buildCounterGoogleCloudApigeeV1OperationGroup < 3) {
     o.operationConfigType = 'foo';
-    o.operationConfigs = buildUnnamed119();
+    o.operationConfigs = buildUnnamed120();
   }
   buildCounterGoogleCloudApigeeV1OperationGroup--;
   return o;
@@ -5958,7 +6039,7 @@
       o.operationConfigType!,
       unittest.equals('foo'),
     );
-    checkUnnamed119(o.operationConfigs!);
+    checkUnnamed120(o.operationConfigs!);
   }
   buildCounterGoogleCloudApigeeV1OperationGroup--;
 }
@@ -5983,7 +6064,7 @@
   buildCounterGoogleCloudApigeeV1OptimizedStats--;
 }
 
-core.List<core.Object?> buildUnnamed120() => [
+core.List<core.Object?> buildUnnamed121() => [
       {
         'list': [1, 2, 3],
         'bool': true,
@@ -5996,7 +6077,7 @@
       },
     ];
 
-void checkUnnamed120(core.List<core.Object?> o) {
+void checkUnnamed121(core.List<core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted9 = (o[0]) as core.Map;
   unittest.expect(casted9, unittest.hasLength(3));
@@ -6034,7 +6115,7 @@
   final o = api.GoogleCloudApigeeV1OptimizedStatsNode();
   buildCounterGoogleCloudApigeeV1OptimizedStatsNode++;
   if (buildCounterGoogleCloudApigeeV1OptimizedStatsNode < 3) {
-    o.data = buildUnnamed120();
+    o.data = buildUnnamed121();
   }
   buildCounterGoogleCloudApigeeV1OptimizedStatsNode--;
   return o;
@@ -6044,55 +6125,11 @@
     api.GoogleCloudApigeeV1OptimizedStatsNode o) {
   buildCounterGoogleCloudApigeeV1OptimizedStatsNode++;
   if (buildCounterGoogleCloudApigeeV1OptimizedStatsNode < 3) {
-    checkUnnamed120(o.data!);
+    checkUnnamed121(o.data!);
   }
   buildCounterGoogleCloudApigeeV1OptimizedStatsNode--;
 }
 
-core.List<core.String> buildUnnamed121() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed121(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterGoogleCloudApigeeV1OptimizedStatsResponse = 0;
-api.GoogleCloudApigeeV1OptimizedStatsResponse
-    buildGoogleCloudApigeeV1OptimizedStatsResponse() {
-  final o = api.GoogleCloudApigeeV1OptimizedStatsResponse();
-  buildCounterGoogleCloudApigeeV1OptimizedStatsResponse++;
-  if (buildCounterGoogleCloudApigeeV1OptimizedStatsResponse < 3) {
-    o.TimeUnit = buildUnnamed121();
-    o.metaData = buildGoogleCloudApigeeV1Metadata();
-    o.resultTruncated = true;
-    o.stats = buildGoogleCloudApigeeV1OptimizedStatsNode();
-  }
-  buildCounterGoogleCloudApigeeV1OptimizedStatsResponse--;
-  return o;
-}
-
-void checkGoogleCloudApigeeV1OptimizedStatsResponse(
-    api.GoogleCloudApigeeV1OptimizedStatsResponse o) {
-  buildCounterGoogleCloudApigeeV1OptimizedStatsResponse++;
-  if (buildCounterGoogleCloudApigeeV1OptimizedStatsResponse < 3) {
-    checkUnnamed121(o.TimeUnit!);
-    checkGoogleCloudApigeeV1Metadata(o.metaData!);
-    unittest.expect(o.resultTruncated!, unittest.isTrue);
-    checkGoogleCloudApigeeV1OptimizedStatsNode(o.stats!);
-  }
-  buildCounterGoogleCloudApigeeV1OptimizedStatsResponse--;
-}
-
 core.List<core.String> buildUnnamed122() => [
       'foo',
       'foo',
@@ -6110,6 +6147,33 @@
   );
 }
 
+core.int buildCounterGoogleCloudApigeeV1OptimizedStatsResponse = 0;
+api.GoogleCloudApigeeV1OptimizedStatsResponse
+    buildGoogleCloudApigeeV1OptimizedStatsResponse() {
+  final o = api.GoogleCloudApigeeV1OptimizedStatsResponse();
+  buildCounterGoogleCloudApigeeV1OptimizedStatsResponse++;
+  if (buildCounterGoogleCloudApigeeV1OptimizedStatsResponse < 3) {
+    o.TimeUnit = buildUnnamed122();
+    o.metaData = buildGoogleCloudApigeeV1Metadata();
+    o.resultTruncated = true;
+    o.stats = buildGoogleCloudApigeeV1OptimizedStatsNode();
+  }
+  buildCounterGoogleCloudApigeeV1OptimizedStatsResponse--;
+  return o;
+}
+
+void checkGoogleCloudApigeeV1OptimizedStatsResponse(
+    api.GoogleCloudApigeeV1OptimizedStatsResponse o) {
+  buildCounterGoogleCloudApigeeV1OptimizedStatsResponse++;
+  if (buildCounterGoogleCloudApigeeV1OptimizedStatsResponse < 3) {
+    checkUnnamed122(o.TimeUnit!);
+    checkGoogleCloudApigeeV1Metadata(o.metaData!);
+    unittest.expect(o.resultTruncated!, unittest.isTrue);
+    checkGoogleCloudApigeeV1OptimizedStatsNode(o.stats!);
+  }
+  buildCounterGoogleCloudApigeeV1OptimizedStatsResponse--;
+}
+
 core.List<core.String> buildUnnamed123() => [
       'foo',
       'foo',
@@ -6127,6 +6191,23 @@
   );
 }
 
+core.List<core.String> buildUnnamed124() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed124(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGoogleCloudApigeeV1Organization = 0;
 api.GoogleCloudApigeeV1Organization buildGoogleCloudApigeeV1Organization() {
   final o = api.GoogleCloudApigeeV1Organization();
@@ -6134,7 +6215,7 @@
   if (buildCounterGoogleCloudApigeeV1Organization < 3) {
     o.addonsConfig = buildGoogleCloudApigeeV1AddonsConfig();
     o.analyticsRegion = 'foo';
-    o.attributes = buildUnnamed122();
+    o.attributes = buildUnnamed123();
     o.authorizedNetwork = 'foo';
     o.billingType = 'foo';
     o.caCertificate = 'foo';
@@ -6142,7 +6223,7 @@
     o.customerName = 'foo';
     o.description = 'foo';
     o.displayName = 'foo';
-    o.environments = buildUnnamed123();
+    o.environments = buildUnnamed124();
     o.expiresAt = 'foo';
     o.lastModifiedAt = 'foo';
     o.name = 'foo';
@@ -6168,7 +6249,7 @@
       o.analyticsRegion!,
       unittest.equals('foo'),
     );
-    checkUnnamed122(o.attributes!);
+    checkUnnamed123(o.attributes!);
     unittest.expect(
       o.authorizedNetwork!,
       unittest.equals('foo'),
@@ -6197,7 +6278,7 @@
       o.displayName!,
       unittest.equals('foo'),
     );
-    checkUnnamed123(o.environments!);
+    checkUnnamed124(o.environments!);
     unittest.expect(
       o.expiresAt!,
       unittest.equals('foo'),
@@ -6240,12 +6321,12 @@
   buildCounterGoogleCloudApigeeV1Organization--;
 }
 
-core.List<core.String> buildUnnamed124() => [
+core.List<core.String> buildUnnamed125() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed124(core.List<core.String> o) {
+void checkUnnamed125(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -6265,7 +6346,7 @@
   if (buildCounterGoogleCloudApigeeV1OrganizationProjectMapping < 3) {
     o.organization = 'foo';
     o.projectId = 'foo';
-    o.projectIds = buildUnnamed124();
+    o.projectIds = buildUnnamed125();
   }
   buildCounterGoogleCloudApigeeV1OrganizationProjectMapping--;
   return o;
@@ -6283,7 +6364,7 @@
       o.projectId!,
       unittest.equals('foo'),
     );
-    checkUnnamed124(o.projectIds!);
+    checkUnnamed125(o.projectIds!);
   }
   buildCounterGoogleCloudApigeeV1OrganizationProjectMapping--;
 }
@@ -6350,12 +6431,12 @@
   buildCounterGoogleCloudApigeeV1PodStatus--;
 }
 
-core.List<api.GoogleCloudApigeeV1Result> buildUnnamed125() => [
+core.List<api.GoogleCloudApigeeV1Result> buildUnnamed126() => [
       buildGoogleCloudApigeeV1Result(),
       buildGoogleCloudApigeeV1Result(),
     ];
 
-void checkUnnamed125(core.List<api.GoogleCloudApigeeV1Result> o) {
+void checkUnnamed126(core.List<api.GoogleCloudApigeeV1Result> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Result(o[0]);
   checkGoogleCloudApigeeV1Result(o[1]);
@@ -6367,7 +6448,7 @@
   buildCounterGoogleCloudApigeeV1Point++;
   if (buildCounterGoogleCloudApigeeV1Point < 3) {
     o.id = 'foo';
-    o.results = buildUnnamed125();
+    o.results = buildUnnamed126();
   }
   buildCounterGoogleCloudApigeeV1Point--;
   return o;
@@ -6380,17 +6461,17 @@
       o.id!,
       unittest.equals('foo'),
     );
-    checkUnnamed125(o.results!);
+    checkUnnamed126(o.results!);
   }
   buildCounterGoogleCloudApigeeV1Point--;
 }
 
-core.List<api.GoogleCloudApigeeV1Property> buildUnnamed126() => [
+core.List<api.GoogleCloudApigeeV1Property> buildUnnamed127() => [
       buildGoogleCloudApigeeV1Property(),
       buildGoogleCloudApigeeV1Property(),
     ];
 
-void checkUnnamed126(core.List<api.GoogleCloudApigeeV1Property> o) {
+void checkUnnamed127(core.List<api.GoogleCloudApigeeV1Property> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Property(o[0]);
   checkGoogleCloudApigeeV1Property(o[1]);
@@ -6401,7 +6482,7 @@
   final o = api.GoogleCloudApigeeV1Properties();
   buildCounterGoogleCloudApigeeV1Properties++;
   if (buildCounterGoogleCloudApigeeV1Properties < 3) {
-    o.property = buildUnnamed126();
+    o.property = buildUnnamed127();
   }
   buildCounterGoogleCloudApigeeV1Properties--;
   return o;
@@ -6410,7 +6491,7 @@
 void checkGoogleCloudApigeeV1Properties(api.GoogleCloudApigeeV1Properties o) {
   buildCounterGoogleCloudApigeeV1Properties++;
   if (buildCounterGoogleCloudApigeeV1Properties < 3) {
-    checkUnnamed126(o.property!);
+    checkUnnamed127(o.property!);
   }
   buildCounterGoogleCloudApigeeV1Properties--;
 }
@@ -6476,12 +6557,12 @@
   buildCounterGoogleCloudApigeeV1ProvisionOrganizationRequest--;
 }
 
-core.List<core.String> buildUnnamed127() => [
+core.List<core.String> buildUnnamed128() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed127(core.List<core.String> o) {
+void checkUnnamed128(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -6493,12 +6574,12 @@
   );
 }
 
-core.List<api.GoogleCloudApigeeV1QueryMetric> buildUnnamed128() => [
+core.List<api.GoogleCloudApigeeV1QueryMetric> buildUnnamed129() => [
       buildGoogleCloudApigeeV1QueryMetric(),
       buildGoogleCloudApigeeV1QueryMetric(),
     ];
 
-void checkUnnamed128(core.List<api.GoogleCloudApigeeV1QueryMetric> o) {
+void checkUnnamed129(core.List<api.GoogleCloudApigeeV1QueryMetric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1QueryMetric(o[0]);
   checkGoogleCloudApigeeV1QueryMetric(o[1]);
@@ -6510,12 +6591,12 @@
   buildCounterGoogleCloudApigeeV1Query++;
   if (buildCounterGoogleCloudApigeeV1Query < 3) {
     o.csvDelimiter = 'foo';
-    o.dimensions = buildUnnamed127();
+    o.dimensions = buildUnnamed128();
     o.envgroupHostname = 'foo';
     o.filter = 'foo';
     o.groupByTimeUnit = 'foo';
     o.limit = 42;
-    o.metrics = buildUnnamed128();
+    o.metrics = buildUnnamed129();
     o.name = 'foo';
     o.outputFormat = 'foo';
     o.reportDefinitionId = 'foo';
@@ -6536,7 +6617,7 @@
       o.csvDelimiter!,
       unittest.equals('foo'),
     );
-    checkUnnamed127(o.dimensions!);
+    checkUnnamed128(o.dimensions!);
     unittest.expect(
       o.envgroupHostname!,
       unittest.equals('foo'),
@@ -6553,7 +6634,7 @@
       o.limit!,
       unittest.equals(42),
     );
-    checkUnnamed128(o.metrics!);
+    checkUnnamed129(o.metrics!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -6584,23 +6665,6 @@
   buildCounterGoogleCloudApigeeV1Query--;
 }
 
-core.List<core.String> buildUnnamed129() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed129(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed130() => [
       'foo',
       'foo',
@@ -6618,14 +6682,31 @@
   );
 }
 
+core.List<core.String> buildUnnamed131() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed131(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGoogleCloudApigeeV1QueryMetadata = 0;
 api.GoogleCloudApigeeV1QueryMetadata buildGoogleCloudApigeeV1QueryMetadata() {
   final o = api.GoogleCloudApigeeV1QueryMetadata();
   buildCounterGoogleCloudApigeeV1QueryMetadata++;
   if (buildCounterGoogleCloudApigeeV1QueryMetadata < 3) {
-    o.dimensions = buildUnnamed129();
+    o.dimensions = buildUnnamed130();
     o.endTimestamp = 'foo';
-    o.metrics = buildUnnamed130();
+    o.metrics = buildUnnamed131();
     o.outputFormat = 'foo';
     o.startTimestamp = 'foo';
     o.timeUnit = 'foo';
@@ -6638,12 +6719,12 @@
     api.GoogleCloudApigeeV1QueryMetadata o) {
   buildCounterGoogleCloudApigeeV1QueryMetadata++;
   if (buildCounterGoogleCloudApigeeV1QueryMetadata < 3) {
-    checkUnnamed129(o.dimensions!);
+    checkUnnamed130(o.dimensions!);
     unittest.expect(
       o.endTimestamp!,
       unittest.equals('foo'),
     );
-    checkUnnamed130(o.metrics!);
+    checkUnnamed131(o.metrics!);
     unittest.expect(
       o.outputFormat!,
       unittest.equals('foo'),
@@ -6734,23 +6815,23 @@
   buildCounterGoogleCloudApigeeV1Quota--;
 }
 
-core.List<api.GoogleCloudApigeeV1RateRange> buildUnnamed131() => [
+core.List<api.GoogleCloudApigeeV1RateRange> buildUnnamed132() => [
       buildGoogleCloudApigeeV1RateRange(),
       buildGoogleCloudApigeeV1RateRange(),
     ];
 
-void checkUnnamed131(core.List<api.GoogleCloudApigeeV1RateRange> o) {
+void checkUnnamed132(core.List<api.GoogleCloudApigeeV1RateRange> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1RateRange(o[0]);
   checkGoogleCloudApigeeV1RateRange(o[1]);
 }
 
-core.List<api.GoogleCloudApigeeV1RevenueShareRange> buildUnnamed132() => [
+core.List<api.GoogleCloudApigeeV1RevenueShareRange> buildUnnamed133() => [
       buildGoogleCloudApigeeV1RevenueShareRange(),
       buildGoogleCloudApigeeV1RevenueShareRange(),
     ];
 
-void checkUnnamed132(core.List<api.GoogleCloudApigeeV1RevenueShareRange> o) {
+void checkUnnamed133(core.List<api.GoogleCloudApigeeV1RevenueShareRange> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1RevenueShareRange(o[0]);
   checkGoogleCloudApigeeV1RevenueShareRange(o[1]);
@@ -6763,7 +6844,7 @@
   if (buildCounterGoogleCloudApigeeV1RatePlan < 3) {
     o.apiproduct = 'foo';
     o.billingPeriod = 'foo';
-    o.consumptionPricingRates = buildUnnamed131();
+    o.consumptionPricingRates = buildUnnamed132();
     o.consumptionPricingType = 'foo';
     o.createdAt = 'foo';
     o.currencyCode = 'foo';
@@ -6775,7 +6856,7 @@
     o.lastModifiedAt = 'foo';
     o.name = 'foo';
     o.paymentFundingModel = 'foo';
-    o.revenueShareRates = buildUnnamed132();
+    o.revenueShareRates = buildUnnamed133();
     o.revenueShareType = 'foo';
     o.setupFee = buildGoogleTypeMoney();
     o.startTime = 'foo';
@@ -6796,7 +6877,7 @@
       o.billingPeriod!,
       unittest.equals('foo'),
     );
-    checkUnnamed131(o.consumptionPricingRates!);
+    checkUnnamed132(o.consumptionPricingRates!);
     unittest.expect(
       o.consumptionPricingType!,
       unittest.equals('foo'),
@@ -6838,7 +6919,7 @@
       o.paymentFundingModel!,
       unittest.equals('foo'),
     );
-    checkUnnamed132(o.revenueShareRates!);
+    checkUnnamed133(o.revenueShareRates!);
     unittest.expect(
       o.revenueShareType!,
       unittest.equals('foo'),
@@ -6951,12 +7032,12 @@
   buildCounterGoogleCloudApigeeV1ReferenceConfig--;
 }
 
-core.List<api.GoogleCloudApigeeV1ResourceStatus> buildUnnamed133() => [
+core.List<api.GoogleCloudApigeeV1ResourceStatus> buildUnnamed134() => [
       buildGoogleCloudApigeeV1ResourceStatus(),
       buildGoogleCloudApigeeV1ResourceStatus(),
     ];
 
-void checkUnnamed133(core.List<api.GoogleCloudApigeeV1ResourceStatus> o) {
+void checkUnnamed134(core.List<api.GoogleCloudApigeeV1ResourceStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1ResourceStatus(o[0]);
   checkGoogleCloudApigeeV1ResourceStatus(o[1]);
@@ -6970,7 +7051,7 @@
   if (buildCounterGoogleCloudApigeeV1ReportInstanceStatusRequest < 3) {
     o.instanceUid = 'foo';
     o.reportTime = 'foo';
-    o.resources = buildUnnamed133();
+    o.resources = buildUnnamed134();
   }
   buildCounterGoogleCloudApigeeV1ReportInstanceStatusRequest--;
   return o;
@@ -6988,7 +7069,7 @@
       o.reportTime!,
       unittest.equals('foo'),
     );
-    checkUnnamed133(o.resources!);
+    checkUnnamed134(o.resources!);
   }
   buildCounterGoogleCloudApigeeV1ReportInstanceStatusRequest--;
 }
@@ -7010,12 +7091,12 @@
   buildCounterGoogleCloudApigeeV1ReportInstanceStatusResponse--;
 }
 
-core.List<api.GoogleCloudApigeeV1Attribute> buildUnnamed134() => [
+core.List<api.GoogleCloudApigeeV1Attribute> buildUnnamed135() => [
       buildGoogleCloudApigeeV1Attribute(),
       buildGoogleCloudApigeeV1Attribute(),
     ];
 
-void checkUnnamed134(core.List<api.GoogleCloudApigeeV1Attribute> o) {
+void checkUnnamed135(core.List<api.GoogleCloudApigeeV1Attribute> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Attribute(o[0]);
   checkGoogleCloudApigeeV1Attribute(o[1]);
@@ -7027,7 +7108,7 @@
   buildCounterGoogleCloudApigeeV1ReportProperty++;
   if (buildCounterGoogleCloudApigeeV1ReportProperty < 3) {
     o.property = 'foo';
-    o.value = buildUnnamed134();
+    o.value = buildUnnamed135();
   }
   buildCounterGoogleCloudApigeeV1ReportProperty--;
   return o;
@@ -7041,7 +7122,7 @@
       o.property!,
       unittest.equals('foo'),
     );
-    checkUnnamed134(o.value!);
+    checkUnnamed135(o.value!);
   }
   buildCounterGoogleCloudApigeeV1ReportProperty--;
 }
@@ -7102,12 +7183,12 @@
   buildCounterGoogleCloudApigeeV1ResourceFile--;
 }
 
-core.List<api.GoogleCloudApigeeV1ResourceFile> buildUnnamed135() => [
+core.List<api.GoogleCloudApigeeV1ResourceFile> buildUnnamed136() => [
       buildGoogleCloudApigeeV1ResourceFile(),
       buildGoogleCloudApigeeV1ResourceFile(),
     ];
 
-void checkUnnamed135(core.List<api.GoogleCloudApigeeV1ResourceFile> o) {
+void checkUnnamed136(core.List<api.GoogleCloudApigeeV1ResourceFile> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1ResourceFile(o[0]);
   checkGoogleCloudApigeeV1ResourceFile(o[1]);
@@ -7118,7 +7199,7 @@
   final o = api.GoogleCloudApigeeV1ResourceFiles();
   buildCounterGoogleCloudApigeeV1ResourceFiles++;
   if (buildCounterGoogleCloudApigeeV1ResourceFiles < 3) {
-    o.resourceFile = buildUnnamed135();
+    o.resourceFile = buildUnnamed136();
   }
   buildCounterGoogleCloudApigeeV1ResourceFiles--;
   return o;
@@ -7128,17 +7209,17 @@
     api.GoogleCloudApigeeV1ResourceFiles o) {
   buildCounterGoogleCloudApigeeV1ResourceFiles++;
   if (buildCounterGoogleCloudApigeeV1ResourceFiles < 3) {
-    checkUnnamed135(o.resourceFile!);
+    checkUnnamed136(o.resourceFile!);
   }
   buildCounterGoogleCloudApigeeV1ResourceFiles--;
 }
 
-core.List<api.GoogleCloudApigeeV1RevisionStatus> buildUnnamed136() => [
+core.List<api.GoogleCloudApigeeV1RevisionStatus> buildUnnamed137() => [
       buildGoogleCloudApigeeV1RevisionStatus(),
       buildGoogleCloudApigeeV1RevisionStatus(),
     ];
 
-void checkUnnamed136(core.List<api.GoogleCloudApigeeV1RevisionStatus> o) {
+void checkUnnamed137(core.List<api.GoogleCloudApigeeV1RevisionStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1RevisionStatus(o[0]);
   checkGoogleCloudApigeeV1RevisionStatus(o[1]);
@@ -7150,7 +7231,7 @@
   buildCounterGoogleCloudApigeeV1ResourceStatus++;
   if (buildCounterGoogleCloudApigeeV1ResourceStatus < 3) {
     o.resource = 'foo';
-    o.revisions = buildUnnamed136();
+    o.revisions = buildUnnamed137();
     o.totalReplicas = 42;
     o.uid = 'foo';
   }
@@ -7166,7 +7247,7 @@
       o.resource!,
       unittest.equals('foo'),
     );
-    checkUnnamed136(o.revisions!);
+    checkUnnamed137(o.revisions!);
     unittest.expect(
       o.totalReplicas!,
       unittest.equals(42),
@@ -7179,23 +7260,23 @@
   buildCounterGoogleCloudApigeeV1ResourceStatus--;
 }
 
-core.List<api.GoogleCloudApigeeV1Access> buildUnnamed137() => [
+core.List<api.GoogleCloudApigeeV1Access> buildUnnamed138() => [
       buildGoogleCloudApigeeV1Access(),
       buildGoogleCloudApigeeV1Access(),
     ];
 
-void checkUnnamed137(core.List<api.GoogleCloudApigeeV1Access> o) {
+void checkUnnamed138(core.List<api.GoogleCloudApigeeV1Access> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Access(o[0]);
   checkGoogleCloudApigeeV1Access(o[1]);
 }
 
-core.List<api.GoogleCloudApigeeV1Property> buildUnnamed138() => [
+core.List<api.GoogleCloudApigeeV1Property> buildUnnamed139() => [
       buildGoogleCloudApigeeV1Property(),
       buildGoogleCloudApigeeV1Property(),
     ];
 
-void checkUnnamed138(core.List<api.GoogleCloudApigeeV1Property> o) {
+void checkUnnamed139(core.List<api.GoogleCloudApigeeV1Property> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Property(o[0]);
   checkGoogleCloudApigeeV1Property(o[1]);
@@ -7207,9 +7288,9 @@
   buildCounterGoogleCloudApigeeV1Result++;
   if (buildCounterGoogleCloudApigeeV1Result < 3) {
     o.ActionResult = 'foo';
-    o.accessList = buildUnnamed137();
+    o.accessList = buildUnnamed138();
     o.content = 'foo';
-    o.headers = buildUnnamed138();
+    o.headers = buildUnnamed139();
     o.properties = buildGoogleCloudApigeeV1Properties();
     o.reasonPhrase = 'foo';
     o.statusCode = 'foo';
@@ -7228,12 +7309,12 @@
       o.ActionResult!,
       unittest.equals('foo'),
     );
-    checkUnnamed137(o.accessList!);
+    checkUnnamed138(o.accessList!);
     unittest.expect(
       o.content!,
       unittest.equals('foo'),
     );
-    checkUnnamed138(o.headers!);
+    checkUnnamed139(o.headers!);
     checkGoogleCloudApigeeV1Properties(o.properties!);
     unittest.expect(
       o.reasonPhrase!,
@@ -7293,12 +7374,12 @@
   buildCounterGoogleCloudApigeeV1RevenueShareRange--;
 }
 
-core.List<api.GoogleCloudApigeeV1UpdateError> buildUnnamed139() => [
+core.List<api.GoogleCloudApigeeV1UpdateError> buildUnnamed140() => [
       buildGoogleCloudApigeeV1UpdateError(),
       buildGoogleCloudApigeeV1UpdateError(),
     ];
 
-void checkUnnamed139(core.List<api.GoogleCloudApigeeV1UpdateError> o) {
+void checkUnnamed140(core.List<api.GoogleCloudApigeeV1UpdateError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1UpdateError(o[0]);
   checkGoogleCloudApigeeV1UpdateError(o[1]);
@@ -7309,7 +7390,7 @@
   final o = api.GoogleCloudApigeeV1RevisionStatus();
   buildCounterGoogleCloudApigeeV1RevisionStatus++;
   if (buildCounterGoogleCloudApigeeV1RevisionStatus < 3) {
-    o.errors = buildUnnamed139();
+    o.errors = buildUnnamed140();
     o.jsonSpec = 'foo';
     o.replicas = 42;
     o.revisionId = 'foo';
@@ -7322,7 +7403,7 @@
     api.GoogleCloudApigeeV1RevisionStatus o) {
   buildCounterGoogleCloudApigeeV1RevisionStatus++;
   if (buildCounterGoogleCloudApigeeV1RevisionStatus < 3) {
-    checkUnnamed139(o.errors!);
+    checkUnnamed140(o.errors!);
     unittest.expect(
       o.jsonSpec!,
       unittest.equals('foo'),
@@ -7420,12 +7501,12 @@
 }
 
 core.List<api.GoogleCloudApigeeV1RuntimeTraceConfigOverride>
-    buildUnnamed140() => [
+    buildUnnamed141() => [
           buildGoogleCloudApigeeV1RuntimeTraceConfigOverride(),
           buildGoogleCloudApigeeV1RuntimeTraceConfigOverride(),
         ];
 
-void checkUnnamed140(
+void checkUnnamed141(
     core.List<api.GoogleCloudApigeeV1RuntimeTraceConfigOverride> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1RuntimeTraceConfigOverride(o[0]);
@@ -7441,7 +7522,7 @@
     o.endpoint = 'foo';
     o.exporter = 'foo';
     o.name = 'foo';
-    o.overrides = buildUnnamed140();
+    o.overrides = buildUnnamed141();
     o.revisionCreateTime = 'foo';
     o.revisionId = 'foo';
     o.samplingConfig = buildGoogleCloudApigeeV1RuntimeTraceSamplingConfig();
@@ -7466,7 +7547,7 @@
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed140(o.overrides!);
+    checkUnnamed141(o.overrides!);
     unittest.expect(
       o.revisionCreateTime!,
       unittest.equals('foo'),
@@ -7555,23 +7636,23 @@
   buildCounterGoogleCloudApigeeV1RuntimeTraceSamplingConfig--;
 }
 
-core.List<api.GoogleCloudApigeeV1SchemaSchemaElement> buildUnnamed141() => [
+core.List<api.GoogleCloudApigeeV1SchemaSchemaElement> buildUnnamed142() => [
       buildGoogleCloudApigeeV1SchemaSchemaElement(),
       buildGoogleCloudApigeeV1SchemaSchemaElement(),
     ];
 
-void checkUnnamed141(core.List<api.GoogleCloudApigeeV1SchemaSchemaElement> o) {
+void checkUnnamed142(core.List<api.GoogleCloudApigeeV1SchemaSchemaElement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1SchemaSchemaElement(o[0]);
   checkGoogleCloudApigeeV1SchemaSchemaElement(o[1]);
 }
 
-core.List<core.String> buildUnnamed142() => [
+core.List<core.String> buildUnnamed143() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed142(core.List<core.String> o) {
+void checkUnnamed143(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -7583,12 +7664,12 @@
   );
 }
 
-core.List<api.GoogleCloudApigeeV1SchemaSchemaElement> buildUnnamed143() => [
+core.List<api.GoogleCloudApigeeV1SchemaSchemaElement> buildUnnamed144() => [
       buildGoogleCloudApigeeV1SchemaSchemaElement(),
       buildGoogleCloudApigeeV1SchemaSchemaElement(),
     ];
 
-void checkUnnamed143(core.List<api.GoogleCloudApigeeV1SchemaSchemaElement> o) {
+void checkUnnamed144(core.List<api.GoogleCloudApigeeV1SchemaSchemaElement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1SchemaSchemaElement(o[0]);
   checkGoogleCloudApigeeV1SchemaSchemaElement(o[1]);
@@ -7599,9 +7680,9 @@
   final o = api.GoogleCloudApigeeV1Schema();
   buildCounterGoogleCloudApigeeV1Schema++;
   if (buildCounterGoogleCloudApigeeV1Schema < 3) {
-    o.dimensions = buildUnnamed141();
-    o.meta = buildUnnamed142();
-    o.metrics = buildUnnamed143();
+    o.dimensions = buildUnnamed142();
+    o.meta = buildUnnamed143();
+    o.metrics = buildUnnamed144();
   }
   buildCounterGoogleCloudApigeeV1Schema--;
   return o;
@@ -7610,9 +7691,9 @@
 void checkGoogleCloudApigeeV1Schema(api.GoogleCloudApigeeV1Schema o) {
   buildCounterGoogleCloudApigeeV1Schema++;
   if (buildCounterGoogleCloudApigeeV1Schema < 3) {
-    checkUnnamed141(o.dimensions!);
-    checkUnnamed142(o.meta!);
-    checkUnnamed143(o.metrics!);
+    checkUnnamed142(o.dimensions!);
+    checkUnnamed143(o.meta!);
+    checkUnnamed144(o.metrics!);
   }
   buildCounterGoogleCloudApigeeV1Schema--;
 }
@@ -7677,12 +7758,12 @@
   buildCounterGoogleCloudApigeeV1SchemaSchemaProperty--;
 }
 
-core.List<core.String> buildUnnamed144() => [
+core.List<core.String> buildUnnamed145() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed144(core.List<core.String> o) {
+void checkUnnamed145(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -7700,7 +7781,7 @@
   final o = api.GoogleCloudApigeeV1ServiceIssuersMapping();
   buildCounterGoogleCloudApigeeV1ServiceIssuersMapping++;
   if (buildCounterGoogleCloudApigeeV1ServiceIssuersMapping < 3) {
-    o.emailIds = buildUnnamed144();
+    o.emailIds = buildUnnamed145();
     o.service = 'foo';
   }
   buildCounterGoogleCloudApigeeV1ServiceIssuersMapping--;
@@ -7711,7 +7792,7 @@
     api.GoogleCloudApigeeV1ServiceIssuersMapping o) {
   buildCounterGoogleCloudApigeeV1ServiceIssuersMapping++;
   if (buildCounterGoogleCloudApigeeV1ServiceIssuersMapping < 3) {
-    checkUnnamed144(o.emailIds!);
+    checkUnnamed145(o.emailIds!);
     unittest.expect(
       o.service!,
       unittest.equals('foo'),
@@ -7768,12 +7849,12 @@
   buildCounterGoogleCloudApigeeV1SetAddonsRequest--;
 }
 
-core.List<core.String> buildUnnamed145() => [
+core.List<core.String> buildUnnamed146() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed145(core.List<core.String> o) {
+void checkUnnamed146(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -7793,7 +7874,7 @@
     o.latestRevisionId = 'foo';
     o.metaData = buildGoogleCloudApigeeV1EntityMetadata();
     o.name = 'foo';
-    o.revision = buildUnnamed145();
+    o.revision = buildUnnamed146();
   }
   buildCounterGoogleCloudApigeeV1SharedFlow--;
   return o;
@@ -7811,17 +7892,17 @@
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed145(o.revision!);
+    checkUnnamed146(o.revision!);
   }
   buildCounterGoogleCloudApigeeV1SharedFlow--;
 }
 
-core.Map<core.String, core.String> buildUnnamed146() => {
+core.Map<core.String, core.String> buildUnnamed147() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed146(core.Map<core.String, core.String> o) {
+void checkUnnamed147(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -7833,23 +7914,6 @@
   );
 }
 
-core.List<core.String> buildUnnamed147() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed147(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed148() => [
       'foo',
       'foo',
@@ -7884,6 +7948,23 @@
   );
 }
 
+core.List<core.String> buildUnnamed150() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed150(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGoogleCloudApigeeV1SharedFlowRevision = 0;
 api.GoogleCloudApigeeV1SharedFlowRevision
     buildGoogleCloudApigeeV1SharedFlowRevision() {
@@ -7895,14 +7976,14 @@
     o.createdAt = 'foo';
     o.description = 'foo';
     o.displayName = 'foo';
-    o.entityMetaDataAsProperties = buildUnnamed146();
+    o.entityMetaDataAsProperties = buildUnnamed147();
     o.lastModifiedAt = 'foo';
     o.name = 'foo';
-    o.policies = buildUnnamed147();
+    o.policies = buildUnnamed148();
     o.resourceFiles = buildGoogleCloudApigeeV1ResourceFiles();
-    o.resources = buildUnnamed148();
+    o.resources = buildUnnamed149();
     o.revision = 'foo';
-    o.sharedFlows = buildUnnamed149();
+    o.sharedFlows = buildUnnamed150();
     o.type = 'foo';
   }
   buildCounterGoogleCloudApigeeV1SharedFlowRevision--;
@@ -7930,7 +8011,7 @@
       o.displayName!,
       unittest.equals('foo'),
     );
-    checkUnnamed146(o.entityMetaDataAsProperties!);
+    checkUnnamed147(o.entityMetaDataAsProperties!);
     unittest.expect(
       o.lastModifiedAt!,
       unittest.equals('foo'),
@@ -7939,14 +8020,14 @@
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed147(o.policies!);
+    checkUnnamed148(o.policies!);
     checkGoogleCloudApigeeV1ResourceFiles(o.resourceFiles!);
-    checkUnnamed148(o.resources!);
+    checkUnnamed149(o.resources!);
     unittest.expect(
       o.revision!,
       unittest.equals('foo'),
     );
-    checkUnnamed149(o.sharedFlows!);
+    checkUnnamed150(o.sharedFlows!);
     unittest.expect(
       o.type!,
       unittest.equals('foo'),
@@ -7955,24 +8036,24 @@
   buildCounterGoogleCloudApigeeV1SharedFlowRevision--;
 }
 
-core.List<api.GoogleCloudApigeeV1StatsEnvironmentStats> buildUnnamed150() => [
+core.List<api.GoogleCloudApigeeV1StatsEnvironmentStats> buildUnnamed151() => [
       buildGoogleCloudApigeeV1StatsEnvironmentStats(),
       buildGoogleCloudApigeeV1StatsEnvironmentStats(),
     ];
 
-void checkUnnamed150(
+void checkUnnamed151(
     core.List<api.GoogleCloudApigeeV1StatsEnvironmentStats> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1StatsEnvironmentStats(o[0]);
   checkGoogleCloudApigeeV1StatsEnvironmentStats(o[1]);
 }
 
-core.List<api.GoogleCloudApigeeV1StatsHostStats> buildUnnamed151() => [
+core.List<api.GoogleCloudApigeeV1StatsHostStats> buildUnnamed152() => [
       buildGoogleCloudApigeeV1StatsHostStats(),
       buildGoogleCloudApigeeV1StatsHostStats(),
     ];
 
-void checkUnnamed151(core.List<api.GoogleCloudApigeeV1StatsHostStats> o) {
+void checkUnnamed152(core.List<api.GoogleCloudApigeeV1StatsHostStats> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1StatsHostStats(o[0]);
   checkGoogleCloudApigeeV1StatsHostStats(o[1]);
@@ -7983,8 +8064,8 @@
   final o = api.GoogleCloudApigeeV1Stats();
   buildCounterGoogleCloudApigeeV1Stats++;
   if (buildCounterGoogleCloudApigeeV1Stats < 3) {
-    o.environments = buildUnnamed150();
-    o.hosts = buildUnnamed151();
+    o.environments = buildUnnamed151();
+    o.hosts = buildUnnamed152();
     o.metaData = buildGoogleCloudApigeeV1Metadata();
   }
   buildCounterGoogleCloudApigeeV1Stats--;
@@ -7994,30 +8075,30 @@
 void checkGoogleCloudApigeeV1Stats(api.GoogleCloudApigeeV1Stats o) {
   buildCounterGoogleCloudApigeeV1Stats++;
   if (buildCounterGoogleCloudApigeeV1Stats < 3) {
-    checkUnnamed150(o.environments!);
-    checkUnnamed151(o.hosts!);
+    checkUnnamed151(o.environments!);
+    checkUnnamed152(o.hosts!);
     checkGoogleCloudApigeeV1Metadata(o.metaData!);
   }
   buildCounterGoogleCloudApigeeV1Stats--;
 }
 
-core.List<api.GoogleCloudApigeeV1DimensionMetric> buildUnnamed152() => [
+core.List<api.GoogleCloudApigeeV1DimensionMetric> buildUnnamed153() => [
       buildGoogleCloudApigeeV1DimensionMetric(),
       buildGoogleCloudApigeeV1DimensionMetric(),
     ];
 
-void checkUnnamed152(core.List<api.GoogleCloudApigeeV1DimensionMetric> o) {
+void checkUnnamed153(core.List<api.GoogleCloudApigeeV1DimensionMetric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1DimensionMetric(o[0]);
   checkGoogleCloudApigeeV1DimensionMetric(o[1]);
 }
 
-core.List<api.GoogleCloudApigeeV1Metric> buildUnnamed153() => [
+core.List<api.GoogleCloudApigeeV1Metric> buildUnnamed154() => [
       buildGoogleCloudApigeeV1Metric(),
       buildGoogleCloudApigeeV1Metric(),
     ];
 
-void checkUnnamed153(core.List<api.GoogleCloudApigeeV1Metric> o) {
+void checkUnnamed154(core.List<api.GoogleCloudApigeeV1Metric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Metric(o[0]);
   checkGoogleCloudApigeeV1Metric(o[1]);
@@ -8029,8 +8110,8 @@
   final o = api.GoogleCloudApigeeV1StatsEnvironmentStats();
   buildCounterGoogleCloudApigeeV1StatsEnvironmentStats++;
   if (buildCounterGoogleCloudApigeeV1StatsEnvironmentStats < 3) {
-    o.dimensions = buildUnnamed152();
-    o.metrics = buildUnnamed153();
+    o.dimensions = buildUnnamed153();
+    o.metrics = buildUnnamed154();
     o.name = 'foo';
   }
   buildCounterGoogleCloudApigeeV1StatsEnvironmentStats--;
@@ -8041,8 +8122,8 @@
     api.GoogleCloudApigeeV1StatsEnvironmentStats o) {
   buildCounterGoogleCloudApigeeV1StatsEnvironmentStats++;
   if (buildCounterGoogleCloudApigeeV1StatsEnvironmentStats < 3) {
-    checkUnnamed152(o.dimensions!);
-    checkUnnamed153(o.metrics!);
+    checkUnnamed153(o.dimensions!);
+    checkUnnamed154(o.metrics!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -8051,23 +8132,23 @@
   buildCounterGoogleCloudApigeeV1StatsEnvironmentStats--;
 }
 
-core.List<api.GoogleCloudApigeeV1DimensionMetric> buildUnnamed154() => [
+core.List<api.GoogleCloudApigeeV1DimensionMetric> buildUnnamed155() => [
       buildGoogleCloudApigeeV1DimensionMetric(),
       buildGoogleCloudApigeeV1DimensionMetric(),
     ];
 
-void checkUnnamed154(core.List<api.GoogleCloudApigeeV1DimensionMetric> o) {
+void checkUnnamed155(core.List<api.GoogleCloudApigeeV1DimensionMetric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1DimensionMetric(o[0]);
   checkGoogleCloudApigeeV1DimensionMetric(o[1]);
 }
 
-core.List<api.GoogleCloudApigeeV1Metric> buildUnnamed155() => [
+core.List<api.GoogleCloudApigeeV1Metric> buildUnnamed156() => [
       buildGoogleCloudApigeeV1Metric(),
       buildGoogleCloudApigeeV1Metric(),
     ];
 
-void checkUnnamed155(core.List<api.GoogleCloudApigeeV1Metric> o) {
+void checkUnnamed156(core.List<api.GoogleCloudApigeeV1Metric> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudApigeeV1Metric(o[0]);
   checkGoogleCloudApigeeV1Metric(o[1]);
@@ -8078,8 +8159,8 @@
   final o = api.GoogleCloudApigeeV1StatsHostStats();
   buildCounterGoogleCloudApigeeV1StatsHostStats++;
   if (buildCounterGoogleCloudApigeeV1StatsHostStats < 3) {
-    o.dimensions = buildUnnamed154();
-    o.metrics = buildUnnamed155();
+    o.dimensions = buildUnnamed155();
+    o.metrics = buildUnnamed156();
     o.name = 'foo';
   }
   buildCounterGoogleCloudApigeeV1StatsHostStats--;
@@ -8090,8 +8171,8 @@
     api.GoogleCloudApigeeV1StatsHostStats o) {
   buildCounterGoogleCloudApigeeV1StatsHostStats++;
   if (buildCounterGoogleCloudApigeeV1StatsHostStats < 3) {
-    checkUnnamed154(o.dimensions!);
-    checkUnnamed155(o.metrics!);
+    checkUnnamed155(o.dimensions!);
+    checkUnnamed156(o.metrics!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -8123,12 +8204,12 @@
   buildCounterGoogleCloudApigeeV1Subscription--;
 }
 
-core.List<core.String> buildUnnamed156() => [
+core.List<core.String> buildUnnamed157() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed156(core.List<core.String> o) {
+void checkUnnamed157(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -8147,7 +8228,7 @@
   buildCounterGoogleCloudApigeeV1SyncAuthorization++;
   if (buildCounterGoogleCloudApigeeV1SyncAuthorization < 3) {
     o.etag = 'foo';
-    o.identities = buildUnnamed156();
+    o.identities = buildUnnamed157();
   }
   buildCounterGoogleCloudApigeeV1SyncAuthorization--;
   return o;
@@ -8161,7 +8242,7 @@
       o.etag!,
       unittest.equals('foo'),
     );
-    checkUnnamed156(o.identities!);
+    checkUnnamed157(o.identities!);
   }
   buildCounterGoogleCloudApigeeV1SyncAuthorization--;
 }
@@ -8285,23 +8366,6 @@
   buildCounterGoogleCloudApigeeV1TestDatastoreResponse--;
 }
 
-core.List<core.String> buildUnnamed157() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed157(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed158() => [
       'foo',
       'foo',
@@ -8319,19 +8383,36 @@
   );
 }
 
+core.List<core.String> buildUnnamed159() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed159(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGoogleCloudApigeeV1TlsInfo = 0;
 api.GoogleCloudApigeeV1TlsInfo buildGoogleCloudApigeeV1TlsInfo() {
   final o = api.GoogleCloudApigeeV1TlsInfo();
   buildCounterGoogleCloudApigeeV1TlsInfo++;
   if (buildCounterGoogleCloudApigeeV1TlsInfo < 3) {
-    o.ciphers = buildUnnamed157();
+    o.ciphers = buildUnnamed158();
     o.clientAuthEnabled = true;
     o.commonName = buildGoogleCloudApigeeV1TlsInfoCommonName();
     o.enabled = true;
     o.ignoreValidationErrors = true;
     o.keyAlias = 'foo';
     o.keyStore = 'foo';
-    o.protocols = buildUnnamed158();
+    o.protocols = buildUnnamed159();
     o.trustStore = 'foo';
   }
   buildCounterGoogleCloudApigeeV1TlsInfo--;
@@ -8341,7 +8422,7 @@
 void checkGoogleCloudApigeeV1TlsInfo(api.GoogleCloudApigeeV1TlsInfo o) {
   buildCounterGoogleCloudApigeeV1TlsInfo++;
   if (buildCounterGoogleCloudApigeeV1TlsInfo < 3) {
-    checkUnnamed157(o.ciphers!);
+    checkUnnamed158(o.ciphers!);
     unittest.expect(o.clientAuthEnabled!, unittest.isTrue);
     checkGoogleCloudApigeeV1TlsInfoCommonName(o.commonName!);
     unittest.expect(o.enabled!, unittest.isTrue);
@@ -8354,7 +8435,7 @@
       o.keyStore!,
       unittest.equals('foo'),
     );
-    checkUnnamed158(o.protocols!);
+    checkUnnamed159(o.protocols!);
     unittest.expect(
       o.trustStore!,
       unittest.equals('foo'),
@@ -8389,23 +8470,6 @@
   buildCounterGoogleCloudApigeeV1TlsInfoCommonName--;
 }
 
-core.List<core.String> buildUnnamed159() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed159(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed160() => [
       'foo',
       'foo',
@@ -8423,19 +8487,36 @@
   );
 }
 
+core.List<core.String> buildUnnamed161() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed161(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGoogleCloudApigeeV1TlsInfoConfig = 0;
 api.GoogleCloudApigeeV1TlsInfoConfig buildGoogleCloudApigeeV1TlsInfoConfig() {
   final o = api.GoogleCloudApigeeV1TlsInfoConfig();
   buildCounterGoogleCloudApigeeV1TlsInfoConfig++;
   if (buildCounterGoogleCloudApigeeV1TlsInfoConfig < 3) {
-    o.ciphers = buildUnnamed159();
+    o.ciphers = buildUnnamed160();
     o.clientAuthEnabled = true;
     o.commonName = buildGoogleCloudApigeeV1CommonNameConfig();
     o.enabled = true;
     o.ignoreValidationErrors = true;
     o.keyAlias = 'foo';
     o.keyAliasReference = buildGoogleCloudApigeeV1KeyAliasReference();
-    o.protocols = buildUnnamed160();
+    o.protocols = buildUnnamed161();
     o.trustStore = 'foo';
   }
   buildCounterGoogleCloudApigeeV1TlsInfoConfig--;
@@ -8446,7 +8527,7 @@
     api.GoogleCloudApigeeV1TlsInfoConfig o) {
   buildCounterGoogleCloudApigeeV1TlsInfoConfig++;
   if (buildCounterGoogleCloudApigeeV1TlsInfoConfig < 3) {
-    checkUnnamed159(o.ciphers!);
+    checkUnnamed160(o.ciphers!);
     unittest.expect(o.clientAuthEnabled!, unittest.isTrue);
     checkGoogleCloudApigeeV1CommonNameConfig(o.commonName!);
     unittest.expect(o.enabled!, unittest.isTrue);
@@ -8456,7 +8537,7 @@
       unittest.equals('foo'),
     );
     checkGoogleCloudApigeeV1KeyAliasReference(o.keyAliasReference!);
-    checkUnnamed160(o.protocols!);
+    checkUnnamed161(o.protocols!);
     unittest.expect(
       o.trustStore!,
       unittest.equals('foo'),
@@ -8591,12 +8672,12 @@
   buildCounterGoogleCloudApigeeV1UpdateError--;
 }
 
-core.List<api.GoogleIamV1AuditLogConfig> buildUnnamed161() => [
+core.List<api.GoogleIamV1AuditLogConfig> buildUnnamed162() => [
       buildGoogleIamV1AuditLogConfig(),
       buildGoogleIamV1AuditLogConfig(),
     ];
 
-void checkUnnamed161(core.List<api.GoogleIamV1AuditLogConfig> o) {
+void checkUnnamed162(core.List<api.GoogleIamV1AuditLogConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleIamV1AuditLogConfig(o[0]);
   checkGoogleIamV1AuditLogConfig(o[1]);
@@ -8607,7 +8688,7 @@
   final o = api.GoogleIamV1AuditConfig();
   buildCounterGoogleIamV1AuditConfig++;
   if (buildCounterGoogleIamV1AuditConfig < 3) {
-    o.auditLogConfigs = buildUnnamed161();
+    o.auditLogConfigs = buildUnnamed162();
     o.service = 'foo';
   }
   buildCounterGoogleIamV1AuditConfig--;
@@ -8617,7 +8698,7 @@
 void checkGoogleIamV1AuditConfig(api.GoogleIamV1AuditConfig o) {
   buildCounterGoogleIamV1AuditConfig++;
   if (buildCounterGoogleIamV1AuditConfig < 3) {
-    checkUnnamed161(o.auditLogConfigs!);
+    checkUnnamed162(o.auditLogConfigs!);
     unittest.expect(
       o.service!,
       unittest.equals('foo'),
@@ -8626,47 +8707,6 @@
   buildCounterGoogleIamV1AuditConfig--;
 }
 
-core.List<core.String> buildUnnamed162() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed162(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterGoogleIamV1AuditLogConfig = 0;
-api.GoogleIamV1AuditLogConfig buildGoogleIamV1AuditLogConfig() {
-  final o = api.GoogleIamV1AuditLogConfig();
-  buildCounterGoogleIamV1AuditLogConfig++;
-  if (buildCounterGoogleIamV1AuditLogConfig < 3) {
-    o.exemptedMembers = buildUnnamed162();
-    o.logType = 'foo';
-  }
-  buildCounterGoogleIamV1AuditLogConfig--;
-  return o;
-}
-
-void checkGoogleIamV1AuditLogConfig(api.GoogleIamV1AuditLogConfig o) {
-  buildCounterGoogleIamV1AuditLogConfig++;
-  if (buildCounterGoogleIamV1AuditLogConfig < 3) {
-    checkUnnamed162(o.exemptedMembers!);
-    unittest.expect(
-      o.logType!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterGoogleIamV1AuditLogConfig--;
-}
-
 core.List<core.String> buildUnnamed163() => [
       'foo',
       'foo',
@@ -8684,13 +8724,54 @@
   );
 }
 
+core.int buildCounterGoogleIamV1AuditLogConfig = 0;
+api.GoogleIamV1AuditLogConfig buildGoogleIamV1AuditLogConfig() {
+  final o = api.GoogleIamV1AuditLogConfig();
+  buildCounterGoogleIamV1AuditLogConfig++;
+  if (buildCounterGoogleIamV1AuditLogConfig < 3) {
+    o.exemptedMembers = buildUnnamed163();
+    o.logType = 'foo';
+  }
+  buildCounterGoogleIamV1AuditLogConfig--;
+  return o;
+}
+
+void checkGoogleIamV1AuditLogConfig(api.GoogleIamV1AuditLogConfig o) {
+  buildCounterGoogleIamV1AuditLogConfig++;
+  if (buildCounterGoogleIamV1AuditLogConfig < 3) {
+    checkUnnamed163(o.exemptedMembers!);
+    unittest.expect(
+      o.logType!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleIamV1AuditLogConfig--;
+}
+
+core.List<core.String> buildUnnamed164() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed164(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGoogleIamV1Binding = 0;
 api.GoogleIamV1Binding buildGoogleIamV1Binding() {
   final o = api.GoogleIamV1Binding();
   buildCounterGoogleIamV1Binding++;
   if (buildCounterGoogleIamV1Binding < 3) {
     o.condition = buildGoogleTypeExpr();
-    o.members = buildUnnamed163();
+    o.members = buildUnnamed164();
     o.role = 'foo';
   }
   buildCounterGoogleIamV1Binding--;
@@ -8701,7 +8782,7 @@
   buildCounterGoogleIamV1Binding++;
   if (buildCounterGoogleIamV1Binding < 3) {
     checkGoogleTypeExpr(o.condition!);
-    checkUnnamed163(o.members!);
+    checkUnnamed164(o.members!);
     unittest.expect(
       o.role!,
       unittest.equals('foo'),
@@ -8710,23 +8791,23 @@
   buildCounterGoogleIamV1Binding--;
 }
 
-core.List<api.GoogleIamV1AuditConfig> buildUnnamed164() => [
+core.List<api.GoogleIamV1AuditConfig> buildUnnamed165() => [
       buildGoogleIamV1AuditConfig(),
       buildGoogleIamV1AuditConfig(),
     ];
 
-void checkUnnamed164(core.List<api.GoogleIamV1AuditConfig> o) {
+void checkUnnamed165(core.List<api.GoogleIamV1AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleIamV1AuditConfig(o[0]);
   checkGoogleIamV1AuditConfig(o[1]);
 }
 
-core.List<api.GoogleIamV1Binding> buildUnnamed165() => [
+core.List<api.GoogleIamV1Binding> buildUnnamed166() => [
       buildGoogleIamV1Binding(),
       buildGoogleIamV1Binding(),
     ];
 
-void checkUnnamed165(core.List<api.GoogleIamV1Binding> o) {
+void checkUnnamed166(core.List<api.GoogleIamV1Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleIamV1Binding(o[0]);
   checkGoogleIamV1Binding(o[1]);
@@ -8737,8 +8818,8 @@
   final o = api.GoogleIamV1Policy();
   buildCounterGoogleIamV1Policy++;
   if (buildCounterGoogleIamV1Policy < 3) {
-    o.auditConfigs = buildUnnamed164();
-    o.bindings = buildUnnamed165();
+    o.auditConfigs = buildUnnamed165();
+    o.bindings = buildUnnamed166();
     o.etag = 'foo';
     o.version = 42;
   }
@@ -8749,8 +8830,8 @@
 void checkGoogleIamV1Policy(api.GoogleIamV1Policy o) {
   buildCounterGoogleIamV1Policy++;
   if (buildCounterGoogleIamV1Policy < 3) {
-    checkUnnamed164(o.auditConfigs!);
-    checkUnnamed165(o.bindings!);
+    checkUnnamed165(o.auditConfigs!);
+    checkUnnamed166(o.bindings!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -8787,44 +8868,6 @@
   buildCounterGoogleIamV1SetIamPolicyRequest--;
 }
 
-core.List<core.String> buildUnnamed166() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed166(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterGoogleIamV1TestIamPermissionsRequest = 0;
-api.GoogleIamV1TestIamPermissionsRequest
-    buildGoogleIamV1TestIamPermissionsRequest() {
-  final o = api.GoogleIamV1TestIamPermissionsRequest();
-  buildCounterGoogleIamV1TestIamPermissionsRequest++;
-  if (buildCounterGoogleIamV1TestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed166();
-  }
-  buildCounterGoogleIamV1TestIamPermissionsRequest--;
-  return o;
-}
-
-void checkGoogleIamV1TestIamPermissionsRequest(
-    api.GoogleIamV1TestIamPermissionsRequest o) {
-  buildCounterGoogleIamV1TestIamPermissionsRequest++;
-  if (buildCounterGoogleIamV1TestIamPermissionsRequest < 3) {
-    checkUnnamed166(o.permissions!);
-  }
-  buildCounterGoogleIamV1TestIamPermissionsRequest--;
-}
-
 core.List<core.String> buildUnnamed167() => [
       'foo',
       'foo',
@@ -8842,13 +8885,51 @@
   );
 }
 
+core.int buildCounterGoogleIamV1TestIamPermissionsRequest = 0;
+api.GoogleIamV1TestIamPermissionsRequest
+    buildGoogleIamV1TestIamPermissionsRequest() {
+  final o = api.GoogleIamV1TestIamPermissionsRequest();
+  buildCounterGoogleIamV1TestIamPermissionsRequest++;
+  if (buildCounterGoogleIamV1TestIamPermissionsRequest < 3) {
+    o.permissions = buildUnnamed167();
+  }
+  buildCounterGoogleIamV1TestIamPermissionsRequest--;
+  return o;
+}
+
+void checkGoogleIamV1TestIamPermissionsRequest(
+    api.GoogleIamV1TestIamPermissionsRequest o) {
+  buildCounterGoogleIamV1TestIamPermissionsRequest++;
+  if (buildCounterGoogleIamV1TestIamPermissionsRequest < 3) {
+    checkUnnamed167(o.permissions!);
+  }
+  buildCounterGoogleIamV1TestIamPermissionsRequest--;
+}
+
+core.List<core.String> buildUnnamed168() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed168(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGoogleIamV1TestIamPermissionsResponse = 0;
 api.GoogleIamV1TestIamPermissionsResponse
     buildGoogleIamV1TestIamPermissionsResponse() {
   final o = api.GoogleIamV1TestIamPermissionsResponse();
   buildCounterGoogleIamV1TestIamPermissionsResponse++;
   if (buildCounterGoogleIamV1TestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed167();
+    o.permissions = buildUnnamed168();
   }
   buildCounterGoogleIamV1TestIamPermissionsResponse--;
   return o;
@@ -8858,17 +8939,17 @@
     api.GoogleIamV1TestIamPermissionsResponse o) {
   buildCounterGoogleIamV1TestIamPermissionsResponse++;
   if (buildCounterGoogleIamV1TestIamPermissionsResponse < 3) {
-    checkUnnamed167(o.permissions!);
+    checkUnnamed168(o.permissions!);
   }
   buildCounterGoogleIamV1TestIamPermissionsResponse--;
 }
 
-core.List<api.GoogleLongrunningOperation> buildUnnamed168() => [
+core.List<api.GoogleLongrunningOperation> buildUnnamed169() => [
       buildGoogleLongrunningOperation(),
       buildGoogleLongrunningOperation(),
     ];
 
-void checkUnnamed168(core.List<api.GoogleLongrunningOperation> o) {
+void checkUnnamed169(core.List<api.GoogleLongrunningOperation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleLongrunningOperation(o[0]);
   checkGoogleLongrunningOperation(o[1]);
@@ -8881,7 +8962,7 @@
   buildCounterGoogleLongrunningListOperationsResponse++;
   if (buildCounterGoogleLongrunningListOperationsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.operations = buildUnnamed168();
+    o.operations = buildUnnamed169();
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
   return o;
@@ -8895,12 +8976,12 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed168(o.operations!);
+    checkUnnamed169(o.operations!);
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed169() => {
+core.Map<core.String, core.Object?> buildUnnamed170() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -8913,7 +8994,7 @@
       },
     };
 
-void checkUnnamed169(core.Map<core.String, core.Object?> o) {
+void checkUnnamed170(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted12 = (o['x']!) as core.Map;
   unittest.expect(casted12, unittest.hasLength(3));
@@ -8945,7 +9026,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed170() => {
+core.Map<core.String, core.Object?> buildUnnamed171() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -8958,7 +9039,7 @@
       },
     };
 
-void checkUnnamed170(core.Map<core.String, core.Object?> o) {
+void checkUnnamed171(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted14 = (o['x']!) as core.Map;
   unittest.expect(casted14, unittest.hasLength(3));
@@ -8997,9 +9078,9 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     o.done = true;
     o.error = buildGoogleRpcStatus();
-    o.metadata = buildUnnamed169();
+    o.metadata = buildUnnamed170();
     o.name = 'foo';
-    o.response = buildUnnamed170();
+    o.response = buildUnnamed171();
   }
   buildCounterGoogleLongrunningOperation--;
   return o;
@@ -9010,12 +9091,12 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     unittest.expect(o.done!, unittest.isTrue);
     checkGoogleRpcStatus(o.error!);
-    checkUnnamed169(o.metadata!);
+    checkUnnamed170(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed170(o.response!);
+    checkUnnamed171(o.response!);
   }
   buildCounterGoogleLongrunningOperation--;
 }
@@ -9035,12 +9116,12 @@
   buildCounterGoogleProtobufEmpty--;
 }
 
-core.List<api.GoogleRpcPreconditionFailureViolation> buildUnnamed171() => [
+core.List<api.GoogleRpcPreconditionFailureViolation> buildUnnamed172() => [
       buildGoogleRpcPreconditionFailureViolation(),
       buildGoogleRpcPreconditionFailureViolation(),
     ];
 
-void checkUnnamed171(core.List<api.GoogleRpcPreconditionFailureViolation> o) {
+void checkUnnamed172(core.List<api.GoogleRpcPreconditionFailureViolation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleRpcPreconditionFailureViolation(o[0]);
   checkGoogleRpcPreconditionFailureViolation(o[1]);
@@ -9051,7 +9132,7 @@
   final o = api.GoogleRpcPreconditionFailure();
   buildCounterGoogleRpcPreconditionFailure++;
   if (buildCounterGoogleRpcPreconditionFailure < 3) {
-    o.violations = buildUnnamed171();
+    o.violations = buildUnnamed172();
   }
   buildCounterGoogleRpcPreconditionFailure--;
   return o;
@@ -9060,7 +9141,7 @@
 void checkGoogleRpcPreconditionFailure(api.GoogleRpcPreconditionFailure o) {
   buildCounterGoogleRpcPreconditionFailure++;
   if (buildCounterGoogleRpcPreconditionFailure < 3) {
-    checkUnnamed171(o.violations!);
+    checkUnnamed172(o.violations!);
   }
   buildCounterGoogleRpcPreconditionFailure--;
 }
@@ -9099,7 +9180,7 @@
   buildCounterGoogleRpcPreconditionFailureViolation--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed172() => {
+core.Map<core.String, core.Object?> buildUnnamed173() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -9112,7 +9193,7 @@
       },
     };
 
-void checkUnnamed172(core.Map<core.String, core.Object?> o) {
+void checkUnnamed173(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted16 = (o['x']!) as core.Map;
   unittest.expect(casted16, unittest.hasLength(3));
@@ -9144,15 +9225,15 @@
   );
 }
 
-core.List<core.Map<core.String, core.Object?>> buildUnnamed173() => [
-      buildUnnamed172(),
-      buildUnnamed172(),
+core.List<core.Map<core.String, core.Object?>> buildUnnamed174() => [
+      buildUnnamed173(),
+      buildUnnamed173(),
     ];
 
-void checkUnnamed173(core.List<core.Map<core.String, core.Object?>> o) {
+void checkUnnamed174(core.List<core.Map<core.String, core.Object?>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed172(o[0]);
-  checkUnnamed172(o[1]);
+  checkUnnamed173(o[0]);
+  checkUnnamed173(o[1]);
 }
 
 core.int buildCounterGoogleRpcStatus = 0;
@@ -9161,7 +9242,7 @@
   buildCounterGoogleRpcStatus++;
   if (buildCounterGoogleRpcStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed173();
+    o.details = buildUnnamed174();
     o.message = 'foo';
   }
   buildCounterGoogleRpcStatus--;
@@ -9175,7 +9256,7 @@
       o.code!,
       unittest.equals(42),
     );
-    checkUnnamed173(o.details!);
+    checkUnnamed174(o.details!);
     unittest.expect(
       o.message!,
       unittest.equals('foo'),
@@ -9857,6 +9938,16 @@
     });
   });
 
+  unittest.group('obj-schema-GoogleCloudApigeeV1EndpointAttachment', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudApigeeV1EndpointAttachment();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudApigeeV1EndpointAttachment.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudApigeeV1EndpointAttachment(od);
+    });
+  });
+
   unittest.group('obj-schema-GoogleCloudApigeeV1EntityMetadata', () {
     unittest.test('to-json--from-json', () async {
       final o = buildGoogleCloudApigeeV1EntityMetadata();
@@ -10304,6 +10395,18 @@
   });
 
   unittest.group(
+      'obj-schema-GoogleCloudApigeeV1ListEndpointAttachmentsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudApigeeV1ListEndpointAttachmentsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudApigeeV1ListEndpointAttachmentsResponse.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudApigeeV1ListEndpointAttachmentsResponse(od);
+    });
+  });
+
+  unittest.group(
       'obj-schema-GoogleCloudApigeeV1ListEnvironmentGroupAttachmentsResponse',
       () {
     unittest.test('to-json--from-json', () async {
@@ -16707,6 +16810,246 @@
     });
   });
 
+  unittest.group('resource-OrganizationsEndpointAttachmentsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.ApigeeApi(mock).organizations.endpointAttachments;
+      final arg_request = buildGoogleCloudApigeeV1EndpointAttachment();
+      final arg_parent = 'foo';
+      final arg_endpointAttachmentId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudApigeeV1EndpointAttachment.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudApigeeV1EndpointAttachment(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['endpointAttachmentId']!.first,
+          unittest.equals(arg_endpointAttachmentId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          endpointAttachmentId: arg_endpointAttachmentId, $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.ApigeeApi(mock).organizations.endpointAttachments;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.ApigeeApi(mock).organizations.endpointAttachments;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleCloudApigeeV1EndpointAttachment());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleCloudApigeeV1EndpointAttachment(
+          response as api.GoogleCloudApigeeV1EndpointAttachment);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.ApigeeApi(mock).organizations.endpointAttachments;
+      final arg_parent = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudApigeeV1ListEndpointAttachmentsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudApigeeV1ListEndpointAttachmentsResponse(
+          response as api.GoogleCloudApigeeV1ListEndpointAttachmentsResponse);
+    });
+  });
+
   unittest.group('resource-OrganizationsEnvgroupsResource', () {
     unittest.test('method--create', () async {
       final mock = HttpServerMock();
diff --git a/generated/googleapis/test/apikeys/v2_test.dart b/generated/googleapis/test/apikeys/v2_test.dart
index 08bcc21..38cc7fd 100644
--- a/generated/googleapis/test/apikeys/v2_test.dart
+++ b/generated/googleapis/test/apikeys/v2_test.dart
@@ -1209,6 +1209,7 @@
       final arg_filter = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
+      final arg_showDeleted = true;
       final arg_$fields = 'foo';
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         final path = (req.url).path;
@@ -1255,6 +1256,10 @@
           unittest.equals(arg_pageToken),
         );
         unittest.expect(
+          queryMap['showDeleted']!.first,
+          unittest.equals('$arg_showDeleted'),
+        );
+        unittest.expect(
           queryMap['fields']!.first,
           unittest.equals(arg_$fields),
         );
@@ -1269,6 +1274,7 @@
           filter: arg_filter,
           pageSize: arg_pageSize,
           pageToken: arg_pageToken,
+          showDeleted: arg_showDeleted,
           $fields: arg_$fields);
       checkV2ListKeysResponse(response as api.V2ListKeysResponse);
     });
diff --git a/generated/googleapis/test/artifactregistry/v1_test.dart b/generated/googleapis/test/artifactregistry/v1_test.dart
index e144dab..9c87c44 100644
--- a/generated/googleapis/test/artifactregistry/v1_test.dart
+++ b/generated/googleapis/test/artifactregistry/v1_test.dart
@@ -1731,60 +1731,6 @@
     });
   });
 
-  unittest.group('resource-OperationsResource', () {
-    unittest.test('method--get', () async {
-      final mock = HttpServerMock();
-      final res = api.ArtifactRegistryApi(mock).operations;
-      final arg_name = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 3),
-          unittest.equals('v1/'),
-        );
-        pathOffset += 3;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildOperation());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response = await res.get(arg_name, $fields: arg_$fields);
-      checkOperation(response as api.Operation);
-    });
-  });
-
   unittest.group('resource-ProjectsResource', () {
     unittest.test('method--getProjectSettings', () async {
       final mock = HttpServerMock();
@@ -1903,6 +1849,60 @@
     });
   });
 
+  unittest.group('resource-ProjectsLocationsOperationsResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.ArtifactRegistryApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
   unittest.group('resource-ProjectsLocationsRepositoriesResource', () {
     unittest.test('method--create', () async {
       final mock = HttpServerMock();
@@ -2439,10 +2439,7 @@
           await res.import(arg_request, arg_parent, $fields: arg_$fields);
       checkOperation(response as api.Operation);
     });
-  });
 
-  unittest.group('resource-ProjectsLocationsRepositoriesAptartifactsResource',
-      () {
     unittest.test('method--upload', () async {
       // TODO: Implement tests for media upload;
       // TODO: Implement tests for media download;
@@ -2452,7 +2449,7 @@
           .projects
           .locations
           .repositories
-          .aptartifacts;
+          .aptArtifacts;
       final arg_request = buildUploadAptArtifactRequest();
       final arg_parent = 'foo';
       final arg_$fields = 'foo';
@@ -2700,6 +2697,7 @@
           api.ArtifactRegistryApi(mock).projects.locations.repositories.files;
       final arg_parent = 'foo';
       final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
       final arg_$fields = 'foo';
@@ -2740,6 +2738,10 @@
           unittest.equals(arg_filter),
         );
         unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
           core.int.parse(queryMap['pageSize']!.first),
           unittest.equals(arg_pageSize),
         );
@@ -2760,6 +2762,7 @@
       }), true);
       final response = await res.list(arg_parent,
           filter: arg_filter,
+          orderBy: arg_orderBy,
           pageSize: arg_pageSize,
           pageToken: arg_pageToken,
           $fields: arg_$fields);
@@ -2833,7 +2836,7 @@
   });
 
   unittest.group(
-      'resource-ProjectsLocationsRepositoriesGoogetartifactsResource', () {
+      'resource-ProjectsLocationsRepositoriesGoogetArtifactsResource', () {
     unittest.test('method--upload', () async {
       // TODO: Implement tests for media upload;
       // TODO: Implement tests for media download;
@@ -2843,7 +2846,7 @@
           .projects
           .locations
           .repositories
-          .googetartifacts;
+          .googetArtifacts;
       final arg_request = buildUploadGooGetArtifactRequest();
       final arg_parent = 'foo';
       final arg_$fields = 'foo';
@@ -3688,10 +3691,7 @@
           await res.import(arg_request, arg_parent, $fields: arg_$fields);
       checkOperation(response as api.Operation);
     });
-  });
 
-  unittest.group('resource-ProjectsLocationsRepositoriesYumartifactsResource',
-      () {
     unittest.test('method--upload', () async {
       // TODO: Implement tests for media upload;
       // TODO: Implement tests for media download;
@@ -3701,7 +3701,7 @@
           .projects
           .locations
           .repositories
-          .yumartifacts;
+          .yumArtifacts;
       final arg_request = buildUploadYumArtifactRequest();
       final arg_parent = 'foo';
       final arg_$fields = 'foo';
diff --git a/generated/googleapis/test/authorizedbuyersmarketplace/v1_test.dart b/generated/googleapis/test/authorizedbuyersmarketplace/v1_test.dart
index 82a7855..5366f8c 100644
--- a/generated/googleapis/test/authorizedbuyersmarketplace/v1_test.dart
+++ b/generated/googleapis/test/authorizedbuyersmarketplace/v1_test.dart
@@ -400,9 +400,12 @@
   final o = api.CreativeRequirements();
   buildCounterCreativeRequirements++;
   if (buildCounterCreativeRequirements < 3) {
+    o.creativeFormat = 'foo';
     o.creativePreApprovalPolicy = 'foo';
     o.creativeSafeFrameCompatibility = 'foo';
+    o.maxAdDurationMs = 'foo';
     o.programmaticCreativeSource = 'foo';
+    o.skippableAdType = 'foo';
   }
   buildCounterCreativeRequirements--;
   return o;
@@ -412,6 +415,10 @@
   buildCounterCreativeRequirements++;
   if (buildCounterCreativeRequirements < 3) {
     unittest.expect(
+      o.creativeFormat!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.creativePreApprovalPolicy!,
       unittest.equals('foo'),
     );
@@ -420,9 +427,17 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.maxAdDurationMs!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.programmaticCreativeSource!,
       unittest.equals('foo'),
     );
+    unittest.expect(
+      o.skippableAdType!,
+      unittest.equals('foo'),
+    );
   }
   buildCounterCreativeRequirements--;
 }
diff --git a/generated/googleapis/test/baremetalsolution/v2_test.dart b/generated/googleapis/test/baremetalsolution/v2_test.dart
new file mode 100644
index 0000000..f613e64
--- /dev/null
+++ b/generated/googleapis/test/baremetalsolution/v2_test.dart
@@ -0,0 +1,4497 @@
+// ignore_for_file: camel_case_types
+// ignore_for_file: cascade_invocations
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_const_declarations
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_final_locals
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_cast
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: unnecessary_string_interpolations
+// ignore_for_file: unused_local_variable
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:googleapis/baremetalsolution/v2.dart' as api;
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import '../test_shared.dart';
+
+core.int buildCounterAllowedClient = 0;
+api.AllowedClient buildAllowedClient() {
+  final o = api.AllowedClient();
+  buildCounterAllowedClient++;
+  if (buildCounterAllowedClient < 3) {
+    o.allowDev = true;
+    o.allowSuid = true;
+    o.allowedClientsCidr = 'foo';
+    o.mountPermissions = 'foo';
+    o.network = 'foo';
+    o.noRootSquash = true;
+    o.shareIp = 'foo';
+  }
+  buildCounterAllowedClient--;
+  return o;
+}
+
+void checkAllowedClient(api.AllowedClient o) {
+  buildCounterAllowedClient++;
+  if (buildCounterAllowedClient < 3) {
+    unittest.expect(o.allowDev!, unittest.isTrue);
+    unittest.expect(o.allowSuid!, unittest.isTrue);
+    unittest.expect(
+      o.allowedClientsCidr!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.mountPermissions!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.network!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.noRootSquash!, unittest.isTrue);
+    unittest.expect(
+      o.shareIp!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAllowedClient--;
+}
+
+core.int buildCounterEmpty = 0;
+api.Empty buildEmpty() {
+  final o = api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+void checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.Map<core.String, core.String> buildUnnamed0() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed0(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.List<api.Lun> buildUnnamed1() => [
+      buildLun(),
+      buildLun(),
+    ];
+
+void checkUnnamed1(core.List<api.Lun> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLun(o[0]);
+  checkLun(o[1]);
+}
+
+core.List<api.Network> buildUnnamed2() => [
+      buildNetwork(),
+      buildNetwork(),
+    ];
+
+void checkUnnamed2(core.List<api.Network> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNetwork(o[0]);
+  checkNetwork(o[1]);
+}
+
+core.int buildCounterInstance = 0;
+api.Instance buildInstance() {
+  final o = api.Instance();
+  buildCounterInstance++;
+  if (buildCounterInstance < 3) {
+    o.createTime = 'foo';
+    o.hyperthreadingEnabled = true;
+    o.id = 'foo';
+    o.interactiveSerialConsoleEnabled = true;
+    o.labels = buildUnnamed0();
+    o.luns = buildUnnamed1();
+    o.machineType = 'foo';
+    o.name = 'foo';
+    o.networks = buildUnnamed2();
+    o.state = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterInstance--;
+  return o;
+}
+
+void checkInstance(api.Instance o) {
+  buildCounterInstance++;
+  if (buildCounterInstance < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.hyperthreadingEnabled!, unittest.isTrue);
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.interactiveSerialConsoleEnabled!, unittest.isTrue);
+    checkUnnamed0(o.labels!);
+    checkUnnamed1(o.luns!);
+    unittest.expect(
+      o.machineType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed2(o.networks!);
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterInstance--;
+}
+
+core.int buildCounterInstanceConfig = 0;
+api.InstanceConfig buildInstanceConfig() {
+  final o = api.InstanceConfig();
+  buildCounterInstanceConfig++;
+  if (buildCounterInstanceConfig < 3) {
+    o.clientNetwork = buildNetworkAddress();
+    o.hyperthreading = true;
+    o.id = 'foo';
+    o.instanceType = 'foo';
+    o.name = 'foo';
+    o.osImage = 'foo';
+    o.privateNetwork = buildNetworkAddress();
+    o.userNote = 'foo';
+  }
+  buildCounterInstanceConfig--;
+  return o;
+}
+
+void checkInstanceConfig(api.InstanceConfig o) {
+  buildCounterInstanceConfig++;
+  if (buildCounterInstanceConfig < 3) {
+    checkNetworkAddress(o.clientNetwork!);
+    unittest.expect(o.hyperthreading!, unittest.isTrue);
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.instanceType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.osImage!,
+      unittest.equals('foo'),
+    );
+    checkNetworkAddress(o.privateNetwork!);
+    unittest.expect(
+      o.userNote!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterInstanceConfig--;
+}
+
+core.int buildCounterInstanceQuota = 0;
+api.InstanceQuota buildInstanceQuota() {
+  final o = api.InstanceQuota();
+  buildCounterInstanceQuota++;
+  if (buildCounterInstanceQuota < 3) {
+    o.availableMachineCount = 42;
+    o.instanceType = 'foo';
+    o.location = 'foo';
+    o.name = 'foo';
+  }
+  buildCounterInstanceQuota--;
+  return o;
+}
+
+void checkInstanceQuota(api.InstanceQuota o) {
+  buildCounterInstanceQuota++;
+  if (buildCounterInstanceQuota < 3) {
+    unittest.expect(
+      o.availableMachineCount!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.instanceType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.location!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterInstanceQuota--;
+}
+
+core.int buildCounterIntakeVlanAttachment = 0;
+api.IntakeVlanAttachment buildIntakeVlanAttachment() {
+  final o = api.IntakeVlanAttachment();
+  buildCounterIntakeVlanAttachment++;
+  if (buildCounterIntakeVlanAttachment < 3) {
+    o.id = 'foo';
+    o.pairingKey = 'foo';
+  }
+  buildCounterIntakeVlanAttachment--;
+  return o;
+}
+
+void checkIntakeVlanAttachment(api.IntakeVlanAttachment o) {
+  buildCounterIntakeVlanAttachment++;
+  if (buildCounterIntakeVlanAttachment < 3) {
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.pairingKey!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterIntakeVlanAttachment--;
+}
+
+core.List<api.Instance> buildUnnamed3() => [
+      buildInstance(),
+      buildInstance(),
+    ];
+
+void checkUnnamed3(core.List<api.Instance> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInstance(o[0]);
+  checkInstance(o[1]);
+}
+
+core.List<core.String> buildUnnamed4() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed4(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListInstancesResponse = 0;
+api.ListInstancesResponse buildListInstancesResponse() {
+  final o = api.ListInstancesResponse();
+  buildCounterListInstancesResponse++;
+  if (buildCounterListInstancesResponse < 3) {
+    o.instances = buildUnnamed3();
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed4();
+  }
+  buildCounterListInstancesResponse--;
+  return o;
+}
+
+void checkListInstancesResponse(api.ListInstancesResponse o) {
+  buildCounterListInstancesResponse++;
+  if (buildCounterListInstancesResponse < 3) {
+    checkUnnamed3(o.instances!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed4(o.unreachable!);
+  }
+  buildCounterListInstancesResponse--;
+}
+
+core.List<api.Location> buildUnnamed5() => [
+      buildLocation(),
+      buildLocation(),
+    ];
+
+void checkUnnamed5(core.List<api.Location> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocation(o[0]);
+  checkLocation(o[1]);
+}
+
+core.int buildCounterListLocationsResponse = 0;
+api.ListLocationsResponse buildListLocationsResponse() {
+  final o = api.ListLocationsResponse();
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    o.locations = buildUnnamed5();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterListLocationsResponse--;
+  return o;
+}
+
+void checkListLocationsResponse(api.ListLocationsResponse o) {
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    checkUnnamed5(o.locations!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterListLocationsResponse--;
+}
+
+core.List<api.Lun> buildUnnamed6() => [
+      buildLun(),
+      buildLun(),
+    ];
+
+void checkUnnamed6(core.List<api.Lun> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLun(o[0]);
+  checkLun(o[1]);
+}
+
+core.List<core.String> buildUnnamed7() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed7(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListLunsResponse = 0;
+api.ListLunsResponse buildListLunsResponse() {
+  final o = api.ListLunsResponse();
+  buildCounterListLunsResponse++;
+  if (buildCounterListLunsResponse < 3) {
+    o.luns = buildUnnamed6();
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed7();
+  }
+  buildCounterListLunsResponse--;
+  return o;
+}
+
+void checkListLunsResponse(api.ListLunsResponse o) {
+  buildCounterListLunsResponse++;
+  if (buildCounterListLunsResponse < 3) {
+    checkUnnamed6(o.luns!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed7(o.unreachable!);
+  }
+  buildCounterListLunsResponse--;
+}
+
+core.List<api.NetworkUsage> buildUnnamed8() => [
+      buildNetworkUsage(),
+      buildNetworkUsage(),
+    ];
+
+void checkUnnamed8(core.List<api.NetworkUsage> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNetworkUsage(o[0]);
+  checkNetworkUsage(o[1]);
+}
+
+core.int buildCounterListNetworkUsageResponse = 0;
+api.ListNetworkUsageResponse buildListNetworkUsageResponse() {
+  final o = api.ListNetworkUsageResponse();
+  buildCounterListNetworkUsageResponse++;
+  if (buildCounterListNetworkUsageResponse < 3) {
+    o.networks = buildUnnamed8();
+  }
+  buildCounterListNetworkUsageResponse--;
+  return o;
+}
+
+void checkListNetworkUsageResponse(api.ListNetworkUsageResponse o) {
+  buildCounterListNetworkUsageResponse++;
+  if (buildCounterListNetworkUsageResponse < 3) {
+    checkUnnamed8(o.networks!);
+  }
+  buildCounterListNetworkUsageResponse--;
+}
+
+core.List<api.Network> buildUnnamed9() => [
+      buildNetwork(),
+      buildNetwork(),
+    ];
+
+void checkUnnamed9(core.List<api.Network> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNetwork(o[0]);
+  checkNetwork(o[1]);
+}
+
+core.List<core.String> buildUnnamed10() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed10(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListNetworksResponse = 0;
+api.ListNetworksResponse buildListNetworksResponse() {
+  final o = api.ListNetworksResponse();
+  buildCounterListNetworksResponse++;
+  if (buildCounterListNetworksResponse < 3) {
+    o.networks = buildUnnamed9();
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed10();
+  }
+  buildCounterListNetworksResponse--;
+  return o;
+}
+
+void checkListNetworksResponse(api.ListNetworksResponse o) {
+  buildCounterListNetworksResponse++;
+  if (buildCounterListNetworksResponse < 3) {
+    checkUnnamed9(o.networks!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed10(o.unreachable!);
+  }
+  buildCounterListNetworksResponse--;
+}
+
+core.List<api.NfsShare> buildUnnamed11() => [
+      buildNfsShare(),
+      buildNfsShare(),
+    ];
+
+void checkUnnamed11(core.List<api.NfsShare> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNfsShare(o[0]);
+  checkNfsShare(o[1]);
+}
+
+core.List<core.String> buildUnnamed12() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed12(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListNfsSharesResponse = 0;
+api.ListNfsSharesResponse buildListNfsSharesResponse() {
+  final o = api.ListNfsSharesResponse();
+  buildCounterListNfsSharesResponse++;
+  if (buildCounterListNfsSharesResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.nfsShares = buildUnnamed11();
+    o.unreachable = buildUnnamed12();
+  }
+  buildCounterListNfsSharesResponse--;
+  return o;
+}
+
+void checkListNfsSharesResponse(api.ListNfsSharesResponse o) {
+  buildCounterListNfsSharesResponse++;
+  if (buildCounterListNfsSharesResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed11(o.nfsShares!);
+    checkUnnamed12(o.unreachable!);
+  }
+  buildCounterListNfsSharesResponse--;
+}
+
+core.List<api.ProvisioningQuota> buildUnnamed13() => [
+      buildProvisioningQuota(),
+      buildProvisioningQuota(),
+    ];
+
+void checkUnnamed13(core.List<api.ProvisioningQuota> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProvisioningQuota(o[0]);
+  checkProvisioningQuota(o[1]);
+}
+
+core.int buildCounterListProvisioningQuotasResponse = 0;
+api.ListProvisioningQuotasResponse buildListProvisioningQuotasResponse() {
+  final o = api.ListProvisioningQuotasResponse();
+  buildCounterListProvisioningQuotasResponse++;
+  if (buildCounterListProvisioningQuotasResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.provisioningQuotas = buildUnnamed13();
+  }
+  buildCounterListProvisioningQuotasResponse--;
+  return o;
+}
+
+void checkListProvisioningQuotasResponse(api.ListProvisioningQuotasResponse o) {
+  buildCounterListProvisioningQuotasResponse++;
+  if (buildCounterListProvisioningQuotasResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed13(o.provisioningQuotas!);
+  }
+  buildCounterListProvisioningQuotasResponse--;
+}
+
+core.List<api.SnapshotSchedulePolicy> buildUnnamed14() => [
+      buildSnapshotSchedulePolicy(),
+      buildSnapshotSchedulePolicy(),
+    ];
+
+void checkUnnamed14(core.List<api.SnapshotSchedulePolicy> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSnapshotSchedulePolicy(o[0]);
+  checkSnapshotSchedulePolicy(o[1]);
+}
+
+core.int buildCounterListSnapshotSchedulePoliciesResponse = 0;
+api.ListSnapshotSchedulePoliciesResponse
+    buildListSnapshotSchedulePoliciesResponse() {
+  final o = api.ListSnapshotSchedulePoliciesResponse();
+  buildCounterListSnapshotSchedulePoliciesResponse++;
+  if (buildCounterListSnapshotSchedulePoliciesResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.snapshotSchedulePolicies = buildUnnamed14();
+  }
+  buildCounterListSnapshotSchedulePoliciesResponse--;
+  return o;
+}
+
+void checkListSnapshotSchedulePoliciesResponse(
+    api.ListSnapshotSchedulePoliciesResponse o) {
+  buildCounterListSnapshotSchedulePoliciesResponse++;
+  if (buildCounterListSnapshotSchedulePoliciesResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed14(o.snapshotSchedulePolicies!);
+  }
+  buildCounterListSnapshotSchedulePoliciesResponse--;
+}
+
+core.List<core.String> buildUnnamed15() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed15(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<api.VolumeSnapshot> buildUnnamed16() => [
+      buildVolumeSnapshot(),
+      buildVolumeSnapshot(),
+    ];
+
+void checkUnnamed16(core.List<api.VolumeSnapshot> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolumeSnapshot(o[0]);
+  checkVolumeSnapshot(o[1]);
+}
+
+core.int buildCounterListVolumeSnapshotsResponse = 0;
+api.ListVolumeSnapshotsResponse buildListVolumeSnapshotsResponse() {
+  final o = api.ListVolumeSnapshotsResponse();
+  buildCounterListVolumeSnapshotsResponse++;
+  if (buildCounterListVolumeSnapshotsResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed15();
+    o.volumeSnapshots = buildUnnamed16();
+  }
+  buildCounterListVolumeSnapshotsResponse--;
+  return o;
+}
+
+void checkListVolumeSnapshotsResponse(api.ListVolumeSnapshotsResponse o) {
+  buildCounterListVolumeSnapshotsResponse++;
+  if (buildCounterListVolumeSnapshotsResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed15(o.unreachable!);
+    checkUnnamed16(o.volumeSnapshots!);
+  }
+  buildCounterListVolumeSnapshotsResponse--;
+}
+
+core.List<core.String> buildUnnamed17() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed17(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<api.Volume> buildUnnamed18() => [
+      buildVolume(),
+      buildVolume(),
+    ];
+
+void checkUnnamed18(core.List<api.Volume> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolume(o[0]);
+  checkVolume(o[1]);
+}
+
+core.int buildCounterListVolumesResponse = 0;
+api.ListVolumesResponse buildListVolumesResponse() {
+  final o = api.ListVolumesResponse();
+  buildCounterListVolumesResponse++;
+  if (buildCounterListVolumesResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed17();
+    o.volumes = buildUnnamed18();
+  }
+  buildCounterListVolumesResponse--;
+  return o;
+}
+
+void checkListVolumesResponse(api.ListVolumesResponse o) {
+  buildCounterListVolumesResponse++;
+  if (buildCounterListVolumesResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed17(o.unreachable!);
+    checkUnnamed18(o.volumes!);
+  }
+  buildCounterListVolumesResponse--;
+}
+
+core.Map<core.String, core.String> buildUnnamed19() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed19(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed20() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed20(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o['x']!) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(
+    casted1['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted1['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted1['string'],
+    unittest.equals('foo'),
+  );
+  var casted2 = (o['y']!) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(
+    casted2['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted2['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted2['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterLocation = 0;
+api.Location buildLocation() {
+  final o = api.Location();
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    o.displayName = 'foo';
+    o.labels = buildUnnamed19();
+    o.locationId = 'foo';
+    o.metadata = buildUnnamed20();
+    o.name = 'foo';
+  }
+  buildCounterLocation--;
+  return o;
+}
+
+void checkLocation(api.Location o) {
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed19(o.labels!);
+    unittest.expect(
+      o.locationId!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed20(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterLocation--;
+}
+
+core.int buildCounterLun = 0;
+api.Lun buildLun() {
+  final o = api.Lun();
+  buildCounterLun++;
+  if (buildCounterLun < 3) {
+    o.bootLun = true;
+    o.id = 'foo';
+    o.multiprotocolType = 'foo';
+    o.name = 'foo';
+    o.shareable = true;
+    o.sizeGb = 'foo';
+    o.state = 'foo';
+    o.storageType = 'foo';
+    o.storageVolume = 'foo';
+    o.wwid = 'foo';
+  }
+  buildCounterLun--;
+  return o;
+}
+
+void checkLun(api.Lun o) {
+  buildCounterLun++;
+  if (buildCounterLun < 3) {
+    unittest.expect(o.bootLun!, unittest.isTrue);
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.multiprotocolType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.shareable!, unittest.isTrue);
+    unittest.expect(
+      o.sizeGb!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.storageType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.storageVolume!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.wwid!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterLun--;
+}
+
+core.int buildCounterLunRange = 0;
+api.LunRange buildLunRange() {
+  final o = api.LunRange();
+  buildCounterLunRange++;
+  if (buildCounterLunRange < 3) {
+    o.quantity = 42;
+    o.sizeGb = 42;
+  }
+  buildCounterLunRange--;
+  return o;
+}
+
+void checkLunRange(api.LunRange o) {
+  buildCounterLunRange++;
+  if (buildCounterLunRange < 3) {
+    unittest.expect(
+      o.quantity!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.sizeGb!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterLunRange--;
+}
+
+core.Map<core.String, core.String> buildUnnamed21() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed21(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed22() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed22(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterNetwork = 0;
+api.Network buildNetwork() {
+  final o = api.Network();
+  buildCounterNetwork++;
+  if (buildCounterNetwork < 3) {
+    o.cidr = 'foo';
+    o.id = 'foo';
+    o.ipAddress = 'foo';
+    o.labels = buildUnnamed21();
+    o.macAddress = buildUnnamed22();
+    o.name = 'foo';
+    o.servicesCidr = 'foo';
+    o.state = 'foo';
+    o.type = 'foo';
+    o.vlanId = 'foo';
+    o.vrf = buildVRF();
+  }
+  buildCounterNetwork--;
+  return o;
+}
+
+void checkNetwork(api.Network o) {
+  buildCounterNetwork++;
+  if (buildCounterNetwork < 3) {
+    unittest.expect(
+      o.cidr!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.ipAddress!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed21(o.labels!);
+    checkUnnamed22(o.macAddress!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.servicesCidr!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.vlanId!,
+      unittest.equals('foo'),
+    );
+    checkVRF(o.vrf!);
+  }
+  buildCounterNetwork--;
+}
+
+core.int buildCounterNetworkAddress = 0;
+api.NetworkAddress buildNetworkAddress() {
+  final o = api.NetworkAddress();
+  buildCounterNetworkAddress++;
+  if (buildCounterNetworkAddress < 3) {
+    o.address = 'foo';
+    o.existingNetworkId = 'foo';
+    o.networkId = 'foo';
+  }
+  buildCounterNetworkAddress--;
+  return o;
+}
+
+void checkNetworkAddress(api.NetworkAddress o) {
+  buildCounterNetworkAddress++;
+  if (buildCounterNetworkAddress < 3) {
+    unittest.expect(
+      o.address!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.existingNetworkId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.networkId!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterNetworkAddress--;
+}
+
+core.List<api.IntakeVlanAttachment> buildUnnamed23() => [
+      buildIntakeVlanAttachment(),
+      buildIntakeVlanAttachment(),
+    ];
+
+void checkUnnamed23(core.List<api.IntakeVlanAttachment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkIntakeVlanAttachment(o[0]);
+  checkIntakeVlanAttachment(o[1]);
+}
+
+core.int buildCounterNetworkConfig = 0;
+api.NetworkConfig buildNetworkConfig() {
+  final o = api.NetworkConfig();
+  buildCounterNetworkConfig++;
+  if (buildCounterNetworkConfig < 3) {
+    o.bandwidth = 'foo';
+    o.cidr = 'foo';
+    o.id = 'foo';
+    o.name = 'foo';
+    o.serviceCidr = 'foo';
+    o.type = 'foo';
+    o.userNote = 'foo';
+    o.vlanAttachments = buildUnnamed23();
+  }
+  buildCounterNetworkConfig--;
+  return o;
+}
+
+void checkNetworkConfig(api.NetworkConfig o) {
+  buildCounterNetworkConfig++;
+  if (buildCounterNetworkConfig < 3) {
+    unittest.expect(
+      o.bandwidth!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.cidr!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.serviceCidr!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.userNote!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed23(o.vlanAttachments!);
+  }
+  buildCounterNetworkConfig--;
+}
+
+core.List<core.String> buildUnnamed24() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed24(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterNetworkUsage = 0;
+api.NetworkUsage buildNetworkUsage() {
+  final o = api.NetworkUsage();
+  buildCounterNetworkUsage++;
+  if (buildCounterNetworkUsage < 3) {
+    o.network = buildNetwork();
+    o.usedIps = buildUnnamed24();
+  }
+  buildCounterNetworkUsage--;
+  return o;
+}
+
+void checkNetworkUsage(api.NetworkUsage o) {
+  buildCounterNetworkUsage++;
+  if (buildCounterNetworkUsage < 3) {
+    checkNetwork(o.network!);
+    checkUnnamed24(o.usedIps!);
+  }
+  buildCounterNetworkUsage--;
+}
+
+core.int buildCounterNfsExport = 0;
+api.NfsExport buildNfsExport() {
+  final o = api.NfsExport();
+  buildCounterNfsExport++;
+  if (buildCounterNfsExport < 3) {
+    o.allowDev = true;
+    o.allowSuid = true;
+    o.cidr = 'foo';
+    o.machineId = 'foo';
+    o.networkId = 'foo';
+    o.noRootSquash = true;
+    o.permissions = 'foo';
+  }
+  buildCounterNfsExport--;
+  return o;
+}
+
+void checkNfsExport(api.NfsExport o) {
+  buildCounterNfsExport++;
+  if (buildCounterNfsExport < 3) {
+    unittest.expect(o.allowDev!, unittest.isTrue);
+    unittest.expect(o.allowSuid!, unittest.isTrue);
+    unittest.expect(
+      o.cidr!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.machineId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.networkId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.noRootSquash!, unittest.isTrue);
+    unittest.expect(
+      o.permissions!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterNfsExport--;
+}
+
+core.List<api.AllowedClient> buildUnnamed25() => [
+      buildAllowedClient(),
+      buildAllowedClient(),
+    ];
+
+void checkUnnamed25(core.List<api.AllowedClient> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAllowedClient(o[0]);
+  checkAllowedClient(o[1]);
+}
+
+core.Map<core.String, core.String> buildUnnamed26() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed26(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterNfsShare = 0;
+api.NfsShare buildNfsShare() {
+  final o = api.NfsShare();
+  buildCounterNfsShare++;
+  if (buildCounterNfsShare < 3) {
+    o.allowedClients = buildUnnamed25();
+    o.labels = buildUnnamed26();
+    o.name = 'foo';
+    o.nfsShareId = 'foo';
+    o.state = 'foo';
+    o.volume = 'foo';
+  }
+  buildCounterNfsShare--;
+  return o;
+}
+
+void checkNfsShare(api.NfsShare o) {
+  buildCounterNfsShare++;
+  if (buildCounterNfsShare < 3) {
+    checkUnnamed25(o.allowedClients!);
+    checkUnnamed26(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.nfsShareId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.volume!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterNfsShare--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed27() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed27(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o['x']!) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(
+    casted3['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted3['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted3['string'],
+    unittest.equals('foo'),
+  );
+  var casted4 = (o['y']!) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(
+    casted4['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted4['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted4['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed28() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed28(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o['x']!) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(
+    casted5['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted5['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted5['string'],
+    unittest.equals('foo'),
+  );
+  var casted6 = (o['y']!) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(
+    casted6['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted6['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted6['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterOperation = 0;
+api.Operation buildOperation() {
+  final o = api.Operation();
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    o.done = true;
+    o.error = buildStatus();
+    o.metadata = buildUnnamed27();
+    o.name = 'foo';
+    o.response = buildUnnamed28();
+  }
+  buildCounterOperation--;
+  return o;
+}
+
+void checkOperation(api.Operation o) {
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    unittest.expect(o.done!, unittest.isTrue);
+    checkStatus(o.error!);
+    checkUnnamed27(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed28(o.response!);
+  }
+  buildCounterOperation--;
+}
+
+core.List<api.InstanceConfig> buildUnnamed29() => [
+      buildInstanceConfig(),
+      buildInstanceConfig(),
+    ];
+
+void checkUnnamed29(core.List<api.InstanceConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkInstanceConfig(o[0]);
+  checkInstanceConfig(o[1]);
+}
+
+core.List<api.NetworkConfig> buildUnnamed30() => [
+      buildNetworkConfig(),
+      buildNetworkConfig(),
+    ];
+
+void checkUnnamed30(core.List<api.NetworkConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNetworkConfig(o[0]);
+  checkNetworkConfig(o[1]);
+}
+
+core.List<api.VolumeConfig> buildUnnamed31() => [
+      buildVolumeConfig(),
+      buildVolumeConfig(),
+    ];
+
+void checkUnnamed31(core.List<api.VolumeConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolumeConfig(o[0]);
+  checkVolumeConfig(o[1]);
+}
+
+core.int buildCounterProvisioningConfig = 0;
+api.ProvisioningConfig buildProvisioningConfig() {
+  final o = api.ProvisioningConfig();
+  buildCounterProvisioningConfig++;
+  if (buildCounterProvisioningConfig < 3) {
+    o.handoverServiceAccount = 'foo';
+    o.instances = buildUnnamed29();
+    o.name = 'foo';
+    o.networks = buildUnnamed30();
+    o.ticketId = 'foo';
+    o.volumes = buildUnnamed31();
+  }
+  buildCounterProvisioningConfig--;
+  return o;
+}
+
+void checkProvisioningConfig(api.ProvisioningConfig o) {
+  buildCounterProvisioningConfig++;
+  if (buildCounterProvisioningConfig < 3) {
+    unittest.expect(
+      o.handoverServiceAccount!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed29(o.instances!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed30(o.networks!);
+    unittest.expect(
+      o.ticketId!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed31(o.volumes!);
+  }
+  buildCounterProvisioningConfig--;
+}
+
+core.int buildCounterProvisioningQuota = 0;
+api.ProvisioningQuota buildProvisioningQuota() {
+  final o = api.ProvisioningQuota();
+  buildCounterProvisioningQuota++;
+  if (buildCounterProvisioningQuota < 3) {
+    o.assetType = 'foo';
+    o.availableCount = 42;
+    o.gcpService = 'foo';
+    o.instanceQuota = buildInstanceQuota();
+    o.location = 'foo';
+    o.name = 'foo';
+  }
+  buildCounterProvisioningQuota--;
+  return o;
+}
+
+void checkProvisioningQuota(api.ProvisioningQuota o) {
+  buildCounterProvisioningQuota++;
+  if (buildCounterProvisioningQuota < 3) {
+    unittest.expect(
+      o.assetType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.availableCount!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.gcpService!,
+      unittest.equals('foo'),
+    );
+    checkInstanceQuota(o.instanceQuota!);
+    unittest.expect(
+      o.location!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterProvisioningQuota--;
+}
+
+core.int buildCounterQosPolicy = 0;
+api.QosPolicy buildQosPolicy() {
+  final o = api.QosPolicy();
+  buildCounterQosPolicy++;
+  if (buildCounterQosPolicy < 3) {
+    o.bandwidthGbps = 42.0;
+  }
+  buildCounterQosPolicy--;
+  return o;
+}
+
+void checkQosPolicy(api.QosPolicy o) {
+  buildCounterQosPolicy++;
+  if (buildCounterQosPolicy < 3) {
+    unittest.expect(
+      o.bandwidthGbps!,
+      unittest.equals(42.0),
+    );
+  }
+  buildCounterQosPolicy--;
+}
+
+core.int buildCounterResetInstanceRequest = 0;
+api.ResetInstanceRequest buildResetInstanceRequest() {
+  final o = api.ResetInstanceRequest();
+  buildCounterResetInstanceRequest++;
+  if (buildCounterResetInstanceRequest < 3) {}
+  buildCounterResetInstanceRequest--;
+  return o;
+}
+
+void checkResetInstanceRequest(api.ResetInstanceRequest o) {
+  buildCounterResetInstanceRequest++;
+  if (buildCounterResetInstanceRequest < 3) {}
+  buildCounterResetInstanceRequest--;
+}
+
+core.int buildCounterRestoreVolumeSnapshotRequest = 0;
+api.RestoreVolumeSnapshotRequest buildRestoreVolumeSnapshotRequest() {
+  final o = api.RestoreVolumeSnapshotRequest();
+  buildCounterRestoreVolumeSnapshotRequest++;
+  if (buildCounterRestoreVolumeSnapshotRequest < 3) {}
+  buildCounterRestoreVolumeSnapshotRequest--;
+  return o;
+}
+
+void checkRestoreVolumeSnapshotRequest(api.RestoreVolumeSnapshotRequest o) {
+  buildCounterRestoreVolumeSnapshotRequest++;
+  if (buildCounterRestoreVolumeSnapshotRequest < 3) {}
+  buildCounterRestoreVolumeSnapshotRequest--;
+}
+
+core.int buildCounterSchedule = 0;
+api.Schedule buildSchedule() {
+  final o = api.Schedule();
+  buildCounterSchedule++;
+  if (buildCounterSchedule < 3) {
+    o.crontabSpec = 'foo';
+    o.prefix = 'foo';
+    o.retentionCount = 42;
+  }
+  buildCounterSchedule--;
+  return o;
+}
+
+void checkSchedule(api.Schedule o) {
+  buildCounterSchedule++;
+  if (buildCounterSchedule < 3) {
+    unittest.expect(
+      o.crontabSpec!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.prefix!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.retentionCount!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterSchedule--;
+}
+
+core.int buildCounterSnapshotReservationDetail = 0;
+api.SnapshotReservationDetail buildSnapshotReservationDetail() {
+  final o = api.SnapshotReservationDetail();
+  buildCounterSnapshotReservationDetail++;
+  if (buildCounterSnapshotReservationDetail < 3) {
+    o.reservedSpaceGib = 'foo';
+    o.reservedSpaceRemainingGib = 'foo';
+    o.reservedSpaceUsedPercent = 42;
+  }
+  buildCounterSnapshotReservationDetail--;
+  return o;
+}
+
+void checkSnapshotReservationDetail(api.SnapshotReservationDetail o) {
+  buildCounterSnapshotReservationDetail++;
+  if (buildCounterSnapshotReservationDetail < 3) {
+    unittest.expect(
+      o.reservedSpaceGib!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.reservedSpaceRemainingGib!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.reservedSpaceUsedPercent!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterSnapshotReservationDetail--;
+}
+
+core.Map<core.String, core.String> buildUnnamed32() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed32(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.List<api.Schedule> buildUnnamed33() => [
+      buildSchedule(),
+      buildSchedule(),
+    ];
+
+void checkUnnamed33(core.List<api.Schedule> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSchedule(o[0]);
+  checkSchedule(o[1]);
+}
+
+core.int buildCounterSnapshotSchedulePolicy = 0;
+api.SnapshotSchedulePolicy buildSnapshotSchedulePolicy() {
+  final o = api.SnapshotSchedulePolicy();
+  buildCounterSnapshotSchedulePolicy++;
+  if (buildCounterSnapshotSchedulePolicy < 3) {
+    o.description = 'foo';
+    o.id = 'foo';
+    o.labels = buildUnnamed32();
+    o.name = 'foo';
+    o.schedules = buildUnnamed33();
+    o.state = 'foo';
+  }
+  buildCounterSnapshotSchedulePolicy--;
+  return o;
+}
+
+void checkSnapshotSchedulePolicy(api.SnapshotSchedulePolicy o) {
+  buildCounterSnapshotSchedulePolicy++;
+  if (buildCounterSnapshotSchedulePolicy < 3) {
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed32(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed33(o.schedules!);
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterSnapshotSchedulePolicy--;
+}
+
+core.int buildCounterStartInstanceRequest = 0;
+api.StartInstanceRequest buildStartInstanceRequest() {
+  final o = api.StartInstanceRequest();
+  buildCounterStartInstanceRequest++;
+  if (buildCounterStartInstanceRequest < 3) {}
+  buildCounterStartInstanceRequest--;
+  return o;
+}
+
+void checkStartInstanceRequest(api.StartInstanceRequest o) {
+  buildCounterStartInstanceRequest++;
+  if (buildCounterStartInstanceRequest < 3) {}
+  buildCounterStartInstanceRequest--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed34() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed34(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted7 = (o['x']!) as core.Map;
+  unittest.expect(casted7, unittest.hasLength(3));
+  unittest.expect(
+    casted7['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted7['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted7['string'],
+    unittest.equals('foo'),
+  );
+  var casted8 = (o['y']!) as core.Map;
+  unittest.expect(casted8, unittest.hasLength(3));
+  unittest.expect(
+    casted8['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted8['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted8['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.Map<core.String, core.Object?>> buildUnnamed35() => [
+      buildUnnamed34(),
+      buildUnnamed34(),
+    ];
+
+void checkUnnamed35(core.List<core.Map<core.String, core.Object?>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed34(o[0]);
+  checkUnnamed34(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+api.Status buildStatus() {
+  final o = api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed35();
+    o.message = 'foo';
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+void checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(
+      o.code!,
+      unittest.equals(42),
+    );
+    checkUnnamed35(o.details!);
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterStatus--;
+}
+
+core.int buildCounterSubmitProvisioningConfigRequest = 0;
+api.SubmitProvisioningConfigRequest buildSubmitProvisioningConfigRequest() {
+  final o = api.SubmitProvisioningConfigRequest();
+  buildCounterSubmitProvisioningConfigRequest++;
+  if (buildCounterSubmitProvisioningConfigRequest < 3) {
+    o.email = 'foo';
+    o.provisioningConfig = buildProvisioningConfig();
+  }
+  buildCounterSubmitProvisioningConfigRequest--;
+  return o;
+}
+
+void checkSubmitProvisioningConfigRequest(
+    api.SubmitProvisioningConfigRequest o) {
+  buildCounterSubmitProvisioningConfigRequest++;
+  if (buildCounterSubmitProvisioningConfigRequest < 3) {
+    unittest.expect(
+      o.email!,
+      unittest.equals('foo'),
+    );
+    checkProvisioningConfig(o.provisioningConfig!);
+  }
+  buildCounterSubmitProvisioningConfigRequest--;
+}
+
+core.int buildCounterSubmitProvisioningConfigResponse = 0;
+api.SubmitProvisioningConfigResponse buildSubmitProvisioningConfigResponse() {
+  final o = api.SubmitProvisioningConfigResponse();
+  buildCounterSubmitProvisioningConfigResponse++;
+  if (buildCounterSubmitProvisioningConfigResponse < 3) {
+    o.provisioningConfig = buildProvisioningConfig();
+  }
+  buildCounterSubmitProvisioningConfigResponse--;
+  return o;
+}
+
+void checkSubmitProvisioningConfigResponse(
+    api.SubmitProvisioningConfigResponse o) {
+  buildCounterSubmitProvisioningConfigResponse++;
+  if (buildCounterSubmitProvisioningConfigResponse < 3) {
+    checkProvisioningConfig(o.provisioningConfig!);
+  }
+  buildCounterSubmitProvisioningConfigResponse--;
+}
+
+core.List<api.VlanAttachment> buildUnnamed36() => [
+      buildVlanAttachment(),
+      buildVlanAttachment(),
+    ];
+
+void checkUnnamed36(core.List<api.VlanAttachment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVlanAttachment(o[0]);
+  checkVlanAttachment(o[1]);
+}
+
+core.int buildCounterVRF = 0;
+api.VRF buildVRF() {
+  final o = api.VRF();
+  buildCounterVRF++;
+  if (buildCounterVRF < 3) {
+    o.name = 'foo';
+    o.qosPolicy = buildQosPolicy();
+    o.state = 'foo';
+    o.vlanAttachments = buildUnnamed36();
+  }
+  buildCounterVRF--;
+  return o;
+}
+
+void checkVRF(api.VRF o) {
+  buildCounterVRF++;
+  if (buildCounterVRF < 3) {
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkQosPolicy(o.qosPolicy!);
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed36(o.vlanAttachments!);
+  }
+  buildCounterVRF--;
+}
+
+core.int buildCounterVlanAttachment = 0;
+api.VlanAttachment buildVlanAttachment() {
+  final o = api.VlanAttachment();
+  buildCounterVlanAttachment++;
+  if (buildCounterVlanAttachment < 3) {
+    o.peerIp = 'foo';
+    o.peerVlanId = 'foo';
+    o.routerIp = 'foo';
+  }
+  buildCounterVlanAttachment--;
+  return o;
+}
+
+void checkVlanAttachment(api.VlanAttachment o) {
+  buildCounterVlanAttachment++;
+  if (buildCounterVlanAttachment < 3) {
+    unittest.expect(
+      o.peerIp!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.peerVlanId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.routerIp!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterVlanAttachment--;
+}
+
+core.Map<core.String, core.String> buildUnnamed37() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed37(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterVolume = 0;
+api.Volume buildVolume() {
+  final o = api.Volume();
+  buildCounterVolume++;
+  if (buildCounterVolume < 3) {
+    o.autoGrownSizeGib = 'foo';
+    o.currentSizeGib = 'foo';
+    o.id = 'foo';
+    o.labels = buildUnnamed37();
+    o.name = 'foo';
+    o.remainingSpaceGib = 'foo';
+    o.requestedSizeGib = 'foo';
+    o.snapshotAutoDeleteBehavior = 'foo';
+    o.snapshotReservationDetail = buildSnapshotReservationDetail();
+    o.snapshotSchedulePolicy = 'foo';
+    o.state = 'foo';
+    o.storageType = 'foo';
+  }
+  buildCounterVolume--;
+  return o;
+}
+
+void checkVolume(api.Volume o) {
+  buildCounterVolume++;
+  if (buildCounterVolume < 3) {
+    unittest.expect(
+      o.autoGrownSizeGib!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.currentSizeGib!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed37(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.remainingSpaceGib!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.requestedSizeGib!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.snapshotAutoDeleteBehavior!,
+      unittest.equals('foo'),
+    );
+    checkSnapshotReservationDetail(o.snapshotReservationDetail!);
+    unittest.expect(
+      o.snapshotSchedulePolicy!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.storageType!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterVolume--;
+}
+
+core.List<api.LunRange> buildUnnamed38() => [
+      buildLunRange(),
+      buildLunRange(),
+    ];
+
+void checkUnnamed38(core.List<api.LunRange> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLunRange(o[0]);
+  checkLunRange(o[1]);
+}
+
+core.List<core.String> buildUnnamed39() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed39(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<api.NfsExport> buildUnnamed40() => [
+      buildNfsExport(),
+      buildNfsExport(),
+    ];
+
+void checkUnnamed40(core.List<api.NfsExport> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkNfsExport(o[0]);
+  checkNfsExport(o[1]);
+}
+
+core.int buildCounterVolumeConfig = 0;
+api.VolumeConfig buildVolumeConfig() {
+  final o = api.VolumeConfig();
+  buildCounterVolumeConfig++;
+  if (buildCounterVolumeConfig < 3) {
+    o.id = 'foo';
+    o.lunRanges = buildUnnamed38();
+    o.machineIds = buildUnnamed39();
+    o.name = 'foo';
+    o.nfsExports = buildUnnamed40();
+    o.protocol = 'foo';
+    o.sizeGb = 42;
+    o.snapshotsEnabled = true;
+    o.type = 'foo';
+    o.userNote = 'foo';
+  }
+  buildCounterVolumeConfig--;
+  return o;
+}
+
+void checkVolumeConfig(api.VolumeConfig o) {
+  buildCounterVolumeConfig++;
+  if (buildCounterVolumeConfig < 3) {
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed38(o.lunRanges!);
+    checkUnnamed39(o.machineIds!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed40(o.nfsExports!);
+    unittest.expect(
+      o.protocol!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.sizeGb!,
+      unittest.equals(42),
+    );
+    unittest.expect(o.snapshotsEnabled!, unittest.isTrue);
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.userNote!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterVolumeConfig--;
+}
+
+core.int buildCounterVolumeSnapshot = 0;
+api.VolumeSnapshot buildVolumeSnapshot() {
+  final o = api.VolumeSnapshot();
+  buildCounterVolumeSnapshot++;
+  if (buildCounterVolumeSnapshot < 3) {
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.id = 'foo';
+    o.name = 'foo';
+    o.sizeBytes = 'foo';
+    o.storageVolume = 'foo';
+  }
+  buildCounterVolumeSnapshot--;
+  return o;
+}
+
+void checkVolumeSnapshot(api.VolumeSnapshot o) {
+  buildCounterVolumeSnapshot++;
+  if (buildCounterVolumeSnapshot < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.sizeBytes!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.storageVolume!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterVolumeSnapshot--;
+}
+
+void main() {
+  unittest.group('obj-schema-AllowedClient', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAllowedClient();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AllowedClient.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAllowedClient(od);
+    });
+  });
+
+  unittest.group('obj-schema-Empty', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildEmpty();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Empty.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group('obj-schema-Instance', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildInstance();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Instance.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkInstance(od);
+    });
+  });
+
+  unittest.group('obj-schema-InstanceConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildInstanceConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.InstanceConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkInstanceConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-InstanceQuota', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildInstanceQuota();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.InstanceQuota.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkInstanceQuota(od);
+    });
+  });
+
+  unittest.group('obj-schema-IntakeVlanAttachment', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildIntakeVlanAttachment();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.IntakeVlanAttachment.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkIntakeVlanAttachment(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListInstancesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListInstancesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListInstancesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListInstancesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListLocationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListLocationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListLocationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListLocationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListLunsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListLunsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListLunsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListLunsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListNetworkUsageResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListNetworkUsageResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListNetworkUsageResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListNetworkUsageResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListNetworksResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListNetworksResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListNetworksResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListNetworksResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListNfsSharesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListNfsSharesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListNfsSharesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListNfsSharesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListProvisioningQuotasResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListProvisioningQuotasResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListProvisioningQuotasResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListProvisioningQuotasResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListSnapshotSchedulePoliciesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListSnapshotSchedulePoliciesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListSnapshotSchedulePoliciesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListSnapshotSchedulePoliciesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListVolumeSnapshotsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListVolumeSnapshotsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListVolumeSnapshotsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListVolumeSnapshotsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListVolumesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListVolumesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListVolumesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListVolumesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-Location', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildLocation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Location.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkLocation(od);
+    });
+  });
+
+  unittest.group('obj-schema-Lun', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildLun();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.Lun.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkLun(od);
+    });
+  });
+
+  unittest.group('obj-schema-LunRange', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildLunRange();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.LunRange.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkLunRange(od);
+    });
+  });
+
+  unittest.group('obj-schema-Network', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildNetwork();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Network.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkNetwork(od);
+    });
+  });
+
+  unittest.group('obj-schema-NetworkAddress', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildNetworkAddress();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.NetworkAddress.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkNetworkAddress(od);
+    });
+  });
+
+  unittest.group('obj-schema-NetworkConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildNetworkConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.NetworkConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkNetworkConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-NetworkUsage', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildNetworkUsage();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.NetworkUsage.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkNetworkUsage(od);
+    });
+  });
+
+  unittest.group('obj-schema-NfsExport', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildNfsExport();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.NfsExport.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkNfsExport(od);
+    });
+  });
+
+  unittest.group('obj-schema-NfsShare', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildNfsShare();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.NfsShare.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkNfsShare(od);
+    });
+  });
+
+  unittest.group('obj-schema-Operation', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildOperation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Operation.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkOperation(od);
+    });
+  });
+
+  unittest.group('obj-schema-ProvisioningConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildProvisioningConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ProvisioningConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkProvisioningConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-ProvisioningQuota', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildProvisioningQuota();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ProvisioningQuota.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkProvisioningQuota(od);
+    });
+  });
+
+  unittest.group('obj-schema-QosPolicy', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildQosPolicy();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.QosPolicy.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkQosPolicy(od);
+    });
+  });
+
+  unittest.group('obj-schema-ResetInstanceRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildResetInstanceRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ResetInstanceRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkResetInstanceRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-RestoreVolumeSnapshotRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildRestoreVolumeSnapshotRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.RestoreVolumeSnapshotRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkRestoreVolumeSnapshotRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-Schedule', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSchedule();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Schedule.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkSchedule(od);
+    });
+  });
+
+  unittest.group('obj-schema-SnapshotReservationDetail', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSnapshotReservationDetail();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.SnapshotReservationDetail.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkSnapshotReservationDetail(od);
+    });
+  });
+
+  unittest.group('obj-schema-SnapshotSchedulePolicy', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSnapshotSchedulePolicy();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.SnapshotSchedulePolicy.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkSnapshotSchedulePolicy(od);
+    });
+  });
+
+  unittest.group('obj-schema-StartInstanceRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildStartInstanceRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.StartInstanceRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkStartInstanceRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-Status', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Status.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-SubmitProvisioningConfigRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSubmitProvisioningConfigRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.SubmitProvisioningConfigRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkSubmitProvisioningConfigRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-SubmitProvisioningConfigResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSubmitProvisioningConfigResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.SubmitProvisioningConfigResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkSubmitProvisioningConfigResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-VRF', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildVRF();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.VRF.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkVRF(od);
+    });
+  });
+
+  unittest.group('obj-schema-VlanAttachment', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildVlanAttachment();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.VlanAttachment.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkVlanAttachment(od);
+    });
+  });
+
+  unittest.group('obj-schema-Volume', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildVolume();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Volume.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkVolume(od);
+    });
+  });
+
+  unittest.group('obj-schema-VolumeConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildVolumeConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.VolumeConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkVolumeConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-VolumeSnapshot', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildVolumeSnapshot();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.VolumeSnapshot.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkVolumeSnapshot(od);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildLocation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkLocation(response as api.Location);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListLocationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListLocationsResponse(response as api.ListLocationsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsInstancesResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.instances;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildInstance());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkInstance(response as api.Instance);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.instances;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListInstancesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListInstancesResponse(response as api.ListInstancesResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.instances;
+      final arg_request = buildInstance();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Instance.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkInstance(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--reset', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.instances;
+      final arg_request = buildResetInstanceRequest();
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.ResetInstanceRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkResetInstanceRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.reset(arg_request, arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--start', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.instances;
+      final arg_request = buildStartInstanceRequest();
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.StartInstanceRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkStartInstanceRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.start(arg_request, arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsNetworksResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.networks;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildNetwork());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkNetwork(response as api.Network);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.networks;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListNetworksResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListNetworksResponse(response as api.ListNetworksResponse);
+    });
+
+    unittest.test('method--listNetworkUsage', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.networks;
+      final arg_location = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListNetworkUsageResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.listNetworkUsage(arg_location, $fields: arg_$fields);
+      checkListNetworkUsageResponse(response as api.ListNetworkUsageResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.networks;
+      final arg_request = buildNetwork();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Network.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkNetwork(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsNfsSharesResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.nfsShares;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildNfsShare());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkNfsShare(response as api.NfsShare);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.nfsShares;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListNfsSharesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListNfsSharesResponse(response as api.ListNfsSharesResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.nfsShares;
+      final arg_request = buildNfsShare();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.NfsShare.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkNfsShare(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsProvisioningConfigsResource', () {
+    unittest.test('method--submit', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.BaremetalsolutionApi(mock).projects.locations.provisioningConfigs;
+      final arg_request = buildSubmitProvisioningConfigRequest();
+      final arg_parent = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.SubmitProvisioningConfigRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkSubmitProvisioningConfigRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildSubmitProvisioningConfigResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.submit(arg_request, arg_parent, $fields: arg_$fields);
+      checkSubmitProvisioningConfigResponse(
+          response as api.SubmitProvisioningConfigResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsProvisioningQuotasResource', () {
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.BaremetalsolutionApi(mock).projects.locations.provisioningQuotas;
+      final arg_parent = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListProvisioningQuotasResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListProvisioningQuotasResponse(
+          response as api.ListProvisioningQuotasResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsSnapshotSchedulePoliciesResource',
+      () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock)
+          .projects
+          .locations
+          .snapshotSchedulePolicies;
+      final arg_request = buildSnapshotSchedulePolicy();
+      final arg_parent = 'foo';
+      final arg_snapshotSchedulePolicyId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.SnapshotSchedulePolicy.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkSnapshotSchedulePolicy(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['snapshotSchedulePolicyId']!.first,
+          unittest.equals(arg_snapshotSchedulePolicyId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSnapshotSchedulePolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          snapshotSchedulePolicyId: arg_snapshotSchedulePolicyId,
+          $fields: arg_$fields);
+      checkSnapshotSchedulePolicy(response as api.SnapshotSchedulePolicy);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock)
+          .projects
+          .locations
+          .snapshotSchedulePolicies;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock)
+          .projects
+          .locations
+          .snapshotSchedulePolicies;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSnapshotSchedulePolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkSnapshotSchedulePolicy(response as api.SnapshotSchedulePolicy);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock)
+          .projects
+          .locations
+          .snapshotSchedulePolicies;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildListSnapshotSchedulePoliciesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListSnapshotSchedulePoliciesResponse(
+          response as api.ListSnapshotSchedulePoliciesResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock)
+          .projects
+          .locations
+          .snapshotSchedulePolicies;
+      final arg_request = buildSnapshotSchedulePolicy();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.SnapshotSchedulePolicy.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkSnapshotSchedulePolicy(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSnapshotSchedulePolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkSnapshotSchedulePolicy(response as api.SnapshotSchedulePolicy);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsVolumesResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.volumes;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildVolume());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkVolume(response as api.Volume);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.volumes;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListVolumesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListVolumesResponse(response as api.ListVolumesResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.BaremetalsolutionApi(mock).projects.locations.volumes;
+      final arg_request = buildVolume();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Volume.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkVolume(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsVolumesLunsResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.BaremetalsolutionApi(mock).projects.locations.volumes.luns;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildLun());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkLun(response as api.Lun);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.BaremetalsolutionApi(mock).projects.locations.volumes.luns;
+      final arg_parent = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListLunsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListLunsResponse(response as api.ListLunsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsVolumesSnapshotsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.BaremetalsolutionApi(mock).projects.locations.volumes.snapshots;
+      final arg_request = buildVolumeSnapshot();
+      final arg_parent = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.VolumeSnapshot.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkVolumeSnapshot(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildVolumeSnapshot());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.create(arg_request, arg_parent, $fields: arg_$fields);
+      checkVolumeSnapshot(response as api.VolumeSnapshot);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.BaremetalsolutionApi(mock).projects.locations.volumes.snapshots;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.BaremetalsolutionApi(mock).projects.locations.volumes.snapshots;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildVolumeSnapshot());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkVolumeSnapshot(response as api.VolumeSnapshot);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.BaremetalsolutionApi(mock).projects.locations.volumes.snapshots;
+      final arg_parent = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListVolumeSnapshotsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListVolumeSnapshotsResponse(
+          response as api.ListVolumeSnapshotsResponse);
+    });
+
+    unittest.test('method--restoreVolumeSnapshot', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.BaremetalsolutionApi(mock).projects.locations.volumes.snapshots;
+      final arg_request = buildRestoreVolumeSnapshotRequest();
+      final arg_volumeSnapshot = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.RestoreVolumeSnapshotRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkRestoreVolumeSnapshotRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.restoreVolumeSnapshot(
+          arg_request, arg_volumeSnapshot,
+          $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+}
diff --git a/generated/googleapis/test/bigquery/v2_test.dart b/generated/googleapis/test/bigquery/v2_test.dart
index 91d9c12..d39ff51 100644
--- a/generated/googleapis/test/bigquery/v2_test.dart
+++ b/generated/googleapis/test/bigquery/v2_test.dart
@@ -1336,6 +1336,44 @@
   );
 }
 
+core.int buildCounterDatasetTags = 0;
+api.DatasetTags buildDatasetTags() {
+  final o = api.DatasetTags();
+  buildCounterDatasetTags++;
+  if (buildCounterDatasetTags < 3) {
+    o.tagKey = 'foo';
+    o.tagValue = 'foo';
+  }
+  buildCounterDatasetTags--;
+  return o;
+}
+
+void checkDatasetTags(api.DatasetTags o) {
+  buildCounterDatasetTags++;
+  if (buildCounterDatasetTags < 3) {
+    unittest.expect(
+      o.tagKey!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.tagValue!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterDatasetTags--;
+}
+
+core.List<api.DatasetTags> buildUnnamed23() => [
+      buildDatasetTags(),
+      buildDatasetTags(),
+    ];
+
+void checkUnnamed23(core.List<api.DatasetTags> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDatasetTags(o[0]);
+  checkDatasetTags(o[1]);
+}
+
 core.int buildCounterDataset = 0;
 api.Dataset buildDataset() {
   final o = api.Dataset();
@@ -1359,6 +1397,7 @@
     o.location = 'foo';
     o.satisfiesPZS = true;
     o.selfLink = 'foo';
+    o.tags = buildUnnamed23();
   }
   buildCounterDataset--;
   return o;
@@ -1421,41 +1460,26 @@
       o.selfLink!,
       unittest.equals('foo'),
     );
+    checkUnnamed23(o.tags!);
   }
   buildCounterDataset--;
 }
 
-core.int buildCounterDatasetAccessEntryTargetTypes = 0;
-api.DatasetAccessEntryTargetTypes buildDatasetAccessEntryTargetTypes() {
-  final o = api.DatasetAccessEntryTargetTypes();
-  buildCounterDatasetAccessEntryTargetTypes++;
-  if (buildCounterDatasetAccessEntryTargetTypes < 3) {
-    o.targetType = 'foo';
-  }
-  buildCounterDatasetAccessEntryTargetTypes--;
-  return o;
-}
-
-void checkDatasetAccessEntryTargetTypes(api.DatasetAccessEntryTargetTypes o) {
-  buildCounterDatasetAccessEntryTargetTypes++;
-  if (buildCounterDatasetAccessEntryTargetTypes < 3) {
-    unittest.expect(
-      o.targetType!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterDatasetAccessEntryTargetTypes--;
-}
-
-core.List<api.DatasetAccessEntryTargetTypes> buildUnnamed23() => [
-      buildDatasetAccessEntryTargetTypes(),
-      buildDatasetAccessEntryTargetTypes(),
+core.List<core.String> buildUnnamed24() => [
+      'foo',
+      'foo',
     ];
 
-void checkUnnamed23(core.List<api.DatasetAccessEntryTargetTypes> o) {
+void checkUnnamed24(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkDatasetAccessEntryTargetTypes(o[0]);
-  checkDatasetAccessEntryTargetTypes(o[1]);
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
 }
 
 core.int buildCounterDatasetAccessEntry = 0;
@@ -1464,7 +1488,7 @@
   buildCounterDatasetAccessEntry++;
   if (buildCounterDatasetAccessEntry < 3) {
     o.dataset = buildDatasetReference();
-    o.targetTypes = buildUnnamed23();
+    o.targetTypes = buildUnnamed24();
   }
   buildCounterDatasetAccessEntry--;
   return o;
@@ -1474,17 +1498,17 @@
   buildCounterDatasetAccessEntry++;
   if (buildCounterDatasetAccessEntry < 3) {
     checkDatasetReference(o.dataset!);
-    checkUnnamed23(o.targetTypes!);
+    checkUnnamed24(o.targetTypes!);
   }
   buildCounterDatasetAccessEntry--;
 }
 
-core.Map<core.String, core.String> buildUnnamed24() => {
+core.Map<core.String, core.String> buildUnnamed25() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed24(core.Map<core.String, core.String> o) {
+void checkUnnamed25(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1505,7 +1529,7 @@
     o.friendlyName = 'foo';
     o.id = 'foo';
     o.kind = 'foo';
-    o.labels = buildUnnamed24();
+    o.labels = buildUnnamed25();
     o.location = 'foo';
   }
   buildCounterDatasetListDatasets--;
@@ -1528,7 +1552,7 @@
       o.kind!,
       unittest.equals('foo'),
     );
-    checkUnnamed24(o.labels!);
+    checkUnnamed25(o.labels!);
     unittest.expect(
       o.location!,
       unittest.equals('foo'),
@@ -1537,12 +1561,12 @@
   buildCounterDatasetListDatasets--;
 }
 
-core.List<api.DatasetListDatasets> buildUnnamed25() => [
+core.List<api.DatasetListDatasets> buildUnnamed26() => [
       buildDatasetListDatasets(),
       buildDatasetListDatasets(),
     ];
 
-void checkUnnamed25(core.List<api.DatasetListDatasets> o) {
+void checkUnnamed26(core.List<api.DatasetListDatasets> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatasetListDatasets(o[0]);
   checkDatasetListDatasets(o[1]);
@@ -1553,7 +1577,7 @@
   final o = api.DatasetList();
   buildCounterDatasetList++;
   if (buildCounterDatasetList < 3) {
-    o.datasets = buildUnnamed25();
+    o.datasets = buildUnnamed26();
     o.etag = 'foo';
     o.kind = 'foo';
     o.nextPageToken = 'foo';
@@ -1565,7 +1589,7 @@
 void checkDatasetList(api.DatasetList o) {
   buildCounterDatasetList++;
   if (buildCounterDatasetList < 3) {
-    checkUnnamed25(o.datasets!);
+    checkUnnamed26(o.datasets!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -1609,12 +1633,12 @@
   buildCounterDatasetReference--;
 }
 
-core.Map<core.String, core.String> buildUnnamed26() => {
+core.Map<core.String, core.String> buildUnnamed27() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed26(core.Map<core.String, core.String> o) {
+void checkUnnamed27(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1634,7 +1658,7 @@
     o.description = 'foo';
     o.expirationTime = core.DateTime.parse('2002-02-27T14:01:02Z');
     o.friendlyName = 'foo';
-    o.labels = buildUnnamed26();
+    o.labels = buildUnnamed27();
   }
   buildCounterDestinationTableProperties--;
   return o;
@@ -1655,7 +1679,7 @@
       o.friendlyName!,
       unittest.equals('foo'),
     );
-    checkUnnamed26(o.labels!);
+    checkUnnamed27(o.labels!);
   }
   buildCounterDestinationTableProperties--;
 }
@@ -1807,12 +1831,12 @@
   buildCounterEvaluationMetrics--;
 }
 
-core.List<core.String> buildUnnamed27() => [
+core.List<core.String> buildUnnamed28() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed27(core.List<core.String> o) {
+void checkUnnamed28(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1824,12 +1848,12 @@
   );
 }
 
-core.List<api.ExplainQueryStep> buildUnnamed28() => [
+core.List<api.ExplainQueryStep> buildUnnamed29() => [
       buildExplainQueryStep(),
       buildExplainQueryStep(),
     ];
 
-void checkUnnamed28(core.List<api.ExplainQueryStep> o) {
+void checkUnnamed29(core.List<api.ExplainQueryStep> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExplainQueryStep(o[0]);
   checkExplainQueryStep(o[1]);
@@ -1847,7 +1871,7 @@
     o.computeRatioMax = 42.0;
     o.endMs = 'foo';
     o.id = 'foo';
-    o.inputStages = buildUnnamed27();
+    o.inputStages = buildUnnamed28();
     o.name = 'foo';
     o.parallelInputs = 'foo';
     o.readMsAvg = 'foo';
@@ -1861,7 +1885,7 @@
     o.slotMs = 'foo';
     o.startMs = 'foo';
     o.status = 'foo';
-    o.steps = buildUnnamed28();
+    o.steps = buildUnnamed29();
     o.waitMsAvg = 'foo';
     o.waitMsMax = 'foo';
     o.waitRatioAvg = 42.0;
@@ -1906,7 +1930,7 @@
       o.id!,
       unittest.equals('foo'),
     );
-    checkUnnamed27(o.inputStages!);
+    checkUnnamed28(o.inputStages!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -1959,7 +1983,7 @@
       o.status!,
       unittest.equals('foo'),
     );
-    checkUnnamed28(o.steps!);
+    checkUnnamed29(o.steps!);
     unittest.expect(
       o.waitMsAvg!,
       unittest.equals('foo'),
@@ -1996,12 +2020,12 @@
   buildCounterExplainQueryStage--;
 }
 
-core.List<core.String> buildUnnamed29() => [
+core.List<core.String> buildUnnamed30() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed29(core.List<core.String> o) {
+void checkUnnamed30(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2019,7 +2043,7 @@
   buildCounterExplainQueryStep++;
   if (buildCounterExplainQueryStep < 3) {
     o.kind = 'foo';
-    o.substeps = buildUnnamed29();
+    o.substeps = buildUnnamed30();
   }
   buildCounterExplainQueryStep--;
   return o;
@@ -2032,7 +2056,7 @@
       o.kind!,
       unittest.equals('foo'),
     );
-    checkUnnamed29(o.substeps!);
+    checkUnnamed30(o.substeps!);
   }
   buildCounterExplainQueryStep--;
 }
@@ -2074,12 +2098,12 @@
   buildCounterExpr--;
 }
 
-core.List<core.String> buildUnnamed30() => [
+core.List<core.String> buildUnnamed31() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed30(core.List<core.String> o) {
+void checkUnnamed31(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2091,12 +2115,12 @@
   );
 }
 
-core.List<core.String> buildUnnamed31() => [
+core.List<core.String> buildUnnamed32() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed31(core.List<core.String> o) {
+void checkUnnamed32(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2119,7 +2143,7 @@
     o.compression = 'foo';
     o.connectionId = 'foo';
     o.csvOptions = buildCsvOptions();
-    o.decimalTargetTypes = buildUnnamed30();
+    o.decimalTargetTypes = buildUnnamed31();
     o.googleSheetsOptions = buildGoogleSheetsOptions();
     o.hivePartitioningOptions = buildHivePartitioningOptions();
     o.ignoreUnknownValues = true;
@@ -2127,7 +2151,7 @@
     o.parquetOptions = buildParquetOptions();
     o.schema = buildTableSchema();
     o.sourceFormat = 'foo';
-    o.sourceUris = buildUnnamed31();
+    o.sourceUris = buildUnnamed32();
   }
   buildCounterExternalDataConfiguration--;
   return o;
@@ -2148,7 +2172,7 @@
       unittest.equals('foo'),
     );
     checkCsvOptions(o.csvOptions!);
-    checkUnnamed30(o.decimalTargetTypes!);
+    checkUnnamed31(o.decimalTargetTypes!);
     checkGoogleSheetsOptions(o.googleSheetsOptions!);
     checkHivePartitioningOptions(o.hivePartitioningOptions!);
     unittest.expect(o.ignoreUnknownValues!, unittest.isTrue);
@@ -2162,7 +2186,7 @@
       o.sourceFormat!,
       unittest.equals('foo'),
     );
-    checkUnnamed31(o.sourceUris!);
+    checkUnnamed32(o.sourceUris!);
   }
   buildCounterExternalDataConfiguration--;
 }
@@ -2237,23 +2261,23 @@
   buildCounterGetPolicyOptions--;
 }
 
-core.List<api.ErrorProto> buildUnnamed32() => [
+core.List<api.ErrorProto> buildUnnamed33() => [
       buildErrorProto(),
       buildErrorProto(),
     ];
 
-void checkUnnamed32(core.List<api.ErrorProto> o) {
+void checkUnnamed33(core.List<api.ErrorProto> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorProto(o[0]);
   checkErrorProto(o[1]);
 }
 
-core.List<api.TableRow> buildUnnamed33() => [
+core.List<api.TableRow> buildUnnamed34() => [
       buildTableRow(),
       buildTableRow(),
     ];
 
-void checkUnnamed33(core.List<api.TableRow> o) {
+void checkUnnamed34(core.List<api.TableRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableRow(o[0]);
   checkTableRow(o[1]);
@@ -2265,14 +2289,14 @@
   buildCounterGetQueryResultsResponse++;
   if (buildCounterGetQueryResultsResponse < 3) {
     o.cacheHit = true;
-    o.errors = buildUnnamed32();
+    o.errors = buildUnnamed33();
     o.etag = 'foo';
     o.jobComplete = true;
     o.jobReference = buildJobReference();
     o.kind = 'foo';
     o.numDmlAffectedRows = 'foo';
     o.pageToken = 'foo';
-    o.rows = buildUnnamed33();
+    o.rows = buildUnnamed34();
     o.schema = buildTableSchema();
     o.totalBytesProcessed = 'foo';
     o.totalRows = 'foo';
@@ -2285,7 +2309,7 @@
   buildCounterGetQueryResultsResponse++;
   if (buildCounterGetQueryResultsResponse < 3) {
     unittest.expect(o.cacheHit!, unittest.isTrue);
-    checkUnnamed32(o.errors!);
+    checkUnnamed33(o.errors!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -2304,7 +2328,7 @@
       o.pageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed33(o.rows!);
+    checkUnnamed34(o.rows!);
     checkTableSchema(o.schema!);
     unittest.expect(
       o.totalBytesProcessed!,
@@ -2517,12 +2541,12 @@
   buildCounterJobCancelResponse--;
 }
 
-core.Map<core.String, core.String> buildUnnamed34() => {
+core.Map<core.String, core.String> buildUnnamed35() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed34(core.Map<core.String, core.String> o) {
+void checkUnnamed35(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2544,7 +2568,7 @@
     o.extract = buildJobConfigurationExtract();
     o.jobTimeoutMs = 'foo';
     o.jobType = 'foo';
-    o.labels = buildUnnamed34();
+    o.labels = buildUnnamed35();
     o.load = buildJobConfigurationLoad();
     o.query = buildJobConfigurationQuery();
   }
@@ -2566,19 +2590,19 @@
       o.jobType!,
       unittest.equals('foo'),
     );
-    checkUnnamed34(o.labels!);
+    checkUnnamed35(o.labels!);
     checkJobConfigurationLoad(o.load!);
     checkJobConfigurationQuery(o.query!);
   }
   buildCounterJobConfiguration--;
 }
 
-core.List<core.String> buildUnnamed35() => [
+core.List<core.String> buildUnnamed36() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed35(core.List<core.String> o) {
+void checkUnnamed36(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2598,7 +2622,7 @@
     o.compression = 'foo';
     o.destinationFormat = 'foo';
     o.destinationUri = 'foo';
-    o.destinationUris = buildUnnamed35();
+    o.destinationUris = buildUnnamed36();
     o.fieldDelimiter = 'foo';
     o.printHeader = true;
     o.sourceModel = buildModelReference();
@@ -2624,7 +2648,7 @@
       o.destinationUri!,
       unittest.equals('foo'),
     );
-    checkUnnamed35(o.destinationUris!);
+    checkUnnamed36(o.destinationUris!);
     unittest.expect(
       o.fieldDelimiter!,
       unittest.equals('foo'),
@@ -2637,23 +2661,6 @@
   buildCounterJobConfigurationExtract--;
 }
 
-core.List<core.String> buildUnnamed36() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed36(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed37() => [
       'foo',
       'foo',
@@ -2705,6 +2712,23 @@
   );
 }
 
+core.List<core.String> buildUnnamed40() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed40(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterJobConfigurationLoad = 0;
 api.JobConfigurationLoad buildJobConfigurationLoad() {
   final o = api.JobConfigurationLoad();
@@ -2715,7 +2739,7 @@
     o.autodetect = true;
     o.clustering = buildClustering();
     o.createDisposition = 'foo';
-    o.decimalTargetTypes = buildUnnamed36();
+    o.decimalTargetTypes = buildUnnamed37();
     o.destinationEncryptionConfiguration = buildEncryptionConfiguration();
     o.destinationTable = buildTableReference();
     o.destinationTableProperties = buildDestinationTableProperties();
@@ -2727,16 +2751,16 @@
     o.maxBadRecords = 42;
     o.nullMarker = 'foo';
     o.parquetOptions = buildParquetOptions();
-    o.projectionFields = buildUnnamed37();
+    o.projectionFields = buildUnnamed38();
     o.quote = 'foo';
     o.rangePartitioning = buildRangePartitioning();
     o.schema = buildTableSchema();
     o.schemaInline = 'foo';
     o.schemaInlineFormat = 'foo';
-    o.schemaUpdateOptions = buildUnnamed38();
+    o.schemaUpdateOptions = buildUnnamed39();
     o.skipLeadingRows = 42;
     o.sourceFormat = 'foo';
-    o.sourceUris = buildUnnamed39();
+    o.sourceUris = buildUnnamed40();
     o.timePartitioning = buildTimePartitioning();
     o.useAvroLogicalTypes = true;
     o.writeDisposition = 'foo';
@@ -2756,7 +2780,7 @@
       o.createDisposition!,
       unittest.equals('foo'),
     );
-    checkUnnamed36(o.decimalTargetTypes!);
+    checkUnnamed37(o.decimalTargetTypes!);
     checkEncryptionConfiguration(o.destinationEncryptionConfiguration!);
     checkTableReference(o.destinationTable!);
     checkDestinationTableProperties(o.destinationTableProperties!);
@@ -2783,7 +2807,7 @@
       unittest.equals('foo'),
     );
     checkParquetOptions(o.parquetOptions!);
-    checkUnnamed37(o.projectionFields!);
+    checkUnnamed38(o.projectionFields!);
     unittest.expect(
       o.quote!,
       unittest.equals('foo'),
@@ -2798,7 +2822,7 @@
       o.schemaInlineFormat!,
       unittest.equals('foo'),
     );
-    checkUnnamed38(o.schemaUpdateOptions!);
+    checkUnnamed39(o.schemaUpdateOptions!);
     unittest.expect(
       o.skipLeadingRows!,
       unittest.equals(42),
@@ -2807,7 +2831,7 @@
       o.sourceFormat!,
       unittest.equals('foo'),
     );
-    checkUnnamed39(o.sourceUris!);
+    checkUnnamed40(o.sourceUris!);
     checkTimePartitioning(o.timePartitioning!);
     unittest.expect(o.useAvroLogicalTypes!, unittest.isTrue);
     unittest.expect(
@@ -2818,34 +2842,34 @@
   buildCounterJobConfigurationLoad--;
 }
 
-core.List<api.ConnectionProperty> buildUnnamed40() => [
+core.List<api.ConnectionProperty> buildUnnamed41() => [
       buildConnectionProperty(),
       buildConnectionProperty(),
     ];
 
-void checkUnnamed40(core.List<api.ConnectionProperty> o) {
+void checkUnnamed41(core.List<api.ConnectionProperty> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkConnectionProperty(o[0]);
   checkConnectionProperty(o[1]);
 }
 
-core.List<api.QueryParameter> buildUnnamed41() => [
+core.List<api.QueryParameter> buildUnnamed42() => [
       buildQueryParameter(),
       buildQueryParameter(),
     ];
 
-void checkUnnamed41(core.List<api.QueryParameter> o) {
+void checkUnnamed42(core.List<api.QueryParameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQueryParameter(o[0]);
   checkQueryParameter(o[1]);
 }
 
-core.List<core.String> buildUnnamed42() => [
+core.List<core.String> buildUnnamed43() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed42(core.List<core.String> o) {
+void checkUnnamed43(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2857,23 +2881,23 @@
   );
 }
 
-core.Map<core.String, api.ExternalDataConfiguration> buildUnnamed43() => {
+core.Map<core.String, api.ExternalDataConfiguration> buildUnnamed44() => {
       'x': buildExternalDataConfiguration(),
       'y': buildExternalDataConfiguration(),
     };
 
-void checkUnnamed43(core.Map<core.String, api.ExternalDataConfiguration> o) {
+void checkUnnamed44(core.Map<core.String, api.ExternalDataConfiguration> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExternalDataConfiguration(o['x']!);
   checkExternalDataConfiguration(o['y']!);
 }
 
-core.List<api.UserDefinedFunctionResource> buildUnnamed44() => [
+core.List<api.UserDefinedFunctionResource> buildUnnamed45() => [
       buildUserDefinedFunctionResource(),
       buildUserDefinedFunctionResource(),
     ];
 
-void checkUnnamed44(core.List<api.UserDefinedFunctionResource> o) {
+void checkUnnamed45(core.List<api.UserDefinedFunctionResource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUserDefinedFunctionResource(o[0]);
   checkUserDefinedFunctionResource(o[1]);
@@ -2886,7 +2910,7 @@
   if (buildCounterJobConfigurationQuery < 3) {
     o.allowLargeResults = true;
     o.clustering = buildClustering();
-    o.connectionProperties = buildUnnamed40();
+    o.connectionProperties = buildUnnamed41();
     o.createDisposition = 'foo';
     o.createSession = true;
     o.defaultDataset = buildDatasetReference();
@@ -2899,14 +2923,14 @@
     o.preserveNulls = true;
     o.priority = 'foo';
     o.query = 'foo';
-    o.queryParameters = buildUnnamed41();
+    o.queryParameters = buildUnnamed42();
     o.rangePartitioning = buildRangePartitioning();
-    o.schemaUpdateOptions = buildUnnamed42();
-    o.tableDefinitions = buildUnnamed43();
+    o.schemaUpdateOptions = buildUnnamed43();
+    o.tableDefinitions = buildUnnamed44();
     o.timePartitioning = buildTimePartitioning();
     o.useLegacySql = true;
     o.useQueryCache = true;
-    o.userDefinedFunctionResources = buildUnnamed44();
+    o.userDefinedFunctionResources = buildUnnamed45();
     o.writeDisposition = 'foo';
   }
   buildCounterJobConfigurationQuery--;
@@ -2918,7 +2942,7 @@
   if (buildCounterJobConfigurationQuery < 3) {
     unittest.expect(o.allowLargeResults!, unittest.isTrue);
     checkClustering(o.clustering!);
-    checkUnnamed40(o.connectionProperties!);
+    checkUnnamed41(o.connectionProperties!);
     unittest.expect(
       o.createDisposition!,
       unittest.equals('foo'),
@@ -2949,14 +2973,14 @@
       o.query!,
       unittest.equals('foo'),
     );
-    checkUnnamed41(o.queryParameters!);
+    checkUnnamed42(o.queryParameters!);
     checkRangePartitioning(o.rangePartitioning!);
-    checkUnnamed42(o.schemaUpdateOptions!);
-    checkUnnamed43(o.tableDefinitions!);
+    checkUnnamed43(o.schemaUpdateOptions!);
+    checkUnnamed44(o.tableDefinitions!);
     checkTimePartitioning(o.timePartitioning!);
     unittest.expect(o.useLegacySql!, unittest.isTrue);
     unittest.expect(o.useQueryCache!, unittest.isTrue);
-    checkUnnamed44(o.userDefinedFunctionResources!);
+    checkUnnamed45(o.userDefinedFunctionResources!);
     unittest.expect(
       o.writeDisposition!,
       unittest.equals('foo'),
@@ -2965,12 +2989,12 @@
   buildCounterJobConfigurationQuery--;
 }
 
-core.List<api.TableReference> buildUnnamed45() => [
+core.List<api.TableReference> buildUnnamed46() => [
       buildTableReference(),
       buildTableReference(),
     ];
 
-void checkUnnamed45(core.List<api.TableReference> o) {
+void checkUnnamed46(core.List<api.TableReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableReference(o[0]);
   checkTableReference(o[1]);
@@ -2991,7 +3015,7 @@
     o.destinationTable = buildTableReference();
     o.operationType = 'foo';
     o.sourceTable = buildTableReference();
-    o.sourceTables = buildUnnamed45();
+    o.sourceTables = buildUnnamed46();
     o.writeDisposition = 'foo';
   }
   buildCounterJobConfigurationTableCopy--;
@@ -3026,7 +3050,7 @@
       unittest.equals('foo'),
     );
     checkTableReference(o.sourceTable!);
-    checkUnnamed45(o.sourceTables!);
+    checkUnnamed46(o.sourceTables!);
     unittest.expect(
       o.writeDisposition!,
       unittest.equals('foo'),
@@ -3082,12 +3106,12 @@
   buildCounterJobListJobs--;
 }
 
-core.List<api.JobListJobs> buildUnnamed46() => [
+core.List<api.JobListJobs> buildUnnamed47() => [
       buildJobListJobs(),
       buildJobListJobs(),
     ];
 
-void checkUnnamed46(core.List<api.JobListJobs> o) {
+void checkUnnamed47(core.List<api.JobListJobs> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJobListJobs(o[0]);
   checkJobListJobs(o[1]);
@@ -3099,7 +3123,7 @@
   buildCounterJobList++;
   if (buildCounterJobList < 3) {
     o.etag = 'foo';
-    o.jobs = buildUnnamed46();
+    o.jobs = buildUnnamed47();
     o.kind = 'foo';
     o.nextPageToken = 'foo';
   }
@@ -3114,7 +3138,7 @@
       o.etag!,
       unittest.equals('foo'),
     );
-    checkUnnamed46(o.jobs!);
+    checkUnnamed47(o.jobs!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -3159,12 +3183,12 @@
   buildCounterJobReference--;
 }
 
-core.List<core.String> buildUnnamed47() => [
+core.List<core.String> buildUnnamed48() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed47(core.List<core.String> o) {
+void checkUnnamed48(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -3203,12 +3227,12 @@
   buildCounterJobStatisticsReservationUsage--;
 }
 
-core.List<api.JobStatisticsReservationUsage> buildUnnamed48() => [
+core.List<api.JobStatisticsReservationUsage> buildUnnamed49() => [
       buildJobStatisticsReservationUsage(),
       buildJobStatisticsReservationUsage(),
     ];
 
-void checkUnnamed48(core.List<api.JobStatisticsReservationUsage> o) {
+void checkUnnamed49(core.List<api.JobStatisticsReservationUsage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJobStatisticsReservationUsage(o[0]);
   checkJobStatisticsReservationUsage(o[1]);
@@ -3227,8 +3251,8 @@
     o.numChildJobs = 'foo';
     o.parentJobId = 'foo';
     o.query = buildJobStatistics2();
-    o.quotaDeferments = buildUnnamed47();
-    o.reservationUsage = buildUnnamed48();
+    o.quotaDeferments = buildUnnamed48();
+    o.reservationUsage = buildUnnamed49();
     o.reservationId = 'foo';
     o.rowLevelSecurityStatistics = buildRowLevelSecurityStatistics();
     o.scriptStatistics = buildScriptStatistics();
@@ -3268,8 +3292,8 @@
       unittest.equals('foo'),
     );
     checkJobStatistics2(o.query!);
-    checkUnnamed47(o.quotaDeferments!);
-    checkUnnamed48(o.reservationUsage!);
+    checkUnnamed48(o.quotaDeferments!);
+    checkUnnamed49(o.reservationUsage!);
     unittest.expect(
       o.reservationId!,
       unittest.equals('foo'),
@@ -3294,34 +3318,34 @@
   buildCounterJobStatistics--;
 }
 
-core.List<api.ExplainQueryStage> buildUnnamed49() => [
+core.List<api.ExplainQueryStage> buildUnnamed50() => [
       buildExplainQueryStage(),
       buildExplainQueryStage(),
     ];
 
-void checkUnnamed49(core.List<api.ExplainQueryStage> o) {
+void checkUnnamed50(core.List<api.ExplainQueryStage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExplainQueryStage(o[0]);
   checkExplainQueryStage(o[1]);
 }
 
-core.List<api.RoutineReference> buildUnnamed50() => [
+core.List<api.RoutineReference> buildUnnamed51() => [
       buildRoutineReference(),
       buildRoutineReference(),
     ];
 
-void checkUnnamed50(core.List<api.RoutineReference> o) {
+void checkUnnamed51(core.List<api.RoutineReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoutineReference(o[0]);
   checkRoutineReference(o[1]);
 }
 
-core.List<api.TableReference> buildUnnamed51() => [
+core.List<api.TableReference> buildUnnamed52() => [
       buildTableReference(),
       buildTableReference(),
     ];
 
-void checkUnnamed51(core.List<api.TableReference> o) {
+void checkUnnamed52(core.List<api.TableReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableReference(o[0]);
   checkTableReference(o[1]);
@@ -3354,34 +3378,34 @@
   buildCounterJobStatistics2ReservationUsage--;
 }
 
-core.List<api.JobStatistics2ReservationUsage> buildUnnamed52() => [
+core.List<api.JobStatistics2ReservationUsage> buildUnnamed53() => [
       buildJobStatistics2ReservationUsage(),
       buildJobStatistics2ReservationUsage(),
     ];
 
-void checkUnnamed52(core.List<api.JobStatistics2ReservationUsage> o) {
+void checkUnnamed53(core.List<api.JobStatistics2ReservationUsage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJobStatistics2ReservationUsage(o[0]);
   checkJobStatistics2ReservationUsage(o[1]);
 }
 
-core.List<api.QueryTimelineSample> buildUnnamed53() => [
+core.List<api.QueryTimelineSample> buildUnnamed54() => [
       buildQueryTimelineSample(),
       buildQueryTimelineSample(),
     ];
 
-void checkUnnamed53(core.List<api.QueryTimelineSample> o) {
+void checkUnnamed54(core.List<api.QueryTimelineSample> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQueryTimelineSample(o[0]);
   checkQueryTimelineSample(o[1]);
 }
 
-core.List<api.QueryParameter> buildUnnamed54() => [
+core.List<api.QueryParameter> buildUnnamed55() => [
       buildQueryParameter(),
       buildQueryParameter(),
     ];
 
-void checkUnnamed54(core.List<api.QueryParameter> o) {
+void checkUnnamed55(core.List<api.QueryParameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQueryParameter(o[0]);
   checkQueryParameter(o[1]);
@@ -3409,19 +3433,19 @@
     o.modelTrainingCurrentIteration = 42;
     o.modelTrainingExpectedTotalIteration = 'foo';
     o.numDmlAffectedRows = 'foo';
-    o.queryPlan = buildUnnamed49();
-    o.referencedRoutines = buildUnnamed50();
-    o.referencedTables = buildUnnamed51();
-    o.reservationUsage = buildUnnamed52();
+    o.queryPlan = buildUnnamed50();
+    o.referencedRoutines = buildUnnamed51();
+    o.referencedTables = buildUnnamed52();
+    o.reservationUsage = buildUnnamed53();
     o.schema = buildTableSchema();
     o.statementType = 'foo';
-    o.timeline = buildUnnamed53();
+    o.timeline = buildUnnamed54();
     o.totalBytesBilled = 'foo';
     o.totalBytesProcessed = 'foo';
     o.totalBytesProcessedAccuracy = 'foo';
     o.totalPartitionsProcessed = 'foo';
     o.totalSlotMs = 'foo';
-    o.undeclaredQueryParameters = buildUnnamed54();
+    o.undeclaredQueryParameters = buildUnnamed55();
   }
   buildCounterJobStatistics2--;
   return o;
@@ -3468,16 +3492,16 @@
       o.numDmlAffectedRows!,
       unittest.equals('foo'),
     );
-    checkUnnamed49(o.queryPlan!);
-    checkUnnamed50(o.referencedRoutines!);
-    checkUnnamed51(o.referencedTables!);
-    checkUnnamed52(o.reservationUsage!);
+    checkUnnamed50(o.queryPlan!);
+    checkUnnamed51(o.referencedRoutines!);
+    checkUnnamed52(o.referencedTables!);
+    checkUnnamed53(o.reservationUsage!);
     checkTableSchema(o.schema!);
     unittest.expect(
       o.statementType!,
       unittest.equals('foo'),
     );
-    checkUnnamed53(o.timeline!);
+    checkUnnamed54(o.timeline!);
     unittest.expect(
       o.totalBytesBilled!,
       unittest.equals('foo'),
@@ -3498,7 +3522,7 @@
       o.totalSlotMs!,
       unittest.equals('foo'),
     );
-    checkUnnamed54(o.undeclaredQueryParameters!);
+    checkUnnamed55(o.undeclaredQueryParameters!);
   }
   buildCounterJobStatistics2--;
 }
@@ -3545,12 +3569,12 @@
   buildCounterJobStatistics3--;
 }
 
-core.List<core.String> buildUnnamed55() => [
+core.List<core.String> buildUnnamed56() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed55(core.List<core.String> o) {
+void checkUnnamed56(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -3567,7 +3591,7 @@
   final o = api.JobStatistics4();
   buildCounterJobStatistics4++;
   if (buildCounterJobStatistics4 < 3) {
-    o.destinationUriFileCounts = buildUnnamed55();
+    o.destinationUriFileCounts = buildUnnamed56();
     o.inputBytes = 'foo';
   }
   buildCounterJobStatistics4--;
@@ -3577,7 +3601,7 @@
 void checkJobStatistics4(api.JobStatistics4 o) {
   buildCounterJobStatistics4++;
   if (buildCounterJobStatistics4 < 3) {
-    checkUnnamed55(o.destinationUriFileCounts!);
+    checkUnnamed56(o.destinationUriFileCounts!);
     unittest.expect(
       o.inputBytes!,
       unittest.equals('foo'),
@@ -3586,12 +3610,12 @@
   buildCounterJobStatistics4--;
 }
 
-core.List<api.ErrorProto> buildUnnamed56() => [
+core.List<api.ErrorProto> buildUnnamed57() => [
       buildErrorProto(),
       buildErrorProto(),
     ];
 
-void checkUnnamed56(core.List<api.ErrorProto> o) {
+void checkUnnamed57(core.List<api.ErrorProto> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorProto(o[0]);
   checkErrorProto(o[1]);
@@ -3603,7 +3627,7 @@
   buildCounterJobStatus++;
   if (buildCounterJobStatus < 3) {
     o.errorResult = buildErrorProto();
-    o.errors = buildUnnamed56();
+    o.errors = buildUnnamed57();
     o.state = 'foo';
   }
   buildCounterJobStatus--;
@@ -3614,7 +3638,7 @@
   buildCounterJobStatus++;
   if (buildCounterJobStatus < 3) {
     checkErrorProto(o.errorResult!);
-    checkUnnamed56(o.errors!);
+    checkUnnamed57(o.errors!);
     unittest.expect(
       o.state!,
       unittest.equals('foo'),
@@ -3670,12 +3694,12 @@
   );
 }
 
-core.List<api.Model> buildUnnamed57() => [
+core.List<api.Model> buildUnnamed58() => [
       buildModel(),
       buildModel(),
     ];
 
-void checkUnnamed57(core.List<api.Model> o) {
+void checkUnnamed58(core.List<api.Model> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkModel(o[0]);
   checkModel(o[1]);
@@ -3686,7 +3710,7 @@
   final o = api.ListModelsResponse();
   buildCounterListModelsResponse++;
   if (buildCounterListModelsResponse < 3) {
-    o.models = buildUnnamed57();
+    o.models = buildUnnamed58();
     o.nextPageToken = 'foo';
   }
   buildCounterListModelsResponse--;
@@ -3696,7 +3720,7 @@
 void checkListModelsResponse(api.ListModelsResponse o) {
   buildCounterListModelsResponse++;
   if (buildCounterListModelsResponse < 3) {
-    checkUnnamed57(o.models!);
+    checkUnnamed58(o.models!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -3705,12 +3729,12 @@
   buildCounterListModelsResponse--;
 }
 
-core.List<api.Routine> buildUnnamed58() => [
+core.List<api.Routine> buildUnnamed59() => [
       buildRoutine(),
       buildRoutine(),
     ];
 
-void checkUnnamed58(core.List<api.Routine> o) {
+void checkUnnamed59(core.List<api.Routine> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoutine(o[0]);
   checkRoutine(o[1]);
@@ -3722,7 +3746,7 @@
   buildCounterListRoutinesResponse++;
   if (buildCounterListRoutinesResponse < 3) {
     o.nextPageToken = 'foo';
-    o.routines = buildUnnamed58();
+    o.routines = buildUnnamed59();
   }
   buildCounterListRoutinesResponse--;
   return o;
@@ -3735,17 +3759,17 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed58(o.routines!);
+    checkUnnamed59(o.routines!);
   }
   buildCounterListRoutinesResponse--;
 }
 
-core.List<api.RowAccessPolicy> buildUnnamed59() => [
+core.List<api.RowAccessPolicy> buildUnnamed60() => [
       buildRowAccessPolicy(),
       buildRowAccessPolicy(),
     ];
 
-void checkUnnamed59(core.List<api.RowAccessPolicy> o) {
+void checkUnnamed60(core.List<api.RowAccessPolicy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRowAccessPolicy(o[0]);
   checkRowAccessPolicy(o[1]);
@@ -3757,7 +3781,7 @@
   buildCounterListRowAccessPoliciesResponse++;
   if (buildCounterListRowAccessPoliciesResponse < 3) {
     o.nextPageToken = 'foo';
-    o.rowAccessPolicies = buildUnnamed59();
+    o.rowAccessPolicies = buildUnnamed60();
   }
   buildCounterListRowAccessPoliciesResponse--;
   return o;
@@ -3770,7 +3794,7 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed59(o.rowAccessPolicies!);
+    checkUnnamed60(o.rowAccessPolicies!);
   }
   buildCounterListRowAccessPoliciesResponse--;
 }
@@ -3809,12 +3833,12 @@
   buildCounterMaterializedViewDefinition--;
 }
 
-core.List<api.IterationResult> buildUnnamed60() => [
+core.List<api.IterationResult> buildUnnamed61() => [
       buildIterationResult(),
       buildIterationResult(),
     ];
 
-void checkUnnamed60(core.List<api.IterationResult> o) {
+void checkUnnamed61(core.List<api.IterationResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkIterationResult(o[0]);
   checkIterationResult(o[1]);
@@ -3825,7 +3849,7 @@
   final o = api.MlStatistics();
   buildCounterMlStatistics++;
   if (buildCounterMlStatistics < 3) {
-    o.iterationResults = buildUnnamed60();
+    o.iterationResults = buildUnnamed61();
     o.maxIterations = 'foo';
   }
   buildCounterMlStatistics--;
@@ -3835,7 +3859,7 @@
 void checkMlStatistics(api.MlStatistics o) {
   buildCounterMlStatistics++;
   if (buildCounterMlStatistics < 3) {
-    checkUnnamed60(o.iterationResults!);
+    checkUnnamed61(o.iterationResults!);
     unittest.expect(
       o.maxIterations!,
       unittest.equals('foo'),
@@ -3844,17 +3868,6 @@
   buildCounterMlStatistics--;
 }
 
-core.List<api.StandardSqlField> buildUnnamed61() => [
-      buildStandardSqlField(),
-      buildStandardSqlField(),
-    ];
-
-void checkUnnamed61(core.List<api.StandardSqlField> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkStandardSqlField(o[0]);
-  checkStandardSqlField(o[1]);
-}
-
 core.List<api.StandardSqlField> buildUnnamed62() => [
       buildStandardSqlField(),
       buildStandardSqlField(),
@@ -3866,12 +3879,23 @@
   checkStandardSqlField(o[1]);
 }
 
-core.Map<core.String, core.String> buildUnnamed63() => {
+core.List<api.StandardSqlField> buildUnnamed63() => [
+      buildStandardSqlField(),
+      buildStandardSqlField(),
+    ];
+
+void checkUnnamed63(core.List<api.StandardSqlField> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStandardSqlField(o[0]);
+  checkStandardSqlField(o[1]);
+}
+
+core.Map<core.String, core.String> buildUnnamed64() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed63(core.Map<core.String, core.String> o) {
+void checkUnnamed64(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -3883,12 +3907,12 @@
   );
 }
 
-core.List<api.TrainingRun> buildUnnamed64() => [
+core.List<api.TrainingRun> buildUnnamed65() => [
       buildTrainingRun(),
       buildTrainingRun(),
     ];
 
-void checkUnnamed64(core.List<api.TrainingRun> o) {
+void checkUnnamed65(core.List<api.TrainingRun> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTrainingRun(o[0]);
   checkTrainingRun(o[1]);
@@ -3905,15 +3929,15 @@
     o.encryptionConfiguration = buildEncryptionConfiguration();
     o.etag = 'foo';
     o.expirationTime = 'foo';
-    o.featureColumns = buildUnnamed61();
+    o.featureColumns = buildUnnamed62();
     o.friendlyName = 'foo';
-    o.labelColumns = buildUnnamed62();
-    o.labels = buildUnnamed63();
+    o.labelColumns = buildUnnamed63();
+    o.labels = buildUnnamed64();
     o.lastModifiedTime = 'foo';
     o.location = 'foo';
     o.modelReference = buildModelReference();
     o.modelType = 'foo';
-    o.trainingRuns = buildUnnamed64();
+    o.trainingRuns = buildUnnamed65();
   }
   buildCounterModel--;
   return o;
@@ -3943,13 +3967,13 @@
       o.expirationTime!,
       unittest.equals('foo'),
     );
-    checkUnnamed61(o.featureColumns!);
+    checkUnnamed62(o.featureColumns!);
     unittest.expect(
       o.friendlyName!,
       unittest.equals('foo'),
     );
-    checkUnnamed62(o.labelColumns!);
-    checkUnnamed63(o.labels!);
+    checkUnnamed63(o.labelColumns!);
+    checkUnnamed64(o.labels!);
     unittest.expect(
       o.lastModifiedTime!,
       unittest.equals('foo'),
@@ -3963,17 +3987,17 @@
       o.modelType!,
       unittest.equals('foo'),
     );
-    checkUnnamed64(o.trainingRuns!);
+    checkUnnamed65(o.trainingRuns!);
   }
   buildCounterModel--;
 }
 
-core.List<core.String> buildUnnamed65() => [
+core.List<core.String> buildUnnamed66() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed65(core.List<core.String> o) {
+void checkUnnamed66(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -3990,7 +4014,7 @@
   final o = api.ModelDefinitionModelOptions();
   buildCounterModelDefinitionModelOptions++;
   if (buildCounterModelDefinitionModelOptions < 3) {
-    o.labels = buildUnnamed65();
+    o.labels = buildUnnamed66();
     o.lossType = 'foo';
     o.modelType = 'foo';
   }
@@ -4001,7 +4025,7 @@
 void checkModelDefinitionModelOptions(api.ModelDefinitionModelOptions o) {
   buildCounterModelDefinitionModelOptions++;
   if (buildCounterModelDefinitionModelOptions < 3) {
-    checkUnnamed65(o.labels!);
+    checkUnnamed66(o.labels!);
     unittest.expect(
       o.lossType!,
       unittest.equals('foo'),
@@ -4014,12 +4038,12 @@
   buildCounterModelDefinitionModelOptions--;
 }
 
-core.List<api.BqmlTrainingRun> buildUnnamed66() => [
+core.List<api.BqmlTrainingRun> buildUnnamed67() => [
       buildBqmlTrainingRun(),
       buildBqmlTrainingRun(),
     ];
 
-void checkUnnamed66(core.List<api.BqmlTrainingRun> o) {
+void checkUnnamed67(core.List<api.BqmlTrainingRun> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBqmlTrainingRun(o[0]);
   checkBqmlTrainingRun(o[1]);
@@ -4031,7 +4055,7 @@
   buildCounterModelDefinition++;
   if (buildCounterModelDefinition < 3) {
     o.modelOptions = buildModelDefinitionModelOptions();
-    o.trainingRuns = buildUnnamed66();
+    o.trainingRuns = buildUnnamed67();
   }
   buildCounterModelDefinition--;
   return o;
@@ -4041,7 +4065,7 @@
   buildCounterModelDefinition++;
   if (buildCounterModelDefinition < 3) {
     checkModelDefinitionModelOptions(o.modelOptions!);
-    checkUnnamed66(o.trainingRuns!);
+    checkUnnamed67(o.trainingRuns!);
   }
   buildCounterModelDefinition--;
 }
@@ -4078,12 +4102,12 @@
   buildCounterModelReference--;
 }
 
-core.List<api.ConfusionMatrix> buildUnnamed67() => [
+core.List<api.ConfusionMatrix> buildUnnamed68() => [
       buildConfusionMatrix(),
       buildConfusionMatrix(),
     ];
 
-void checkUnnamed67(core.List<api.ConfusionMatrix> o) {
+void checkUnnamed68(core.List<api.ConfusionMatrix> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkConfusionMatrix(o[0]);
   checkConfusionMatrix(o[1]);
@@ -4095,7 +4119,7 @@
   buildCounterMultiClassClassificationMetrics++;
   if (buildCounterMultiClassClassificationMetrics < 3) {
     o.aggregateClassificationMetrics = buildAggregateClassificationMetrics();
-    o.confusionMatrixList = buildUnnamed67();
+    o.confusionMatrixList = buildUnnamed68();
   }
   buildCounterMultiClassClassificationMetrics--;
   return o;
@@ -4106,7 +4130,7 @@
   buildCounterMultiClassClassificationMetrics++;
   if (buildCounterMultiClassClassificationMetrics < 3) {
     checkAggregateClassificationMetrics(o.aggregateClassificationMetrics!);
-    checkUnnamed67(o.confusionMatrixList!);
+    checkUnnamed68(o.confusionMatrixList!);
   }
   buildCounterMultiClassClassificationMetrics--;
 }
@@ -4132,23 +4156,23 @@
   buildCounterParquetOptions--;
 }
 
-core.List<api.AuditConfig> buildUnnamed68() => [
+core.List<api.AuditConfig> buildUnnamed69() => [
       buildAuditConfig(),
       buildAuditConfig(),
     ];
 
-void checkUnnamed68(core.List<api.AuditConfig> o) {
+void checkUnnamed69(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-core.List<api.Binding> buildUnnamed69() => [
+core.List<api.Binding> buildUnnamed70() => [
       buildBinding(),
       buildBinding(),
     ];
 
-void checkUnnamed69(core.List<api.Binding> o) {
+void checkUnnamed70(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -4159,8 +4183,8 @@
   final o = api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed68();
-    o.bindings = buildUnnamed69();
+    o.auditConfigs = buildUnnamed69();
+    o.bindings = buildUnnamed70();
     o.etag = 'foo';
     o.version = 42;
   }
@@ -4171,8 +4195,8 @@
 void checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed68(o.auditConfigs!);
-    checkUnnamed69(o.bindings!);
+    checkUnnamed69(o.auditConfigs!);
+    checkUnnamed70(o.bindings!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -4224,12 +4248,12 @@
   buildCounterProjectListProjects--;
 }
 
-core.List<api.ProjectListProjects> buildUnnamed70() => [
+core.List<api.ProjectListProjects> buildUnnamed71() => [
       buildProjectListProjects(),
       buildProjectListProjects(),
     ];
 
-void checkUnnamed70(core.List<api.ProjectListProjects> o) {
+void checkUnnamed71(core.List<api.ProjectListProjects> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkProjectListProjects(o[0]);
   checkProjectListProjects(o[1]);
@@ -4243,7 +4267,7 @@
     o.etag = 'foo';
     o.kind = 'foo';
     o.nextPageToken = 'foo';
-    o.projects = buildUnnamed70();
+    o.projects = buildUnnamed71();
     o.totalItems = 42;
   }
   buildCounterProjectList--;
@@ -4265,7 +4289,7 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed70(o.projects!);
+    checkUnnamed71(o.projects!);
     unittest.expect(
       o.totalItems!,
       unittest.equals(42),
@@ -4351,12 +4375,12 @@
   buildCounterQueryParameterTypeStructTypes--;
 }
 
-core.List<api.QueryParameterTypeStructTypes> buildUnnamed71() => [
+core.List<api.QueryParameterTypeStructTypes> buildUnnamed72() => [
       buildQueryParameterTypeStructTypes(),
       buildQueryParameterTypeStructTypes(),
     ];
 
-void checkUnnamed71(core.List<api.QueryParameterTypeStructTypes> o) {
+void checkUnnamed72(core.List<api.QueryParameterTypeStructTypes> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQueryParameterTypeStructTypes(o[0]);
   checkQueryParameterTypeStructTypes(o[1]);
@@ -4368,7 +4392,7 @@
   buildCounterQueryParameterType++;
   if (buildCounterQueryParameterType < 3) {
     o.arrayType = buildQueryParameterType();
-    o.structTypes = buildUnnamed71();
+    o.structTypes = buildUnnamed72();
     o.type = 'foo';
   }
   buildCounterQueryParameterType--;
@@ -4379,7 +4403,7 @@
   buildCounterQueryParameterType++;
   if (buildCounterQueryParameterType < 3) {
     checkQueryParameterType(o.arrayType!);
-    checkUnnamed71(o.structTypes!);
+    checkUnnamed72(o.structTypes!);
     unittest.expect(
       o.type!,
       unittest.equals('foo'),
@@ -4388,23 +4412,23 @@
   buildCounterQueryParameterType--;
 }
 
-core.List<api.QueryParameterValue> buildUnnamed72() => [
+core.List<api.QueryParameterValue> buildUnnamed73() => [
       buildQueryParameterValue(),
       buildQueryParameterValue(),
     ];
 
-void checkUnnamed72(core.List<api.QueryParameterValue> o) {
+void checkUnnamed73(core.List<api.QueryParameterValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQueryParameterValue(o[0]);
   checkQueryParameterValue(o[1]);
 }
 
-core.Map<core.String, api.QueryParameterValue> buildUnnamed73() => {
+core.Map<core.String, api.QueryParameterValue> buildUnnamed74() => {
       'x': buildQueryParameterValue(),
       'y': buildQueryParameterValue(),
     };
 
-void checkUnnamed73(core.Map<core.String, api.QueryParameterValue> o) {
+void checkUnnamed74(core.Map<core.String, api.QueryParameterValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQueryParameterValue(o['x']!);
   checkQueryParameterValue(o['y']!);
@@ -4415,8 +4439,8 @@
   final o = api.QueryParameterValue();
   buildCounterQueryParameterValue++;
   if (buildCounterQueryParameterValue < 3) {
-    o.arrayValues = buildUnnamed72();
-    o.structValues = buildUnnamed73();
+    o.arrayValues = buildUnnamed73();
+    o.structValues = buildUnnamed74();
     o.value = 'foo';
   }
   buildCounterQueryParameterValue--;
@@ -4426,8 +4450,8 @@
 void checkQueryParameterValue(api.QueryParameterValue o) {
   buildCounterQueryParameterValue++;
   if (buildCounterQueryParameterValue < 3) {
-    checkUnnamed72(o.arrayValues!);
-    checkUnnamed73(o.structValues!);
+    checkUnnamed73(o.arrayValues!);
+    checkUnnamed74(o.structValues!);
     unittest.expect(
       o.value!,
       unittest.equals('foo'),
@@ -4436,23 +4460,23 @@
   buildCounterQueryParameterValue--;
 }
 
-core.List<api.ConnectionProperty> buildUnnamed74() => [
+core.List<api.ConnectionProperty> buildUnnamed75() => [
       buildConnectionProperty(),
       buildConnectionProperty(),
     ];
 
-void checkUnnamed74(core.List<api.ConnectionProperty> o) {
+void checkUnnamed75(core.List<api.ConnectionProperty> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkConnectionProperty(o[0]);
   checkConnectionProperty(o[1]);
 }
 
-core.Map<core.String, core.String> buildUnnamed75() => {
+core.Map<core.String, core.String> buildUnnamed76() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed75(core.Map<core.String, core.String> o) {
+void checkUnnamed76(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -4464,12 +4488,12 @@
   );
 }
 
-core.List<api.QueryParameter> buildUnnamed76() => [
+core.List<api.QueryParameter> buildUnnamed77() => [
       buildQueryParameter(),
       buildQueryParameter(),
     ];
 
-void checkUnnamed76(core.List<api.QueryParameter> o) {
+void checkUnnamed77(core.List<api.QueryParameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkQueryParameter(o[0]);
   checkQueryParameter(o[1]);
@@ -4480,19 +4504,19 @@
   final o = api.QueryRequest();
   buildCounterQueryRequest++;
   if (buildCounterQueryRequest < 3) {
-    o.connectionProperties = buildUnnamed74();
+    o.connectionProperties = buildUnnamed75();
     o.createSession = true;
     o.defaultDataset = buildDatasetReference();
     o.dryRun = true;
     o.kind = 'foo';
-    o.labels = buildUnnamed75();
+    o.labels = buildUnnamed76();
     o.location = 'foo';
     o.maxResults = 42;
     o.maximumBytesBilled = 'foo';
     o.parameterMode = 'foo';
     o.preserveNulls = true;
     o.query = 'foo';
-    o.queryParameters = buildUnnamed76();
+    o.queryParameters = buildUnnamed77();
     o.requestId = 'foo';
     o.timeoutMs = 42;
     o.useLegacySql = true;
@@ -4505,7 +4529,7 @@
 void checkQueryRequest(api.QueryRequest o) {
   buildCounterQueryRequest++;
   if (buildCounterQueryRequest < 3) {
-    checkUnnamed74(o.connectionProperties!);
+    checkUnnamed75(o.connectionProperties!);
     unittest.expect(o.createSession!, unittest.isTrue);
     checkDatasetReference(o.defaultDataset!);
     unittest.expect(o.dryRun!, unittest.isTrue);
@@ -4513,7 +4537,7 @@
       o.kind!,
       unittest.equals('foo'),
     );
-    checkUnnamed75(o.labels!);
+    checkUnnamed76(o.labels!);
     unittest.expect(
       o.location!,
       unittest.equals('foo'),
@@ -4535,7 +4559,7 @@
       o.query!,
       unittest.equals('foo'),
     );
-    checkUnnamed76(o.queryParameters!);
+    checkUnnamed77(o.queryParameters!);
     unittest.expect(
       o.requestId!,
       unittest.equals('foo'),
@@ -4550,23 +4574,23 @@
   buildCounterQueryRequest--;
 }
 
-core.List<api.ErrorProto> buildUnnamed77() => [
+core.List<api.ErrorProto> buildUnnamed78() => [
       buildErrorProto(),
       buildErrorProto(),
     ];
 
-void checkUnnamed77(core.List<api.ErrorProto> o) {
+void checkUnnamed78(core.List<api.ErrorProto> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorProto(o[0]);
   checkErrorProto(o[1]);
 }
 
-core.List<api.TableRow> buildUnnamed78() => [
+core.List<api.TableRow> buildUnnamed79() => [
       buildTableRow(),
       buildTableRow(),
     ];
 
-void checkUnnamed78(core.List<api.TableRow> o) {
+void checkUnnamed79(core.List<api.TableRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableRow(o[0]);
   checkTableRow(o[1]);
@@ -4579,13 +4603,13 @@
   if (buildCounterQueryResponse < 3) {
     o.cacheHit = true;
     o.dmlStats = buildDmlStatistics();
-    o.errors = buildUnnamed77();
+    o.errors = buildUnnamed78();
     o.jobComplete = true;
     o.jobReference = buildJobReference();
     o.kind = 'foo';
     o.numDmlAffectedRows = 'foo';
     o.pageToken = 'foo';
-    o.rows = buildUnnamed78();
+    o.rows = buildUnnamed79();
     o.schema = buildTableSchema();
     o.sessionInfo = buildSessionInfo();
     o.totalBytesProcessed = 'foo';
@@ -4600,7 +4624,7 @@
   if (buildCounterQueryResponse < 3) {
     unittest.expect(o.cacheHit!, unittest.isTrue);
     checkDmlStatistics(o.dmlStats!);
-    checkUnnamed77(o.errors!);
+    checkUnnamed78(o.errors!);
     unittest.expect(o.jobComplete!, unittest.isTrue);
     checkJobReference(o.jobReference!);
     unittest.expect(
@@ -4615,7 +4639,7 @@
       o.pageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed78(o.rows!);
+    checkUnnamed79(o.rows!);
     checkTableSchema(o.schema!);
     checkSessionInfo(o.sessionInfo!);
     unittest.expect(
@@ -4807,23 +4831,23 @@
   buildCounterRegressionMetrics--;
 }
 
-core.List<api.Argument> buildUnnamed79() => [
+core.List<api.Argument> buildUnnamed80() => [
       buildArgument(),
       buildArgument(),
     ];
 
-void checkUnnamed79(core.List<api.Argument> o) {
+void checkUnnamed80(core.List<api.Argument> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkArgument(o[0]);
   checkArgument(o[1]);
 }
 
-core.List<core.String> buildUnnamed80() => [
+core.List<core.String> buildUnnamed81() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed80(core.List<core.String> o) {
+void checkUnnamed81(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -4840,13 +4864,13 @@
   final o = api.Routine();
   buildCounterRoutine++;
   if (buildCounterRoutine < 3) {
-    o.arguments = buildUnnamed79();
+    o.arguments = buildUnnamed80();
     o.creationTime = 'foo';
     o.definitionBody = 'foo';
     o.description = 'foo';
     o.determinismLevel = 'foo';
     o.etag = 'foo';
-    o.importedLibraries = buildUnnamed80();
+    o.importedLibraries = buildUnnamed81();
     o.language = 'foo';
     o.lastModifiedTime = 'foo';
     o.returnTableType = buildStandardSqlTableType();
@@ -4862,7 +4886,7 @@
 void checkRoutine(api.Routine o) {
   buildCounterRoutine++;
   if (buildCounterRoutine < 3) {
-    checkUnnamed79(o.arguments!);
+    checkUnnamed80(o.arguments!);
     unittest.expect(
       o.creationTime!,
       unittest.equals('foo'),
@@ -4883,7 +4907,7 @@
       o.etag!,
       unittest.equals('foo'),
     );
-    checkUnnamed80(o.importedLibraries!);
+    checkUnnamed81(o.importedLibraries!);
     unittest.expect(
       o.language!,
       unittest.equals('foo'),
@@ -4936,12 +4960,12 @@
   buildCounterRoutineReference--;
 }
 
-core.List<api.Entry> buildUnnamed81() => [
+core.List<api.Entry> buildUnnamed82() => [
       buildEntry(),
       buildEntry(),
     ];
 
-void checkUnnamed81(core.List<api.Entry> o) {
+void checkUnnamed82(core.List<api.Entry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEntry(o[0]);
   checkEntry(o[1]);
@@ -4953,7 +4977,7 @@
   buildCounterRow++;
   if (buildCounterRow < 3) {
     o.actualLabel = 'foo';
-    o.entries = buildUnnamed81();
+    o.entries = buildUnnamed82();
   }
   buildCounterRow--;
   return o;
@@ -4966,7 +4990,7 @@
       o.actualLabel!,
       unittest.equals('foo'),
     );
-    checkUnnamed81(o.entries!);
+    checkUnnamed82(o.entries!);
   }
   buildCounterRow--;
 }
@@ -5113,12 +5137,12 @@
   buildCounterScriptStackFrame--;
 }
 
-core.List<api.ScriptStackFrame> buildUnnamed82() => [
+core.List<api.ScriptStackFrame> buildUnnamed83() => [
       buildScriptStackFrame(),
       buildScriptStackFrame(),
     ];
 
-void checkUnnamed82(core.List<api.ScriptStackFrame> o) {
+void checkUnnamed83(core.List<api.ScriptStackFrame> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkScriptStackFrame(o[0]);
   checkScriptStackFrame(o[1]);
@@ -5130,7 +5154,7 @@
   buildCounterScriptStatistics++;
   if (buildCounterScriptStatistics < 3) {
     o.evaluationKind = 'foo';
-    o.stackFrames = buildUnnamed82();
+    o.stackFrames = buildUnnamed83();
   }
   buildCounterScriptStatistics--;
   return o;
@@ -5143,7 +5167,7 @@
       o.evaluationKind!,
       unittest.equals('foo'),
     );
-    checkUnnamed82(o.stackFrames!);
+    checkUnnamed83(o.stackFrames!);
   }
   buildCounterScriptStatistics--;
 }
@@ -5268,36 +5292,6 @@
   buildCounterStandardSqlField--;
 }
 
-core.List<api.StandardSqlField> buildUnnamed83() => [
-      buildStandardSqlField(),
-      buildStandardSqlField(),
-    ];
-
-void checkUnnamed83(core.List<api.StandardSqlField> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkStandardSqlField(o[0]);
-  checkStandardSqlField(o[1]);
-}
-
-core.int buildCounterStandardSqlStructType = 0;
-api.StandardSqlStructType buildStandardSqlStructType() {
-  final o = api.StandardSqlStructType();
-  buildCounterStandardSqlStructType++;
-  if (buildCounterStandardSqlStructType < 3) {
-    o.fields = buildUnnamed83();
-  }
-  buildCounterStandardSqlStructType--;
-  return o;
-}
-
-void checkStandardSqlStructType(api.StandardSqlStructType o) {
-  buildCounterStandardSqlStructType++;
-  if (buildCounterStandardSqlStructType < 3) {
-    checkUnnamed83(o.fields!);
-  }
-  buildCounterStandardSqlStructType--;
-}
-
 core.List<api.StandardSqlField> buildUnnamed84() => [
       buildStandardSqlField(),
       buildStandardSqlField(),
@@ -5309,12 +5303,42 @@
   checkStandardSqlField(o[1]);
 }
 
+core.int buildCounterStandardSqlStructType = 0;
+api.StandardSqlStructType buildStandardSqlStructType() {
+  final o = api.StandardSqlStructType();
+  buildCounterStandardSqlStructType++;
+  if (buildCounterStandardSqlStructType < 3) {
+    o.fields = buildUnnamed84();
+  }
+  buildCounterStandardSqlStructType--;
+  return o;
+}
+
+void checkStandardSqlStructType(api.StandardSqlStructType o) {
+  buildCounterStandardSqlStructType++;
+  if (buildCounterStandardSqlStructType < 3) {
+    checkUnnamed84(o.fields!);
+  }
+  buildCounterStandardSqlStructType--;
+}
+
+core.List<api.StandardSqlField> buildUnnamed85() => [
+      buildStandardSqlField(),
+      buildStandardSqlField(),
+    ];
+
+void checkUnnamed85(core.List<api.StandardSqlField> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStandardSqlField(o[0]);
+  checkStandardSqlField(o[1]);
+}
+
 core.int buildCounterStandardSqlTableType = 0;
 api.StandardSqlTableType buildStandardSqlTableType() {
   final o = api.StandardSqlTableType();
   buildCounterStandardSqlTableType++;
   if (buildCounterStandardSqlTableType < 3) {
-    o.columns = buildUnnamed84();
+    o.columns = buildUnnamed85();
   }
   buildCounterStandardSqlTableType--;
   return o;
@@ -5323,7 +5347,7 @@
 void checkStandardSqlTableType(api.StandardSqlTableType o) {
   buildCounterStandardSqlTableType++;
   if (buildCounterStandardSqlTableType < 3) {
-    checkUnnamed84(o.columns!);
+    checkUnnamed85(o.columns!);
   }
   buildCounterStandardSqlTableType--;
 }
@@ -5360,12 +5384,12 @@
   buildCounterStreamingbuffer--;
 }
 
-core.Map<core.String, core.String> buildUnnamed85() => {
+core.Map<core.String, core.String> buildUnnamed86() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed85(core.Map<core.String, core.String> o) {
+void checkUnnamed86(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -5393,7 +5417,7 @@
     o.friendlyName = 'foo';
     o.id = 'foo';
     o.kind = 'foo';
-    o.labels = buildUnnamed85();
+    o.labels = buildUnnamed86();
     o.lastModifiedTime = 'foo';
     o.location = 'foo';
     o.materializedView = buildMaterializedViewDefinition();
@@ -5455,7 +5479,7 @@
       o.kind!,
       unittest.equals('foo'),
     );
-    checkUnnamed85(o.labels!);
+    checkUnnamed86(o.labels!);
     unittest.expect(
       o.lastModifiedTime!,
       unittest.equals('foo'),
@@ -5562,12 +5586,12 @@
   buildCounterTableDataInsertAllRequestRows--;
 }
 
-core.List<api.TableDataInsertAllRequestRows> buildUnnamed86() => [
+core.List<api.TableDataInsertAllRequestRows> buildUnnamed87() => [
       buildTableDataInsertAllRequestRows(),
       buildTableDataInsertAllRequestRows(),
     ];
 
-void checkUnnamed86(core.List<api.TableDataInsertAllRequestRows> o) {
+void checkUnnamed87(core.List<api.TableDataInsertAllRequestRows> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableDataInsertAllRequestRows(o[0]);
   checkTableDataInsertAllRequestRows(o[1]);
@@ -5580,7 +5604,7 @@
   if (buildCounterTableDataInsertAllRequest < 3) {
     o.ignoreUnknownValues = true;
     o.kind = 'foo';
-    o.rows = buildUnnamed86();
+    o.rows = buildUnnamed87();
     o.skipInvalidRows = true;
     o.templateSuffix = 'foo';
   }
@@ -5596,7 +5620,7 @@
       o.kind!,
       unittest.equals('foo'),
     );
-    checkUnnamed86(o.rows!);
+    checkUnnamed87(o.rows!);
     unittest.expect(o.skipInvalidRows!, unittest.isTrue);
     unittest.expect(
       o.templateSuffix!,
@@ -5606,12 +5630,12 @@
   buildCounterTableDataInsertAllRequest--;
 }
 
-core.List<api.ErrorProto> buildUnnamed87() => [
+core.List<api.ErrorProto> buildUnnamed88() => [
       buildErrorProto(),
       buildErrorProto(),
     ];
 
-void checkUnnamed87(core.List<api.ErrorProto> o) {
+void checkUnnamed88(core.List<api.ErrorProto> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkErrorProto(o[0]);
   checkErrorProto(o[1]);
@@ -5623,7 +5647,7 @@
   final o = api.TableDataInsertAllResponseInsertErrors();
   buildCounterTableDataInsertAllResponseInsertErrors++;
   if (buildCounterTableDataInsertAllResponseInsertErrors < 3) {
-    o.errors = buildUnnamed87();
+    o.errors = buildUnnamed88();
     o.index = 42;
   }
   buildCounterTableDataInsertAllResponseInsertErrors--;
@@ -5634,7 +5658,7 @@
     api.TableDataInsertAllResponseInsertErrors o) {
   buildCounterTableDataInsertAllResponseInsertErrors++;
   if (buildCounterTableDataInsertAllResponseInsertErrors < 3) {
-    checkUnnamed87(o.errors!);
+    checkUnnamed88(o.errors!);
     unittest.expect(
       o.index!,
       unittest.equals(42),
@@ -5643,12 +5667,12 @@
   buildCounterTableDataInsertAllResponseInsertErrors--;
 }
 
-core.List<api.TableDataInsertAllResponseInsertErrors> buildUnnamed88() => [
+core.List<api.TableDataInsertAllResponseInsertErrors> buildUnnamed89() => [
       buildTableDataInsertAllResponseInsertErrors(),
       buildTableDataInsertAllResponseInsertErrors(),
     ];
 
-void checkUnnamed88(core.List<api.TableDataInsertAllResponseInsertErrors> o) {
+void checkUnnamed89(core.List<api.TableDataInsertAllResponseInsertErrors> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableDataInsertAllResponseInsertErrors(o[0]);
   checkTableDataInsertAllResponseInsertErrors(o[1]);
@@ -5659,7 +5683,7 @@
   final o = api.TableDataInsertAllResponse();
   buildCounterTableDataInsertAllResponse++;
   if (buildCounterTableDataInsertAllResponse < 3) {
-    o.insertErrors = buildUnnamed88();
+    o.insertErrors = buildUnnamed89();
     o.kind = 'foo';
   }
   buildCounterTableDataInsertAllResponse--;
@@ -5669,7 +5693,7 @@
 void checkTableDataInsertAllResponse(api.TableDataInsertAllResponse o) {
   buildCounterTableDataInsertAllResponse++;
   if (buildCounterTableDataInsertAllResponse < 3) {
-    checkUnnamed88(o.insertErrors!);
+    checkUnnamed89(o.insertErrors!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -5678,12 +5702,12 @@
   buildCounterTableDataInsertAllResponse--;
 }
 
-core.List<api.TableRow> buildUnnamed89() => [
+core.List<api.TableRow> buildUnnamed90() => [
       buildTableRow(),
       buildTableRow(),
     ];
 
-void checkUnnamed89(core.List<api.TableRow> o) {
+void checkUnnamed90(core.List<api.TableRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableRow(o[0]);
   checkTableRow(o[1]);
@@ -5697,7 +5721,7 @@
     o.etag = 'foo';
     o.kind = 'foo';
     o.pageToken = 'foo';
-    o.rows = buildUnnamed89();
+    o.rows = buildUnnamed90();
     o.totalRows = 'foo';
   }
   buildCounterTableDataList--;
@@ -5719,7 +5743,7 @@
       o.pageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed89(o.rows!);
+    checkUnnamed90(o.rows!);
     unittest.expect(
       o.totalRows!,
       unittest.equals('foo'),
@@ -5728,12 +5752,12 @@
   buildCounterTableDataList--;
 }
 
-core.List<core.String> buildUnnamed90() => [
+core.List<core.String> buildUnnamed91() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed90(core.List<core.String> o) {
+void checkUnnamed91(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -5750,7 +5774,7 @@
   final o = api.TableFieldSchemaCategories();
   buildCounterTableFieldSchemaCategories++;
   if (buildCounterTableFieldSchemaCategories < 3) {
-    o.names = buildUnnamed90();
+    o.names = buildUnnamed91();
   }
   buildCounterTableFieldSchemaCategories--;
   return o;
@@ -5759,28 +5783,28 @@
 void checkTableFieldSchemaCategories(api.TableFieldSchemaCategories o) {
   buildCounterTableFieldSchemaCategories++;
   if (buildCounterTableFieldSchemaCategories < 3) {
-    checkUnnamed90(o.names!);
+    checkUnnamed91(o.names!);
   }
   buildCounterTableFieldSchemaCategories--;
 }
 
-core.List<api.TableFieldSchema> buildUnnamed91() => [
+core.List<api.TableFieldSchema> buildUnnamed92() => [
       buildTableFieldSchema(),
       buildTableFieldSchema(),
     ];
 
-void checkUnnamed91(core.List<api.TableFieldSchema> o) {
+void checkUnnamed92(core.List<api.TableFieldSchema> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableFieldSchema(o[0]);
   checkTableFieldSchema(o[1]);
 }
 
-core.List<core.String> buildUnnamed92() => [
+core.List<core.String> buildUnnamed93() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed92(core.List<core.String> o) {
+void checkUnnamed93(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -5797,7 +5821,7 @@
   final o = api.TableFieldSchemaPolicyTags();
   buildCounterTableFieldSchemaPolicyTags++;
   if (buildCounterTableFieldSchemaPolicyTags < 3) {
-    o.names = buildUnnamed92();
+    o.names = buildUnnamed93();
   }
   buildCounterTableFieldSchemaPolicyTags--;
   return o;
@@ -5806,7 +5830,7 @@
 void checkTableFieldSchemaPolicyTags(api.TableFieldSchemaPolicyTags o) {
   buildCounterTableFieldSchemaPolicyTags++;
   if (buildCounterTableFieldSchemaPolicyTags < 3) {
-    checkUnnamed92(o.names!);
+    checkUnnamed93(o.names!);
   }
   buildCounterTableFieldSchemaPolicyTags--;
 }
@@ -5819,7 +5843,7 @@
     o.categories = buildTableFieldSchemaCategories();
     o.collationSpec = 'foo';
     o.description = 'foo';
-    o.fields = buildUnnamed91();
+    o.fields = buildUnnamed92();
     o.maxLength = 'foo';
     o.mode = 'foo';
     o.name = 'foo';
@@ -5844,7 +5868,7 @@
       o.description!,
       unittest.equals('foo'),
     );
-    checkUnnamed91(o.fields!);
+    checkUnnamed92(o.fields!);
     unittest.expect(
       o.maxLength!,
       unittest.equals('foo'),
@@ -5874,12 +5898,12 @@
   buildCounterTableFieldSchema--;
 }
 
-core.Map<core.String, core.String> buildUnnamed93() => {
+core.Map<core.String, core.String> buildUnnamed94() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed93(core.Map<core.String, core.String> o) {
+void checkUnnamed94(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -5921,7 +5945,7 @@
     o.friendlyName = 'foo';
     o.id = 'foo';
     o.kind = 'foo';
-    o.labels = buildUnnamed93();
+    o.labels = buildUnnamed94();
     o.rangePartitioning = buildRangePartitioning();
     o.tableReference = buildTableReference();
     o.timePartitioning = buildTimePartitioning();
@@ -5956,7 +5980,7 @@
       o.kind!,
       unittest.equals('foo'),
     );
-    checkUnnamed93(o.labels!);
+    checkUnnamed94(o.labels!);
     checkRangePartitioning(o.rangePartitioning!);
     checkTableReference(o.tableReference!);
     checkTimePartitioning(o.timePartitioning!);
@@ -5969,12 +5993,12 @@
   buildCounterTableListTables--;
 }
 
-core.List<api.TableListTables> buildUnnamed94() => [
+core.List<api.TableListTables> buildUnnamed95() => [
       buildTableListTables(),
       buildTableListTables(),
     ];
 
-void checkUnnamed94(core.List<api.TableListTables> o) {
+void checkUnnamed95(core.List<api.TableListTables> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableListTables(o[0]);
   checkTableListTables(o[1]);
@@ -5988,7 +6012,7 @@
     o.etag = 'foo';
     o.kind = 'foo';
     o.nextPageToken = 'foo';
-    o.tables = buildUnnamed94();
+    o.tables = buildUnnamed95();
     o.totalItems = 42;
   }
   buildCounterTableList--;
@@ -6010,7 +6034,7 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed94(o.tables!);
+    checkUnnamed95(o.tables!);
     unittest.expect(
       o.totalItems!,
       unittest.equals(42),
@@ -6051,12 +6075,12 @@
   buildCounterTableReference--;
 }
 
-core.List<api.TableCell> buildUnnamed95() => [
+core.List<api.TableCell> buildUnnamed96() => [
       buildTableCell(),
       buildTableCell(),
     ];
 
-void checkUnnamed95(core.List<api.TableCell> o) {
+void checkUnnamed96(core.List<api.TableCell> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableCell(o[0]);
   checkTableCell(o[1]);
@@ -6067,7 +6091,7 @@
   final o = api.TableRow();
   buildCounterTableRow++;
   if (buildCounterTableRow < 3) {
-    o.f = buildUnnamed95();
+    o.f = buildUnnamed96();
   }
   buildCounterTableRow--;
   return o;
@@ -6076,17 +6100,17 @@
 void checkTableRow(api.TableRow o) {
   buildCounterTableRow++;
   if (buildCounterTableRow < 3) {
-    checkUnnamed95(o.f!);
+    checkUnnamed96(o.f!);
   }
   buildCounterTableRow--;
 }
 
-core.List<api.TableFieldSchema> buildUnnamed96() => [
+core.List<api.TableFieldSchema> buildUnnamed97() => [
       buildTableFieldSchema(),
       buildTableFieldSchema(),
     ];
 
-void checkUnnamed96(core.List<api.TableFieldSchema> o) {
+void checkUnnamed97(core.List<api.TableFieldSchema> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTableFieldSchema(o[0]);
   checkTableFieldSchema(o[1]);
@@ -6097,7 +6121,7 @@
   final o = api.TableSchema();
   buildCounterTableSchema++;
   if (buildCounterTableSchema < 3) {
-    o.fields = buildUnnamed96();
+    o.fields = buildUnnamed97();
   }
   buildCounterTableSchema--;
   return o;
@@ -6106,47 +6130,11 @@
 void checkTableSchema(api.TableSchema o) {
   buildCounterTableSchema++;
   if (buildCounterTableSchema < 3) {
-    checkUnnamed96(o.fields!);
+    checkUnnamed97(o.fields!);
   }
   buildCounterTableSchema--;
 }
 
-core.List<core.String> buildUnnamed97() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed97(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterTestIamPermissionsRequest = 0;
-api.TestIamPermissionsRequest buildTestIamPermissionsRequest() {
-  final o = api.TestIamPermissionsRequest();
-  buildCounterTestIamPermissionsRequest++;
-  if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed97();
-  }
-  buildCounterTestIamPermissionsRequest--;
-  return o;
-}
-
-void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
-  buildCounterTestIamPermissionsRequest++;
-  if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed97(o.permissions!);
-  }
-  buildCounterTestIamPermissionsRequest--;
-}
-
 core.List<core.String> buildUnnamed98() => [
       'foo',
       'foo',
@@ -6164,12 +6152,48 @@
   );
 }
 
+core.int buildCounterTestIamPermissionsRequest = 0;
+api.TestIamPermissionsRequest buildTestIamPermissionsRequest() {
+  final o = api.TestIamPermissionsRequest();
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    o.permissions = buildUnnamed98();
+  }
+  buildCounterTestIamPermissionsRequest--;
+  return o;
+}
+
+void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    checkUnnamed98(o.permissions!);
+  }
+  buildCounterTestIamPermissionsRequest--;
+}
+
+core.List<core.String> buildUnnamed99() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed99(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterTestIamPermissionsResponse = 0;
 api.TestIamPermissionsResponse buildTestIamPermissionsResponse() {
   final o = api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed98();
+    o.permissions = buildUnnamed99();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -6178,7 +6202,7 @@
 void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed98(o.permissions!);
+    checkUnnamed99(o.permissions!);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -6217,23 +6241,6 @@
   buildCounterTimePartitioning--;
 }
 
-core.List<core.String> buildUnnamed99() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed99(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed100() => [
       'foo',
       'foo',
@@ -6251,12 +6258,29 @@
   );
 }
 
-core.Map<core.String, core.double> buildUnnamed101() => {
+core.List<core.String> buildUnnamed101() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed101(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.double> buildUnnamed102() => {
       'x': 42.0,
       'y': 42.0,
     };
 
-void checkUnnamed101(core.Map<core.String, core.double> o) {
+void checkUnnamed102(core.Map<core.String, core.double> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -6268,12 +6292,12 @@
   );
 }
 
-core.List<core.String> buildUnnamed102() => [
+core.List<core.String> buildUnnamed103() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed102(core.List<core.String> o) {
+void checkUnnamed103(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -6309,18 +6333,18 @@
     o.dropout = 42.0;
     o.earlyStop = true;
     o.feedbackType = 'foo';
-    o.hiddenUnits = buildUnnamed99();
+    o.hiddenUnits = buildUnnamed100();
     o.holidayRegion = 'foo';
     o.horizon = 'foo';
     o.includeDrift = true;
     o.initialLearnRate = 42.0;
-    o.inputLabelColumns = buildUnnamed100();
+    o.inputLabelColumns = buildUnnamed101();
     o.itemColumn = 'foo';
     o.kmeansInitializationColumn = 'foo';
     o.kmeansInitializationMethod = 'foo';
     o.l1Regularization = 42.0;
     o.l2Regularization = 42.0;
-    o.labelClassWeights = buildUnnamed101();
+    o.labelClassWeights = buildUnnamed102();
     o.learnRate = 42.0;
     o.learnRateStrategy = 'foo';
     o.lossType = 'foo';
@@ -6339,7 +6363,7 @@
     o.subsample = 42.0;
     o.timeSeriesDataColumn = 'foo';
     o.timeSeriesIdColumn = 'foo';
-    o.timeSeriesIdColumns = buildUnnamed102();
+    o.timeSeriesIdColumns = buildUnnamed103();
     o.timeSeriesTimestampColumn = 'foo';
     o.treeMethod = 'foo';
     o.userColumn = 'foo';
@@ -6414,7 +6438,7 @@
       o.feedbackType!,
       unittest.equals('foo'),
     );
-    checkUnnamed99(o.hiddenUnits!);
+    checkUnnamed100(o.hiddenUnits!);
     unittest.expect(
       o.holidayRegion!,
       unittest.equals('foo'),
@@ -6428,7 +6452,7 @@
       o.initialLearnRate!,
       unittest.equals(42.0),
     );
-    checkUnnamed100(o.inputLabelColumns!);
+    checkUnnamed101(o.inputLabelColumns!);
     unittest.expect(
       o.itemColumn!,
       unittest.equals('foo'),
@@ -6449,7 +6473,7 @@
       o.l2Regularization!,
       unittest.equals(42.0),
     );
-    checkUnnamed101(o.labelClassWeights!);
+    checkUnnamed102(o.labelClassWeights!);
     unittest.expect(
       o.learnRate!,
       unittest.equals(42.0),
@@ -6516,7 +6540,7 @@
       o.timeSeriesIdColumn!,
       unittest.equals('foo'),
     );
-    checkUnnamed102(o.timeSeriesIdColumns!);
+    checkUnnamed103(o.timeSeriesIdColumns!);
     unittest.expect(
       o.timeSeriesTimestampColumn!,
       unittest.equals('foo'),
@@ -6538,12 +6562,12 @@
   buildCounterTrainingOptions--;
 }
 
-core.List<api.IterationResult> buildUnnamed103() => [
+core.List<api.IterationResult> buildUnnamed104() => [
       buildIterationResult(),
       buildIterationResult(),
     ];
 
-void checkUnnamed103(core.List<api.IterationResult> o) {
+void checkUnnamed104(core.List<api.IterationResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkIterationResult(o[0]);
   checkIterationResult(o[1]);
@@ -6556,7 +6580,7 @@
   if (buildCounterTrainingRun < 3) {
     o.dataSplitResult = buildDataSplitResult();
     o.evaluationMetrics = buildEvaluationMetrics();
-    o.results = buildUnnamed103();
+    o.results = buildUnnamed104();
     o.startTime = 'foo';
     o.trainingOptions = buildTrainingOptions();
   }
@@ -6569,7 +6593,7 @@
   if (buildCounterTrainingRun < 3) {
     checkDataSplitResult(o.dataSplitResult!);
     checkEvaluationMetrics(o.evaluationMetrics!);
-    checkUnnamed103(o.results!);
+    checkUnnamed104(o.results!);
     unittest.expect(
       o.startTime!,
       unittest.equals('foo'),
@@ -6628,12 +6652,12 @@
   buildCounterUserDefinedFunctionResource--;
 }
 
-core.List<api.UserDefinedFunctionResource> buildUnnamed104() => [
+core.List<api.UserDefinedFunctionResource> buildUnnamed105() => [
       buildUserDefinedFunctionResource(),
       buildUserDefinedFunctionResource(),
     ];
 
-void checkUnnamed104(core.List<api.UserDefinedFunctionResource> o) {
+void checkUnnamed105(core.List<api.UserDefinedFunctionResource> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUserDefinedFunctionResource(o[0]);
   checkUserDefinedFunctionResource(o[1]);
@@ -6647,7 +6671,7 @@
     o.query = 'foo';
     o.useExplicitColumnNames = true;
     o.useLegacySql = true;
-    o.userDefinedFunctionResources = buildUnnamed104();
+    o.userDefinedFunctionResources = buildUnnamed105();
   }
   buildCounterViewDefinition--;
   return o;
@@ -6662,17 +6686,17 @@
     );
     unittest.expect(o.useExplicitColumnNames!, unittest.isTrue);
     unittest.expect(o.useLegacySql!, unittest.isTrue);
-    checkUnnamed104(o.userDefinedFunctionResources!);
+    checkUnnamed105(o.userDefinedFunctionResources!);
   }
   buildCounterViewDefinition--;
 }
 
-core.List<core.String> buildUnnamed105() => [
+core.List<core.String> buildUnnamed106() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed105(core.List<core.String> o) {
+void checkUnnamed106(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -6995,6 +7019,16 @@
     });
   });
 
+  unittest.group('obj-schema-DatasetTags', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildDatasetTags();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.DatasetTags.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkDatasetTags(od);
+    });
+  });
+
   unittest.group('obj-schema-Dataset', () {
     unittest.test('to-json--from-json', () async {
       final o = buildDataset();
@@ -7005,16 +7039,6 @@
     });
   });
 
-  unittest.group('obj-schema-DatasetAccessEntryTargetTypes', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildDatasetAccessEntryTargetTypes();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.DatasetAccessEntryTargetTypes.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkDatasetAccessEntryTargetTypes(od);
-    });
-  });
-
   unittest.group('obj-schema-DatasetAccessEntry', () {
     unittest.test('to-json--from-json', () async {
       final o = buildDatasetAccessEntry();
@@ -9010,7 +9034,7 @@
       final arg_pageToken = 'foo';
       final arg_parentJobId = 'foo';
       final arg_projection = 'foo';
-      final arg_stateFilter = buildUnnamed105();
+      final arg_stateFilter = buildUnnamed106();
       final arg_$fields = 'foo';
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         final path = (req.url).path;
diff --git a/generated/googleapis/test/certificatemanager/v1_test.dart b/generated/googleapis/test/certificatemanager/v1_test.dart
new file mode 100644
index 0000000..bed77a1
--- /dev/null
+++ b/generated/googleapis/test/certificatemanager/v1_test.dart
@@ -0,0 +1,3102 @@
+// ignore_for_file: camel_case_types
+// ignore_for_file: cascade_invocations
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_const_declarations
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_final_locals
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_cast
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: unnecessary_string_interpolations
+// ignore_for_file: unused_local_variable
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:googleapis/certificatemanager/v1.dart' as api;
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import '../test_shared.dart';
+
+core.int buildCounterAuthorizationAttemptInfo = 0;
+api.AuthorizationAttemptInfo buildAuthorizationAttemptInfo() {
+  final o = api.AuthorizationAttemptInfo();
+  buildCounterAuthorizationAttemptInfo++;
+  if (buildCounterAuthorizationAttemptInfo < 3) {
+    o.details = 'foo';
+    o.domain = 'foo';
+    o.failureReason = 'foo';
+    o.state = 'foo';
+  }
+  buildCounterAuthorizationAttemptInfo--;
+  return o;
+}
+
+void checkAuthorizationAttemptInfo(api.AuthorizationAttemptInfo o) {
+  buildCounterAuthorizationAttemptInfo++;
+  if (buildCounterAuthorizationAttemptInfo < 3) {
+    unittest.expect(
+      o.details!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.domain!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.failureReason!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAuthorizationAttemptInfo--;
+}
+
+core.int buildCounterCancelOperationRequest = 0;
+api.CancelOperationRequest buildCancelOperationRequest() {
+  final o = api.CancelOperationRequest();
+  buildCounterCancelOperationRequest++;
+  if (buildCounterCancelOperationRequest < 3) {}
+  buildCounterCancelOperationRequest--;
+  return o;
+}
+
+void checkCancelOperationRequest(api.CancelOperationRequest o) {
+  buildCounterCancelOperationRequest++;
+  if (buildCounterCancelOperationRequest < 3) {}
+  buildCounterCancelOperationRequest--;
+}
+
+core.Map<core.String, core.String> buildUnnamed0() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed0(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed1() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed1(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterCertificate = 0;
+api.Certificate buildCertificate() {
+  final o = api.Certificate();
+  buildCounterCertificate++;
+  if (buildCounterCertificate < 3) {
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.expireTime = 'foo';
+    o.labels = buildUnnamed0();
+    o.managed = buildManagedCertificate();
+    o.name = 'foo';
+    o.pemCertificate = 'foo';
+    o.sanDnsnames = buildUnnamed1();
+    o.scope = 'foo';
+    o.selfManaged = buildSelfManagedCertificate();
+    o.updateTime = 'foo';
+  }
+  buildCounterCertificate--;
+  return o;
+}
+
+void checkCertificate(api.Certificate o) {
+  buildCounterCertificate++;
+  if (buildCounterCertificate < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.expireTime!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed0(o.labels!);
+    checkManagedCertificate(o.managed!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.pemCertificate!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed1(o.sanDnsnames!);
+    unittest.expect(
+      o.scope!,
+      unittest.equals('foo'),
+    );
+    checkSelfManagedCertificate(o.selfManaged!);
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterCertificate--;
+}
+
+core.List<api.GclbTarget> buildUnnamed2() => [
+      buildGclbTarget(),
+      buildGclbTarget(),
+    ];
+
+void checkUnnamed2(core.List<api.GclbTarget> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGclbTarget(o[0]);
+  checkGclbTarget(o[1]);
+}
+
+core.Map<core.String, core.String> buildUnnamed3() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed3(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterCertificateMap = 0;
+api.CertificateMap buildCertificateMap() {
+  final o = api.CertificateMap();
+  buildCounterCertificateMap++;
+  if (buildCounterCertificateMap < 3) {
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.gclbTargets = buildUnnamed2();
+    o.labels = buildUnnamed3();
+    o.name = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterCertificateMap--;
+  return o;
+}
+
+void checkCertificateMap(api.CertificateMap o) {
+  buildCounterCertificateMap++;
+  if (buildCounterCertificateMap < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed2(o.gclbTargets!);
+    checkUnnamed3(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterCertificateMap--;
+}
+
+core.List<core.String> buildUnnamed4() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed4(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.String> buildUnnamed5() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed5(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterCertificateMapEntry = 0;
+api.CertificateMapEntry buildCertificateMapEntry() {
+  final o = api.CertificateMapEntry();
+  buildCounterCertificateMapEntry++;
+  if (buildCounterCertificateMapEntry < 3) {
+    o.certificates = buildUnnamed4();
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.hostname = 'foo';
+    o.labels = buildUnnamed5();
+    o.matcher = 'foo';
+    o.name = 'foo';
+    o.state = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterCertificateMapEntry--;
+  return o;
+}
+
+void checkCertificateMapEntry(api.CertificateMapEntry o) {
+  buildCounterCertificateMapEntry++;
+  if (buildCounterCertificateMapEntry < 3) {
+    checkUnnamed4(o.certificates!);
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.hostname!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed5(o.labels!);
+    unittest.expect(
+      o.matcher!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterCertificateMapEntry--;
+}
+
+core.Map<core.String, core.String> buildUnnamed6() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed6(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterDnsAuthorization = 0;
+api.DnsAuthorization buildDnsAuthorization() {
+  final o = api.DnsAuthorization();
+  buildCounterDnsAuthorization++;
+  if (buildCounterDnsAuthorization < 3) {
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.dnsResourceRecord = buildDnsResourceRecord();
+    o.domain = 'foo';
+    o.labels = buildUnnamed6();
+    o.name = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterDnsAuthorization--;
+  return o;
+}
+
+void checkDnsAuthorization(api.DnsAuthorization o) {
+  buildCounterDnsAuthorization++;
+  if (buildCounterDnsAuthorization < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    checkDnsResourceRecord(o.dnsResourceRecord!);
+    unittest.expect(
+      o.domain!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed6(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterDnsAuthorization--;
+}
+
+core.int buildCounterDnsResourceRecord = 0;
+api.DnsResourceRecord buildDnsResourceRecord() {
+  final o = api.DnsResourceRecord();
+  buildCounterDnsResourceRecord++;
+  if (buildCounterDnsResourceRecord < 3) {
+    o.data = 'foo';
+    o.name = 'foo';
+    o.type = 'foo';
+  }
+  buildCounterDnsResourceRecord--;
+  return o;
+}
+
+void checkDnsResourceRecord(api.DnsResourceRecord o) {
+  buildCounterDnsResourceRecord++;
+  if (buildCounterDnsResourceRecord < 3) {
+    unittest.expect(
+      o.data!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterDnsResourceRecord--;
+}
+
+core.int buildCounterEmpty = 0;
+api.Empty buildEmpty() {
+  final o = api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+void checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.List<api.IpConfig> buildUnnamed7() => [
+      buildIpConfig(),
+      buildIpConfig(),
+    ];
+
+void checkUnnamed7(core.List<api.IpConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkIpConfig(o[0]);
+  checkIpConfig(o[1]);
+}
+
+core.int buildCounterGclbTarget = 0;
+api.GclbTarget buildGclbTarget() {
+  final o = api.GclbTarget();
+  buildCounterGclbTarget++;
+  if (buildCounterGclbTarget < 3) {
+    o.ipConfigs = buildUnnamed7();
+    o.targetHttpsProxy = 'foo';
+    o.targetSslProxy = 'foo';
+  }
+  buildCounterGclbTarget--;
+  return o;
+}
+
+void checkGclbTarget(api.GclbTarget o) {
+  buildCounterGclbTarget++;
+  if (buildCounterGclbTarget < 3) {
+    checkUnnamed7(o.ipConfigs!);
+    unittest.expect(
+      o.targetHttpsProxy!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.targetSslProxy!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGclbTarget--;
+}
+
+core.List<core.int> buildUnnamed8() => [
+      42,
+      42,
+    ];
+
+void checkUnnamed8(core.List<core.int> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals(42),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals(42),
+  );
+}
+
+core.int buildCounterIpConfig = 0;
+api.IpConfig buildIpConfig() {
+  final o = api.IpConfig();
+  buildCounterIpConfig++;
+  if (buildCounterIpConfig < 3) {
+    o.ipAddress = 'foo';
+    o.ports = buildUnnamed8();
+  }
+  buildCounterIpConfig--;
+  return o;
+}
+
+void checkIpConfig(api.IpConfig o) {
+  buildCounterIpConfig++;
+  if (buildCounterIpConfig < 3) {
+    unittest.expect(
+      o.ipAddress!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed8(o.ports!);
+  }
+  buildCounterIpConfig--;
+}
+
+core.List<api.CertificateMapEntry> buildUnnamed9() => [
+      buildCertificateMapEntry(),
+      buildCertificateMapEntry(),
+    ];
+
+void checkUnnamed9(core.List<api.CertificateMapEntry> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCertificateMapEntry(o[0]);
+  checkCertificateMapEntry(o[1]);
+}
+
+core.List<core.String> buildUnnamed10() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed10(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListCertificateMapEntriesResponse = 0;
+api.ListCertificateMapEntriesResponse buildListCertificateMapEntriesResponse() {
+  final o = api.ListCertificateMapEntriesResponse();
+  buildCounterListCertificateMapEntriesResponse++;
+  if (buildCounterListCertificateMapEntriesResponse < 3) {
+    o.certificateMapEntries = buildUnnamed9();
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed10();
+  }
+  buildCounterListCertificateMapEntriesResponse--;
+  return o;
+}
+
+void checkListCertificateMapEntriesResponse(
+    api.ListCertificateMapEntriesResponse o) {
+  buildCounterListCertificateMapEntriesResponse++;
+  if (buildCounterListCertificateMapEntriesResponse < 3) {
+    checkUnnamed9(o.certificateMapEntries!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed10(o.unreachable!);
+  }
+  buildCounterListCertificateMapEntriesResponse--;
+}
+
+core.List<api.CertificateMap> buildUnnamed11() => [
+      buildCertificateMap(),
+      buildCertificateMap(),
+    ];
+
+void checkUnnamed11(core.List<api.CertificateMap> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCertificateMap(o[0]);
+  checkCertificateMap(o[1]);
+}
+
+core.List<core.String> buildUnnamed12() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed12(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListCertificateMapsResponse = 0;
+api.ListCertificateMapsResponse buildListCertificateMapsResponse() {
+  final o = api.ListCertificateMapsResponse();
+  buildCounterListCertificateMapsResponse++;
+  if (buildCounterListCertificateMapsResponse < 3) {
+    o.certificateMaps = buildUnnamed11();
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed12();
+  }
+  buildCounterListCertificateMapsResponse--;
+  return o;
+}
+
+void checkListCertificateMapsResponse(api.ListCertificateMapsResponse o) {
+  buildCounterListCertificateMapsResponse++;
+  if (buildCounterListCertificateMapsResponse < 3) {
+    checkUnnamed11(o.certificateMaps!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed12(o.unreachable!);
+  }
+  buildCounterListCertificateMapsResponse--;
+}
+
+core.List<api.Certificate> buildUnnamed13() => [
+      buildCertificate(),
+      buildCertificate(),
+    ];
+
+void checkUnnamed13(core.List<api.Certificate> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCertificate(o[0]);
+  checkCertificate(o[1]);
+}
+
+core.List<core.String> buildUnnamed14() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed14(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListCertificatesResponse = 0;
+api.ListCertificatesResponse buildListCertificatesResponse() {
+  final o = api.ListCertificatesResponse();
+  buildCounterListCertificatesResponse++;
+  if (buildCounterListCertificatesResponse < 3) {
+    o.certificates = buildUnnamed13();
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed14();
+  }
+  buildCounterListCertificatesResponse--;
+  return o;
+}
+
+void checkListCertificatesResponse(api.ListCertificatesResponse o) {
+  buildCounterListCertificatesResponse++;
+  if (buildCounterListCertificatesResponse < 3) {
+    checkUnnamed13(o.certificates!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed14(o.unreachable!);
+  }
+  buildCounterListCertificatesResponse--;
+}
+
+core.List<api.DnsAuthorization> buildUnnamed15() => [
+      buildDnsAuthorization(),
+      buildDnsAuthorization(),
+    ];
+
+void checkUnnamed15(core.List<api.DnsAuthorization> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDnsAuthorization(o[0]);
+  checkDnsAuthorization(o[1]);
+}
+
+core.List<core.String> buildUnnamed16() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed16(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListDnsAuthorizationsResponse = 0;
+api.ListDnsAuthorizationsResponse buildListDnsAuthorizationsResponse() {
+  final o = api.ListDnsAuthorizationsResponse();
+  buildCounterListDnsAuthorizationsResponse++;
+  if (buildCounterListDnsAuthorizationsResponse < 3) {
+    o.dnsAuthorizations = buildUnnamed15();
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed16();
+  }
+  buildCounterListDnsAuthorizationsResponse--;
+  return o;
+}
+
+void checkListDnsAuthorizationsResponse(api.ListDnsAuthorizationsResponse o) {
+  buildCounterListDnsAuthorizationsResponse++;
+  if (buildCounterListDnsAuthorizationsResponse < 3) {
+    checkUnnamed15(o.dnsAuthorizations!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed16(o.unreachable!);
+  }
+  buildCounterListDnsAuthorizationsResponse--;
+}
+
+core.List<api.Location> buildUnnamed17() => [
+      buildLocation(),
+      buildLocation(),
+    ];
+
+void checkUnnamed17(core.List<api.Location> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocation(o[0]);
+  checkLocation(o[1]);
+}
+
+core.int buildCounterListLocationsResponse = 0;
+api.ListLocationsResponse buildListLocationsResponse() {
+  final o = api.ListLocationsResponse();
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    o.locations = buildUnnamed17();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterListLocationsResponse--;
+  return o;
+}
+
+void checkListLocationsResponse(api.ListLocationsResponse o) {
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    checkUnnamed17(o.locations!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterListLocationsResponse--;
+}
+
+core.List<api.Operation> buildUnnamed18() => [
+      buildOperation(),
+      buildOperation(),
+    ];
+
+void checkUnnamed18(core.List<api.Operation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOperation(o[0]);
+  checkOperation(o[1]);
+}
+
+core.int buildCounterListOperationsResponse = 0;
+api.ListOperationsResponse buildListOperationsResponse() {
+  final o = api.ListOperationsResponse();
+  buildCounterListOperationsResponse++;
+  if (buildCounterListOperationsResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.operations = buildUnnamed18();
+  }
+  buildCounterListOperationsResponse--;
+  return o;
+}
+
+void checkListOperationsResponse(api.ListOperationsResponse o) {
+  buildCounterListOperationsResponse++;
+  if (buildCounterListOperationsResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed18(o.operations!);
+  }
+  buildCounterListOperationsResponse--;
+}
+
+core.Map<core.String, core.String> buildUnnamed19() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed19(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed20() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed20(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o['x']!) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(
+    casted1['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted1['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted1['string'],
+    unittest.equals('foo'),
+  );
+  var casted2 = (o['y']!) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(
+    casted2['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted2['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted2['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterLocation = 0;
+api.Location buildLocation() {
+  final o = api.Location();
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    o.displayName = 'foo';
+    o.labels = buildUnnamed19();
+    o.locationId = 'foo';
+    o.metadata = buildUnnamed20();
+    o.name = 'foo';
+  }
+  buildCounterLocation--;
+  return o;
+}
+
+void checkLocation(api.Location o) {
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed19(o.labels!);
+    unittest.expect(
+      o.locationId!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed20(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterLocation--;
+}
+
+core.List<api.AuthorizationAttemptInfo> buildUnnamed21() => [
+      buildAuthorizationAttemptInfo(),
+      buildAuthorizationAttemptInfo(),
+    ];
+
+void checkUnnamed21(core.List<api.AuthorizationAttemptInfo> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAuthorizationAttemptInfo(o[0]);
+  checkAuthorizationAttemptInfo(o[1]);
+}
+
+core.List<core.String> buildUnnamed22() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed22(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed23() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed23(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterManagedCertificate = 0;
+api.ManagedCertificate buildManagedCertificate() {
+  final o = api.ManagedCertificate();
+  buildCounterManagedCertificate++;
+  if (buildCounterManagedCertificate < 3) {
+    o.authorizationAttemptInfo = buildUnnamed21();
+    o.dnsAuthorizations = buildUnnamed22();
+    o.domains = buildUnnamed23();
+    o.provisioningIssue = buildProvisioningIssue();
+    o.state = 'foo';
+  }
+  buildCounterManagedCertificate--;
+  return o;
+}
+
+void checkManagedCertificate(api.ManagedCertificate o) {
+  buildCounterManagedCertificate++;
+  if (buildCounterManagedCertificate < 3) {
+    checkUnnamed21(o.authorizationAttemptInfo!);
+    checkUnnamed22(o.dnsAuthorizations!);
+    checkUnnamed23(o.domains!);
+    checkProvisioningIssue(o.provisioningIssue!);
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterManagedCertificate--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed24() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed24(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o['x']!) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(
+    casted3['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted3['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted3['string'],
+    unittest.equals('foo'),
+  );
+  var casted4 = (o['y']!) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(
+    casted4['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted4['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted4['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed25() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed25(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o['x']!) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(
+    casted5['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted5['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted5['string'],
+    unittest.equals('foo'),
+  );
+  var casted6 = (o['y']!) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(
+    casted6['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted6['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted6['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterOperation = 0;
+api.Operation buildOperation() {
+  final o = api.Operation();
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    o.done = true;
+    o.error = buildStatus();
+    o.metadata = buildUnnamed24();
+    o.name = 'foo';
+    o.response = buildUnnamed25();
+  }
+  buildCounterOperation--;
+  return o;
+}
+
+void checkOperation(api.Operation o) {
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    unittest.expect(o.done!, unittest.isTrue);
+    checkStatus(o.error!);
+    checkUnnamed24(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed25(o.response!);
+  }
+  buildCounterOperation--;
+}
+
+core.int buildCounterProvisioningIssue = 0;
+api.ProvisioningIssue buildProvisioningIssue() {
+  final o = api.ProvisioningIssue();
+  buildCounterProvisioningIssue++;
+  if (buildCounterProvisioningIssue < 3) {
+    o.details = 'foo';
+    o.reason = 'foo';
+  }
+  buildCounterProvisioningIssue--;
+  return o;
+}
+
+void checkProvisioningIssue(api.ProvisioningIssue o) {
+  buildCounterProvisioningIssue++;
+  if (buildCounterProvisioningIssue < 3) {
+    unittest.expect(
+      o.details!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.reason!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterProvisioningIssue--;
+}
+
+core.int buildCounterSelfManagedCertificate = 0;
+api.SelfManagedCertificate buildSelfManagedCertificate() {
+  final o = api.SelfManagedCertificate();
+  buildCounterSelfManagedCertificate++;
+  if (buildCounterSelfManagedCertificate < 3) {
+    o.pemCertificate = 'foo';
+    o.pemPrivateKey = 'foo';
+  }
+  buildCounterSelfManagedCertificate--;
+  return o;
+}
+
+void checkSelfManagedCertificate(api.SelfManagedCertificate o) {
+  buildCounterSelfManagedCertificate++;
+  if (buildCounterSelfManagedCertificate < 3) {
+    unittest.expect(
+      o.pemCertificate!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.pemPrivateKey!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterSelfManagedCertificate--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed26() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed26(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted7 = (o['x']!) as core.Map;
+  unittest.expect(casted7, unittest.hasLength(3));
+  unittest.expect(
+    casted7['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted7['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted7['string'],
+    unittest.equals('foo'),
+  );
+  var casted8 = (o['y']!) as core.Map;
+  unittest.expect(casted8, unittest.hasLength(3));
+  unittest.expect(
+    casted8['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted8['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted8['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.Map<core.String, core.Object?>> buildUnnamed27() => [
+      buildUnnamed26(),
+      buildUnnamed26(),
+    ];
+
+void checkUnnamed27(core.List<core.Map<core.String, core.Object?>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed26(o[0]);
+  checkUnnamed26(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+api.Status buildStatus() {
+  final o = api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed27();
+    o.message = 'foo';
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+void checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(
+      o.code!,
+      unittest.equals(42),
+    );
+    checkUnnamed27(o.details!);
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterStatus--;
+}
+
+void main() {
+  unittest.group('obj-schema-AuthorizationAttemptInfo', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAuthorizationAttemptInfo();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AuthorizationAttemptInfo.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAuthorizationAttemptInfo(od);
+    });
+  });
+
+  unittest.group('obj-schema-CancelOperationRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildCancelOperationRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.CancelOperationRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkCancelOperationRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-Certificate', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildCertificate();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.Certificate.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkCertificate(od);
+    });
+  });
+
+  unittest.group('obj-schema-CertificateMap', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildCertificateMap();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.CertificateMap.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkCertificateMap(od);
+    });
+  });
+
+  unittest.group('obj-schema-CertificateMapEntry', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildCertificateMapEntry();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.CertificateMapEntry.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkCertificateMapEntry(od);
+    });
+  });
+
+  unittest.group('obj-schema-DnsAuthorization', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildDnsAuthorization();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.DnsAuthorization.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkDnsAuthorization(od);
+    });
+  });
+
+  unittest.group('obj-schema-DnsResourceRecord', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildDnsResourceRecord();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.DnsResourceRecord.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkDnsResourceRecord(od);
+    });
+  });
+
+  unittest.group('obj-schema-Empty', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildEmpty();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Empty.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group('obj-schema-GclbTarget', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGclbTarget();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GclbTarget.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkGclbTarget(od);
+    });
+  });
+
+  unittest.group('obj-schema-IpConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildIpConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.IpConfig.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkIpConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListCertificateMapEntriesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListCertificateMapEntriesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListCertificateMapEntriesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListCertificateMapEntriesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListCertificateMapsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListCertificateMapsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListCertificateMapsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListCertificateMapsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListCertificatesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListCertificatesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListCertificatesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListCertificatesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListDnsAuthorizationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListDnsAuthorizationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListDnsAuthorizationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListDnsAuthorizationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListLocationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListLocationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListLocationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListLocationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListOperationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListOperationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListOperationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListOperationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-Location', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildLocation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Location.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkLocation(od);
+    });
+  });
+
+  unittest.group('obj-schema-ManagedCertificate', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildManagedCertificate();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ManagedCertificate.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkManagedCertificate(od);
+    });
+  });
+
+  unittest.group('obj-schema-Operation', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildOperation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Operation.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkOperation(od);
+    });
+  });
+
+  unittest.group('obj-schema-ProvisioningIssue', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildProvisioningIssue();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ProvisioningIssue.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkProvisioningIssue(od);
+    });
+  });
+
+  unittest.group('obj-schema-SelfManagedCertificate', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSelfManagedCertificate();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.SelfManagedCertificate.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkSelfManagedCertificate(od);
+    });
+  });
+
+  unittest.group('obj-schema-Status', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Status.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkStatus(od);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock).projects.locations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildLocation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkLocation(response as api.Location);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock).projects.locations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListLocationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListLocationsResponse(response as api.ListLocationsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsCertificateMapsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificateMaps;
+      final arg_request = buildCertificateMap();
+      final arg_parent = 'foo';
+      final arg_certificateMapId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.CertificateMap.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkCertificateMap(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['certificateMapId']!.first,
+          unittest.equals(arg_certificateMapId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          certificateMapId: arg_certificateMapId, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificateMaps;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificateMaps;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildCertificateMap());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkCertificateMap(response as api.CertificateMap);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificateMaps;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListCertificateMapsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListCertificateMapsResponse(
+          response as api.ListCertificateMapsResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificateMaps;
+      final arg_request = buildCertificateMap();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.CertificateMap.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkCertificateMap(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group(
+      'resource-ProjectsLocationsCertificateMapsCertificateMapEntriesResource',
+      () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock)
+          .projects
+          .locations
+          .certificateMaps
+          .certificateMapEntries;
+      final arg_request = buildCertificateMapEntry();
+      final arg_parent = 'foo';
+      final arg_certificateMapEntryId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.CertificateMapEntry.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkCertificateMapEntry(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['certificateMapEntryId']!.first,
+          unittest.equals(arg_certificateMapEntryId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          certificateMapEntryId: arg_certificateMapEntryId,
+          $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock)
+          .projects
+          .locations
+          .certificateMaps
+          .certificateMapEntries;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock)
+          .projects
+          .locations
+          .certificateMaps
+          .certificateMapEntries;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildCertificateMapEntry());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkCertificateMapEntry(response as api.CertificateMapEntry);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock)
+          .projects
+          .locations
+          .certificateMaps
+          .certificateMapEntries;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildListCertificateMapEntriesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListCertificateMapEntriesResponse(
+          response as api.ListCertificateMapEntriesResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock)
+          .projects
+          .locations
+          .certificateMaps
+          .certificateMapEntries;
+      final arg_request = buildCertificateMapEntry();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.CertificateMapEntry.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkCertificateMapEntry(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsCertificatesResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificates;
+      final arg_request = buildCertificate();
+      final arg_parent = 'foo';
+      final arg_certificateId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.Certificate.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkCertificate(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['certificateId']!.first,
+          unittest.equals(arg_certificateId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          certificateId: arg_certificateId, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificates;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificates;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildCertificate());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkCertificate(response as api.Certificate);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificates;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListCertificatesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListCertificatesResponse(response as api.ListCertificatesResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.certificates;
+      final arg_request = buildCertificate();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.Certificate.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkCertificate(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsDnsAuthorizationsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.dnsAuthorizations;
+      final arg_request = buildDnsAuthorization();
+      final arg_parent = 'foo';
+      final arg_dnsAuthorizationId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.DnsAuthorization.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkDnsAuthorization(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['dnsAuthorizationId']!.first,
+          unittest.equals(arg_dnsAuthorizationId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          dnsAuthorizationId: arg_dnsAuthorizationId, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.dnsAuthorizations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.dnsAuthorizations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildDnsAuthorization());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkDnsAuthorization(response as api.DnsAuthorization);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.dnsAuthorizations;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListDnsAuthorizationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListDnsAuthorizationsResponse(
+          response as api.ListDnsAuthorizationsResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CertificateManagerApi(mock).projects.locations.dnsAuthorizations;
+      final arg_request = buildDnsAuthorization();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.DnsAuthorization.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkDnsAuthorization(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsOperationsResource', () {
+    unittest.test('method--cancel', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock).projects.locations.operations;
+      final arg_request = buildCancelOperationRequest();
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.CancelOperationRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkCancelOperationRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.cancel(arg_request, arg_name, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CertificateManagerApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListOperationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListOperationsResponse(response as api.ListOperationsResponse);
+    });
+  });
+}
diff --git a/generated/googleapis/test/chromepolicy/v1_test.dart b/generated/googleapis/test/chromepolicy/v1_test.dart
index 1780f36..c1bbdbf 100644
--- a/generated/googleapis/test/chromepolicy/v1_test.dart
+++ b/generated/googleapis/test/chromepolicy/v1_test.dart
@@ -740,6 +740,7 @@
   final o = api.GoogleChromePolicyV1ResolvedPolicy();
   buildCounterGoogleChromePolicyV1ResolvedPolicy++;
   if (buildCounterGoogleChromePolicyV1ResolvedPolicy < 3) {
+    o.addedSourceKey = buildGoogleChromePolicyV1PolicyTargetKey();
     o.sourceKey = buildGoogleChromePolicyV1PolicyTargetKey();
     o.targetKey = buildGoogleChromePolicyV1PolicyTargetKey();
     o.value = buildGoogleChromePolicyV1PolicyValue();
@@ -752,6 +753,7 @@
     api.GoogleChromePolicyV1ResolvedPolicy o) {
   buildCounterGoogleChromePolicyV1ResolvedPolicy++;
   if (buildCounterGoogleChromePolicyV1ResolvedPolicy < 3) {
+    checkGoogleChromePolicyV1PolicyTargetKey(o.addedSourceKey!);
     checkGoogleChromePolicyV1PolicyTargetKey(o.sourceKey!);
     checkGoogleChromePolicyV1PolicyTargetKey(o.targetKey!);
     checkGoogleChromePolicyV1PolicyValue(o.value!);
diff --git a/generated/googleapis/test/classroom/v1_test.dart b/generated/googleapis/test/classroom/v1_test.dart
index 9eef8c1..a79924d 100644
--- a/generated/googleapis/test/classroom/v1_test.dart
+++ b/generated/googleapis/test/classroom/v1_test.dart
@@ -229,6 +229,7 @@
     o.description = 'foo';
     o.descriptionHeading = 'foo';
     o.enrollmentCode = 'foo';
+    o.gradebookSettings = buildGradebookSettings();
     o.guardiansEnabled = true;
     o.id = 'foo';
     o.name = 'foo';
@@ -279,6 +280,7 @@
       o.enrollmentCode!,
       unittest.equals('foo'),
     );
+    checkGradebookSettings(o.gradebookSettings!);
     unittest.expect(o.guardiansEnabled!, unittest.isTrue);
     unittest.expect(
       o.id!,
@@ -443,6 +445,7 @@
     o.description = 'foo';
     o.dueDate = buildDate();
     o.dueTime = buildTimeOfDay();
+    o.gradeCategory = buildGradeCategory();
     o.id = 'foo';
     o.individualStudentsOptions = buildIndividualStudentsOptions();
     o.materials = buildUnnamed4();
@@ -491,6 +494,7 @@
     );
     checkDate(o.dueDate!);
     checkTimeOfDay(o.dueTime!);
+    checkGradeCategory(o.gradeCategory!);
     unittest.expect(
       o.id!,
       unittest.equals('foo'),
@@ -849,6 +853,43 @@
   buildCounterGlobalPermission--;
 }
 
+core.int buildCounterGradeCategory = 0;
+api.GradeCategory buildGradeCategory() {
+  final o = api.GradeCategory();
+  buildCounterGradeCategory++;
+  if (buildCounterGradeCategory < 3) {
+    o.defaultGradeDenominator = 42;
+    o.id = 'foo';
+    o.name = 'foo';
+    o.weight = 42;
+  }
+  buildCounterGradeCategory--;
+  return o;
+}
+
+void checkGradeCategory(api.GradeCategory o) {
+  buildCounterGradeCategory++;
+  if (buildCounterGradeCategory < 3) {
+    unittest.expect(
+      o.defaultGradeDenominator!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.weight!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterGradeCategory--;
+}
+
 core.int buildCounterGradeHistory = 0;
 api.GradeHistory buildGradeHistory() {
   final o = api.GradeHistory();
@@ -891,6 +932,46 @@
   buildCounterGradeHistory--;
 }
 
+core.List<api.GradeCategory> buildUnnamed6() => [
+      buildGradeCategory(),
+      buildGradeCategory(),
+    ];
+
+void checkUnnamed6(core.List<api.GradeCategory> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGradeCategory(o[0]);
+  checkGradeCategory(o[1]);
+}
+
+core.int buildCounterGradebookSettings = 0;
+api.GradebookSettings buildGradebookSettings() {
+  final o = api.GradebookSettings();
+  buildCounterGradebookSettings++;
+  if (buildCounterGradebookSettings < 3) {
+    o.calculationType = 'foo';
+    o.displaySetting = 'foo';
+    o.gradeCategories = buildUnnamed6();
+  }
+  buildCounterGradebookSettings--;
+  return o;
+}
+
+void checkGradebookSettings(api.GradebookSettings o) {
+  buildCounterGradebookSettings++;
+  if (buildCounterGradebookSettings < 3) {
+    unittest.expect(
+      o.calculationType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.displaySetting!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed6(o.gradeCategories!);
+  }
+  buildCounterGradebookSettings--;
+}
+
 core.int buildCounterGuardian = 0;
 api.Guardian buildGuardian() {
   final o = api.Guardian();
@@ -967,12 +1048,12 @@
   buildCounterGuardianInvitation--;
 }
 
-core.List<core.String> buildUnnamed6() => [
+core.List<core.String> buildUnnamed7() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed6(core.List<core.String> o) {
+void checkUnnamed7(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -989,7 +1070,7 @@
   final o = api.IndividualStudentsOptions();
   buildCounterIndividualStudentsOptions++;
   if (buildCounterIndividualStudentsOptions < 3) {
-    o.studentIds = buildUnnamed6();
+    o.studentIds = buildUnnamed7();
   }
   buildCounterIndividualStudentsOptions--;
   return o;
@@ -998,7 +1079,7 @@
 void checkIndividualStudentsOptions(api.IndividualStudentsOptions o) {
   buildCounterIndividualStudentsOptions++;
   if (buildCounterIndividualStudentsOptions < 3) {
-    checkUnnamed6(o.studentIds!);
+    checkUnnamed7(o.studentIds!);
   }
   buildCounterIndividualStudentsOptions--;
 }
@@ -1072,12 +1153,12 @@
   buildCounterLink--;
 }
 
-core.List<api.Announcement> buildUnnamed7() => [
+core.List<api.Announcement> buildUnnamed8() => [
       buildAnnouncement(),
       buildAnnouncement(),
     ];
 
-void checkUnnamed7(core.List<api.Announcement> o) {
+void checkUnnamed8(core.List<api.Announcement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAnnouncement(o[0]);
   checkAnnouncement(o[1]);
@@ -1088,7 +1169,7 @@
   final o = api.ListAnnouncementsResponse();
   buildCounterListAnnouncementsResponse++;
   if (buildCounterListAnnouncementsResponse < 3) {
-    o.announcements = buildUnnamed7();
+    o.announcements = buildUnnamed8();
     o.nextPageToken = 'foo';
   }
   buildCounterListAnnouncementsResponse--;
@@ -1098,7 +1179,7 @@
 void checkListAnnouncementsResponse(api.ListAnnouncementsResponse o) {
   buildCounterListAnnouncementsResponse++;
   if (buildCounterListAnnouncementsResponse < 3) {
-    checkUnnamed7(o.announcements!);
+    checkUnnamed8(o.announcements!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1107,12 +1188,12 @@
   buildCounterListAnnouncementsResponse--;
 }
 
-core.List<api.CourseAlias> buildUnnamed8() => [
+core.List<api.CourseAlias> buildUnnamed9() => [
       buildCourseAlias(),
       buildCourseAlias(),
     ];
 
-void checkUnnamed8(core.List<api.CourseAlias> o) {
+void checkUnnamed9(core.List<api.CourseAlias> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCourseAlias(o[0]);
   checkCourseAlias(o[1]);
@@ -1123,7 +1204,7 @@
   final o = api.ListCourseAliasesResponse();
   buildCounterListCourseAliasesResponse++;
   if (buildCounterListCourseAliasesResponse < 3) {
-    o.aliases = buildUnnamed8();
+    o.aliases = buildUnnamed9();
     o.nextPageToken = 'foo';
   }
   buildCounterListCourseAliasesResponse--;
@@ -1133,7 +1214,7 @@
 void checkListCourseAliasesResponse(api.ListCourseAliasesResponse o) {
   buildCounterListCourseAliasesResponse++;
   if (buildCounterListCourseAliasesResponse < 3) {
-    checkUnnamed8(o.aliases!);
+    checkUnnamed9(o.aliases!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1142,12 +1223,12 @@
   buildCounterListCourseAliasesResponse--;
 }
 
-core.List<api.CourseWorkMaterial> buildUnnamed9() => [
+core.List<api.CourseWorkMaterial> buildUnnamed10() => [
       buildCourseWorkMaterial(),
       buildCourseWorkMaterial(),
     ];
 
-void checkUnnamed9(core.List<api.CourseWorkMaterial> o) {
+void checkUnnamed10(core.List<api.CourseWorkMaterial> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCourseWorkMaterial(o[0]);
   checkCourseWorkMaterial(o[1]);
@@ -1158,7 +1239,7 @@
   final o = api.ListCourseWorkMaterialResponse();
   buildCounterListCourseWorkMaterialResponse++;
   if (buildCounterListCourseWorkMaterialResponse < 3) {
-    o.courseWorkMaterial = buildUnnamed9();
+    o.courseWorkMaterial = buildUnnamed10();
     o.nextPageToken = 'foo';
   }
   buildCounterListCourseWorkMaterialResponse--;
@@ -1168,7 +1249,7 @@
 void checkListCourseWorkMaterialResponse(api.ListCourseWorkMaterialResponse o) {
   buildCounterListCourseWorkMaterialResponse++;
   if (buildCounterListCourseWorkMaterialResponse < 3) {
-    checkUnnamed9(o.courseWorkMaterial!);
+    checkUnnamed10(o.courseWorkMaterial!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1177,12 +1258,12 @@
   buildCounterListCourseWorkMaterialResponse--;
 }
 
-core.List<api.CourseWork> buildUnnamed10() => [
+core.List<api.CourseWork> buildUnnamed11() => [
       buildCourseWork(),
       buildCourseWork(),
     ];
 
-void checkUnnamed10(core.List<api.CourseWork> o) {
+void checkUnnamed11(core.List<api.CourseWork> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCourseWork(o[0]);
   checkCourseWork(o[1]);
@@ -1193,7 +1274,7 @@
   final o = api.ListCourseWorkResponse();
   buildCounterListCourseWorkResponse++;
   if (buildCounterListCourseWorkResponse < 3) {
-    o.courseWork = buildUnnamed10();
+    o.courseWork = buildUnnamed11();
     o.nextPageToken = 'foo';
   }
   buildCounterListCourseWorkResponse--;
@@ -1203,7 +1284,7 @@
 void checkListCourseWorkResponse(api.ListCourseWorkResponse o) {
   buildCounterListCourseWorkResponse++;
   if (buildCounterListCourseWorkResponse < 3) {
-    checkUnnamed10(o.courseWork!);
+    checkUnnamed11(o.courseWork!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1212,12 +1293,12 @@
   buildCounterListCourseWorkResponse--;
 }
 
-core.List<api.Course> buildUnnamed11() => [
+core.List<api.Course> buildUnnamed12() => [
       buildCourse(),
       buildCourse(),
     ];
 
-void checkUnnamed11(core.List<api.Course> o) {
+void checkUnnamed12(core.List<api.Course> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCourse(o[0]);
   checkCourse(o[1]);
@@ -1228,7 +1309,7 @@
   final o = api.ListCoursesResponse();
   buildCounterListCoursesResponse++;
   if (buildCounterListCoursesResponse < 3) {
-    o.courses = buildUnnamed11();
+    o.courses = buildUnnamed12();
     o.nextPageToken = 'foo';
   }
   buildCounterListCoursesResponse--;
@@ -1238,7 +1319,7 @@
 void checkListCoursesResponse(api.ListCoursesResponse o) {
   buildCounterListCoursesResponse++;
   if (buildCounterListCoursesResponse < 3) {
-    checkUnnamed11(o.courses!);
+    checkUnnamed12(o.courses!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1247,12 +1328,12 @@
   buildCounterListCoursesResponse--;
 }
 
-core.List<api.GuardianInvitation> buildUnnamed12() => [
+core.List<api.GuardianInvitation> buildUnnamed13() => [
       buildGuardianInvitation(),
       buildGuardianInvitation(),
     ];
 
-void checkUnnamed12(core.List<api.GuardianInvitation> o) {
+void checkUnnamed13(core.List<api.GuardianInvitation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGuardianInvitation(o[0]);
   checkGuardianInvitation(o[1]);
@@ -1263,7 +1344,7 @@
   final o = api.ListGuardianInvitationsResponse();
   buildCounterListGuardianInvitationsResponse++;
   if (buildCounterListGuardianInvitationsResponse < 3) {
-    o.guardianInvitations = buildUnnamed12();
+    o.guardianInvitations = buildUnnamed13();
     o.nextPageToken = 'foo';
   }
   buildCounterListGuardianInvitationsResponse--;
@@ -1274,7 +1355,7 @@
     api.ListGuardianInvitationsResponse o) {
   buildCounterListGuardianInvitationsResponse++;
   if (buildCounterListGuardianInvitationsResponse < 3) {
-    checkUnnamed12(o.guardianInvitations!);
+    checkUnnamed13(o.guardianInvitations!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1283,12 +1364,12 @@
   buildCounterListGuardianInvitationsResponse--;
 }
 
-core.List<api.Guardian> buildUnnamed13() => [
+core.List<api.Guardian> buildUnnamed14() => [
       buildGuardian(),
       buildGuardian(),
     ];
 
-void checkUnnamed13(core.List<api.Guardian> o) {
+void checkUnnamed14(core.List<api.Guardian> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGuardian(o[0]);
   checkGuardian(o[1]);
@@ -1299,7 +1380,7 @@
   final o = api.ListGuardiansResponse();
   buildCounterListGuardiansResponse++;
   if (buildCounterListGuardiansResponse < 3) {
-    o.guardians = buildUnnamed13();
+    o.guardians = buildUnnamed14();
     o.nextPageToken = 'foo';
   }
   buildCounterListGuardiansResponse--;
@@ -1309,7 +1390,7 @@
 void checkListGuardiansResponse(api.ListGuardiansResponse o) {
   buildCounterListGuardiansResponse++;
   if (buildCounterListGuardiansResponse < 3) {
-    checkUnnamed13(o.guardians!);
+    checkUnnamed14(o.guardians!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1318,12 +1399,12 @@
   buildCounterListGuardiansResponse--;
 }
 
-core.List<api.Invitation> buildUnnamed14() => [
+core.List<api.Invitation> buildUnnamed15() => [
       buildInvitation(),
       buildInvitation(),
     ];
 
-void checkUnnamed14(core.List<api.Invitation> o) {
+void checkUnnamed15(core.List<api.Invitation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInvitation(o[0]);
   checkInvitation(o[1]);
@@ -1334,7 +1415,7 @@
   final o = api.ListInvitationsResponse();
   buildCounterListInvitationsResponse++;
   if (buildCounterListInvitationsResponse < 3) {
-    o.invitations = buildUnnamed14();
+    o.invitations = buildUnnamed15();
     o.nextPageToken = 'foo';
   }
   buildCounterListInvitationsResponse--;
@@ -1344,7 +1425,7 @@
 void checkListInvitationsResponse(api.ListInvitationsResponse o) {
   buildCounterListInvitationsResponse++;
   if (buildCounterListInvitationsResponse < 3) {
-    checkUnnamed14(o.invitations!);
+    checkUnnamed15(o.invitations!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1353,12 +1434,12 @@
   buildCounterListInvitationsResponse--;
 }
 
-core.List<api.StudentSubmission> buildUnnamed15() => [
+core.List<api.StudentSubmission> buildUnnamed16() => [
       buildStudentSubmission(),
       buildStudentSubmission(),
     ];
 
-void checkUnnamed15(core.List<api.StudentSubmission> o) {
+void checkUnnamed16(core.List<api.StudentSubmission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStudentSubmission(o[0]);
   checkStudentSubmission(o[1]);
@@ -1370,7 +1451,7 @@
   buildCounterListStudentSubmissionsResponse++;
   if (buildCounterListStudentSubmissionsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.studentSubmissions = buildUnnamed15();
+    o.studentSubmissions = buildUnnamed16();
   }
   buildCounterListStudentSubmissionsResponse--;
   return o;
@@ -1383,17 +1464,17 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed15(o.studentSubmissions!);
+    checkUnnamed16(o.studentSubmissions!);
   }
   buildCounterListStudentSubmissionsResponse--;
 }
 
-core.List<api.Student> buildUnnamed16() => [
+core.List<api.Student> buildUnnamed17() => [
       buildStudent(),
       buildStudent(),
     ];
 
-void checkUnnamed16(core.List<api.Student> o) {
+void checkUnnamed17(core.List<api.Student> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStudent(o[0]);
   checkStudent(o[1]);
@@ -1405,7 +1486,7 @@
   buildCounterListStudentsResponse++;
   if (buildCounterListStudentsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.students = buildUnnamed16();
+    o.students = buildUnnamed17();
   }
   buildCounterListStudentsResponse--;
   return o;
@@ -1418,17 +1499,17 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed16(o.students!);
+    checkUnnamed17(o.students!);
   }
   buildCounterListStudentsResponse--;
 }
 
-core.List<api.Teacher> buildUnnamed17() => [
+core.List<api.Teacher> buildUnnamed18() => [
       buildTeacher(),
       buildTeacher(),
     ];
 
-void checkUnnamed17(core.List<api.Teacher> o) {
+void checkUnnamed18(core.List<api.Teacher> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTeacher(o[0]);
   checkTeacher(o[1]);
@@ -1440,7 +1521,7 @@
   buildCounterListTeachersResponse++;
   if (buildCounterListTeachersResponse < 3) {
     o.nextPageToken = 'foo';
-    o.teachers = buildUnnamed17();
+    o.teachers = buildUnnamed18();
   }
   buildCounterListTeachersResponse--;
   return o;
@@ -1453,17 +1534,17 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed17(o.teachers!);
+    checkUnnamed18(o.teachers!);
   }
   buildCounterListTeachersResponse--;
 }
 
-core.List<api.Topic> buildUnnamed18() => [
+core.List<api.Topic> buildUnnamed19() => [
       buildTopic(),
       buildTopic(),
     ];
 
-void checkUnnamed18(core.List<api.Topic> o) {
+void checkUnnamed19(core.List<api.Topic> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTopic(o[0]);
   checkTopic(o[1]);
@@ -1475,7 +1556,7 @@
   buildCounterListTopicResponse++;
   if (buildCounterListTopicResponse < 3) {
     o.nextPageToken = 'foo';
-    o.topic = buildUnnamed18();
+    o.topic = buildUnnamed19();
   }
   buildCounterListTopicResponse--;
   return o;
@@ -1488,7 +1569,7 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed18(o.topic!);
+    checkUnnamed19(o.topic!);
   }
   buildCounterListTopicResponse--;
 }
@@ -1544,12 +1625,12 @@
   buildCounterModifyAnnouncementAssigneesRequest--;
 }
 
-core.List<api.Attachment> buildUnnamed19() => [
+core.List<api.Attachment> buildUnnamed20() => [
       buildAttachment(),
       buildAttachment(),
     ];
 
-void checkUnnamed19(core.List<api.Attachment> o) {
+void checkUnnamed20(core.List<api.Attachment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAttachment(o[0]);
   checkAttachment(o[1]);
@@ -1560,7 +1641,7 @@
   final o = api.ModifyAttachmentsRequest();
   buildCounterModifyAttachmentsRequest++;
   if (buildCounterModifyAttachmentsRequest < 3) {
-    o.addAttachments = buildUnnamed19();
+    o.addAttachments = buildUnnamed20();
   }
   buildCounterModifyAttachmentsRequest--;
   return o;
@@ -1569,7 +1650,7 @@
 void checkModifyAttachmentsRequest(api.ModifyAttachmentsRequest o) {
   buildCounterModifyAttachmentsRequest++;
   if (buildCounterModifyAttachmentsRequest < 3) {
-    checkUnnamed19(o.addAttachments!);
+    checkUnnamed20(o.addAttachments!);
   }
   buildCounterModifyAttachmentsRequest--;
 }
@@ -1599,23 +1680,6 @@
   buildCounterModifyCourseWorkAssigneesRequest--;
 }
 
-core.List<core.String> buildUnnamed20() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed20(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed21() => [
       'foo',
       'foo',
@@ -1633,28 +1697,6 @@
   );
 }
 
-core.int buildCounterModifyIndividualStudentsOptions = 0;
-api.ModifyIndividualStudentsOptions buildModifyIndividualStudentsOptions() {
-  final o = api.ModifyIndividualStudentsOptions();
-  buildCounterModifyIndividualStudentsOptions++;
-  if (buildCounterModifyIndividualStudentsOptions < 3) {
-    o.addStudentIds = buildUnnamed20();
-    o.removeStudentIds = buildUnnamed21();
-  }
-  buildCounterModifyIndividualStudentsOptions--;
-  return o;
-}
-
-void checkModifyIndividualStudentsOptions(
-    api.ModifyIndividualStudentsOptions o) {
-  buildCounterModifyIndividualStudentsOptions++;
-  if (buildCounterModifyIndividualStudentsOptions < 3) {
-    checkUnnamed20(o.addStudentIds!);
-    checkUnnamed21(o.removeStudentIds!);
-  }
-  buildCounterModifyIndividualStudentsOptions--;
-}
-
 core.List<core.String> buildUnnamed22() => [
       'foo',
       'foo',
@@ -1672,12 +1714,51 @@
   );
 }
 
+core.int buildCounterModifyIndividualStudentsOptions = 0;
+api.ModifyIndividualStudentsOptions buildModifyIndividualStudentsOptions() {
+  final o = api.ModifyIndividualStudentsOptions();
+  buildCounterModifyIndividualStudentsOptions++;
+  if (buildCounterModifyIndividualStudentsOptions < 3) {
+    o.addStudentIds = buildUnnamed21();
+    o.removeStudentIds = buildUnnamed22();
+  }
+  buildCounterModifyIndividualStudentsOptions--;
+  return o;
+}
+
+void checkModifyIndividualStudentsOptions(
+    api.ModifyIndividualStudentsOptions o) {
+  buildCounterModifyIndividualStudentsOptions++;
+  if (buildCounterModifyIndividualStudentsOptions < 3) {
+    checkUnnamed21(o.addStudentIds!);
+    checkUnnamed22(o.removeStudentIds!);
+  }
+  buildCounterModifyIndividualStudentsOptions--;
+}
+
+core.List<core.String> buildUnnamed23() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed23(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterMultipleChoiceQuestion = 0;
 api.MultipleChoiceQuestion buildMultipleChoiceQuestion() {
   final o = api.MultipleChoiceQuestion();
   buildCounterMultipleChoiceQuestion++;
   if (buildCounterMultipleChoiceQuestion < 3) {
-    o.choices = buildUnnamed22();
+    o.choices = buildUnnamed23();
   }
   buildCounterMultipleChoiceQuestion--;
   return o;
@@ -1686,7 +1767,7 @@
 void checkMultipleChoiceQuestion(api.MultipleChoiceQuestion o) {
   buildCounterMultipleChoiceQuestion++;
   if (buildCounterMultipleChoiceQuestion < 3) {
-    checkUnnamed22(o.choices!);
+    checkUnnamed23(o.choices!);
   }
   buildCounterMultipleChoiceQuestion--;
 }
@@ -1916,12 +1997,12 @@
   buildCounterStudent--;
 }
 
-core.List<api.SubmissionHistory> buildUnnamed23() => [
+core.List<api.SubmissionHistory> buildUnnamed24() => [
       buildSubmissionHistory(),
       buildSubmissionHistory(),
     ];
 
-void checkUnnamed23(core.List<api.SubmissionHistory> o) {
+void checkUnnamed24(core.List<api.SubmissionHistory> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSubmissionHistory(o[0]);
   checkSubmissionHistory(o[1]);
@@ -1946,7 +2027,7 @@
     o.multipleChoiceSubmission = buildMultipleChoiceSubmission();
     o.shortAnswerSubmission = buildShortAnswerSubmission();
     o.state = 'foo';
-    o.submissionHistory = buildUnnamed23();
+    o.submissionHistory = buildUnnamed24();
     o.updateTime = 'foo';
     o.userId = 'foo';
   }
@@ -1998,7 +2079,7 @@
       o.state!,
       unittest.equals('foo'),
     );
-    checkUnnamed23(o.submissionHistory!);
+    checkUnnamed24(o.submissionHistory!);
     unittest.expect(
       o.updateTime!,
       unittest.equals('foo'),
@@ -2150,12 +2231,12 @@
   buildCounterTurnInStudentSubmissionRequest--;
 }
 
-core.List<api.GlobalPermission> buildUnnamed24() => [
+core.List<api.GlobalPermission> buildUnnamed25() => [
       buildGlobalPermission(),
       buildGlobalPermission(),
     ];
 
-void checkUnnamed24(core.List<api.GlobalPermission> o) {
+void checkUnnamed25(core.List<api.GlobalPermission> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGlobalPermission(o[0]);
   checkGlobalPermission(o[1]);
@@ -2169,7 +2250,7 @@
     o.emailAddress = 'foo';
     o.id = 'foo';
     o.name = buildName();
-    o.permissions = buildUnnamed24();
+    o.permissions = buildUnnamed25();
     o.photoUrl = 'foo';
     o.verifiedTeacher = true;
   }
@@ -2189,7 +2270,7 @@
       unittest.equals('foo'),
     );
     checkName(o.name!);
-    checkUnnamed24(o.permissions!);
+    checkUnnamed25(o.permissions!);
     unittest.expect(
       o.photoUrl!,
       unittest.equals('foo'),
@@ -2236,23 +2317,6 @@
   buildCounterYouTubeVideo--;
 }
 
-core.List<core.String> buildUnnamed25() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed25(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed26() => [
       'foo',
       'foo',
@@ -2338,6 +2402,23 @@
   );
 }
 
+core.List<core.String> buildUnnamed31() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed31(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 void main() {
   unittest.group('obj-schema-Announcement', () {
     unittest.test('to-json--from-json', () async {
@@ -2539,6 +2620,16 @@
     });
   });
 
+  unittest.group('obj-schema-GradeCategory', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGradeCategory();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GradeCategory.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGradeCategory(od);
+    });
+  });
+
   unittest.group('obj-schema-GradeHistory', () {
     unittest.test('to-json--from-json', () async {
       final o = buildGradeHistory();
@@ -2549,6 +2640,16 @@
     });
   });
 
+  unittest.group('obj-schema-GradebookSettings', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGradebookSettings();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GradebookSettings.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGradebookSettings(od);
+    });
+  });
+
   unittest.group('obj-schema-Guardian', () {
     unittest.test('to-json--from-json', () async {
       final o = buildGuardian();
@@ -3122,7 +3223,7 @@
     unittest.test('method--list', () async {
       final mock = HttpServerMock();
       final res = api.ClassroomApi(mock).courses;
-      final arg_courseStates = buildUnnamed25();
+      final arg_courseStates = buildUnnamed26();
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
       final arg_studentId = 'foo';
@@ -3778,7 +3879,7 @@
       final mock = HttpServerMock();
       final res = api.ClassroomApi(mock).courses.announcements;
       final arg_courseId = 'foo';
-      final arg_announcementStates = buildUnnamed26();
+      final arg_announcementStates = buildUnnamed27();
       final arg_orderBy = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
@@ -4257,7 +4358,7 @@
       final mock = HttpServerMock();
       final res = api.ClassroomApi(mock).courses.courseWork;
       final arg_courseId = 'foo';
-      final arg_courseWorkStates = buildUnnamed27();
+      final arg_courseWorkStates = buildUnnamed28();
       final arg_orderBy = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
@@ -4611,7 +4712,7 @@
       final arg_late = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
-      final arg_states = buildUnnamed28();
+      final arg_states = buildUnnamed29();
       final arg_userId = 'foo';
       final arg_$fields = 'foo';
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
@@ -5445,7 +5546,7 @@
       final mock = HttpServerMock();
       final res = api.ClassroomApi(mock).courses.courseWorkMaterials;
       final arg_courseId = 'foo';
-      final arg_courseWorkMaterialStates = buildUnnamed29();
+      final arg_courseWorkMaterialStates = buildUnnamed30();
       final arg_materialDriveId = 'foo';
       final arg_materialLink = 'foo';
       final arg_orderBy = 'foo';
@@ -7244,7 +7345,7 @@
       final arg_invitedEmailAddress = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
-      final arg_states = buildUnnamed30();
+      final arg_states = buildUnnamed31();
       final arg_$fields = 'foo';
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         final path = (req.url).path;
diff --git a/generated/googleapis/test/cloudchannel/v1_test.dart b/generated/googleapis/test/cloudchannel/v1_test.dart
index a8ab94d..12b6b1c 100644
--- a/generated/googleapis/test/cloudchannel/v1_test.dart
+++ b/generated/googleapis/test/cloudchannel/v1_test.dart
@@ -4463,6 +4463,7 @@
       final res =
           api.CloudchannelApi(mock).accounts.channelPartnerLinks.customers;
       final arg_parent = 'foo';
+      final arg_filter = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
       final arg_$fields = 'foo';
@@ -4499,6 +4500,10 @@
           }
         }
         unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
           core.int.parse(queryMap['pageSize']!.first),
           unittest.equals(arg_pageSize),
         );
@@ -4519,6 +4524,7 @@
         return async.Future.value(stringResponse(200, h, resp));
       }), true);
       final response = await res.list(arg_parent,
+          filter: arg_filter,
           pageSize: arg_pageSize,
           pageToken: arg_pageToken,
           $fields: arg_$fields);
@@ -4820,6 +4826,7 @@
       final mock = HttpServerMock();
       final res = api.CloudchannelApi(mock).accounts.customers;
       final arg_parent = 'foo';
+      final arg_filter = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
       final arg_$fields = 'foo';
@@ -4856,6 +4863,10 @@
           }
         }
         unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
           core.int.parse(queryMap['pageSize']!.first),
           unittest.equals(arg_pageSize),
         );
@@ -4876,6 +4887,7 @@
         return async.Future.value(stringResponse(200, h, resp));
       }), true);
       final response = await res.list(arg_parent,
+          filter: arg_filter,
           pageSize: arg_pageSize,
           pageToken: arg_pageToken,
           $fields: arg_$fields);
diff --git a/generated/googleapis/test/clouddeploy/v1_test.dart b/generated/googleapis/test/clouddeploy/v1_test.dart
index c14d4f9..b70b763 100644
--- a/generated/googleapis/test/clouddeploy/v1_test.dart
+++ b/generated/googleapis/test/clouddeploy/v1_test.dart
@@ -26,6 +26,28 @@
 
 import '../test_shared.dart';
 
+core.int buildCounterAnthosCluster = 0;
+api.AnthosCluster buildAnthosCluster() {
+  final o = api.AnthosCluster();
+  buildCounterAnthosCluster++;
+  if (buildCounterAnthosCluster < 3) {
+    o.membership = 'foo';
+  }
+  buildCounterAnthosCluster--;
+  return o;
+}
+
+void checkAnthosCluster(api.AnthosCluster o) {
+  buildCounterAnthosCluster++;
+  if (buildCounterAnthosCluster < 3) {
+    unittest.expect(
+      o.membership!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAnthosCluster--;
+}
+
 core.int buildCounterApproveRolloutRequest = 0;
 api.ApproveRolloutRequest buildApproveRolloutRequest() {
   final o = api.ApproveRolloutRequest();
@@ -446,9 +468,12 @@
   final o = api.ExecutionConfig();
   buildCounterExecutionConfig++;
   if (buildCounterExecutionConfig < 3) {
+    o.artifactStorage = 'foo';
     o.defaultPool = buildDefaultPool();
     o.privatePool = buildPrivatePool();
+    o.serviceAccount = 'foo';
     o.usages = buildUnnamed6();
+    o.workerPool = 'foo';
   }
   buildCounterExecutionConfig--;
   return o;
@@ -457,9 +482,21 @@
 void checkExecutionConfig(api.ExecutionConfig o) {
   buildCounterExecutionConfig++;
   if (buildCounterExecutionConfig < 3) {
+    unittest.expect(
+      o.artifactStorage!,
+      unittest.equals('foo'),
+    );
     checkDefaultPool(o.defaultPool!);
     checkPrivatePool(o.privatePool!);
+    unittest.expect(
+      o.serviceAccount!,
+      unittest.equals('foo'),
+    );
     checkUnnamed6(o.usages!);
+    unittest.expect(
+      o.workerPool!,
+      unittest.equals('foo'),
+    );
   }
   buildCounterExecutionConfig--;
 }
@@ -507,6 +544,7 @@
   buildCounterGkeCluster++;
   if (buildCounterGkeCluster < 3) {
     o.cluster = 'foo';
+    o.internalIp = true;
   }
   buildCounterGkeCluster--;
   return o;
@@ -519,6 +557,7 @@
       o.cluster!,
       unittest.equals('foo'),
     );
+    unittest.expect(o.internalIp!, unittest.isTrue);
   }
   buildCounterGkeCluster--;
 }
@@ -1706,6 +1745,7 @@
   buildCounterTarget++;
   if (buildCounterTarget < 3) {
     o.annotations = buildUnnamed35();
+    o.anthosCluster = buildAnthosCluster();
     o.createTime = 'foo';
     o.description = 'foo';
     o.etag = 'foo';
@@ -1726,6 +1766,7 @@
   buildCounterTarget++;
   if (buildCounterTarget < 3) {
     checkUnnamed35(o.annotations!);
+    checkAnthosCluster(o.anthosCluster!);
     unittest.expect(
       o.createTime!,
       unittest.equals('foo'),
@@ -1942,6 +1983,16 @@
 }
 
 void main() {
+  unittest.group('obj-schema-AnthosCluster', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAnthosCluster();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AnthosCluster.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAnthosCluster(od);
+    });
+  });
+
   unittest.group('obj-schema-ApproveRolloutRequest', () {
     unittest.test('to-json--from-json', () async {
       final o = buildApproveRolloutRequest();
diff --git a/generated/googleapis/test/cloudfunctions/v1_test.dart b/generated/googleapis/test/cloudfunctions/v1_test.dart
index bd1ffd9..6609972 100644
--- a/generated/googleapis/test/cloudfunctions/v1_test.dart
+++ b/generated/googleapis/test/cloudfunctions/v1_test.dart
@@ -283,6 +283,7 @@
     o.buildName = 'foo';
     o.buildWorkerPool = 'foo';
     o.description = 'foo';
+    o.dockerRegistry = 'foo';
     o.dockerRepository = 'foo';
     o.entryPoint = 'foo';
     o.environmentVariables = buildUnnamed4();
@@ -339,6 +340,10 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.dockerRegistry!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.dockerRepository!,
       unittest.equals('foo'),
     );
diff --git a/generated/googleapis/test/cloudkms/v1_test.dart b/generated/googleapis/test/cloudkms/v1_test.dart
index 0819814..dab353a 100644
--- a/generated/googleapis/test/cloudkms/v1_test.dart
+++ b/generated/googleapis/test/cloudkms/v1_test.dart
@@ -298,6 +298,62 @@
   );
 }
 
+core.int buildCounterCertificate = 0;
+api.Certificate buildCertificate() {
+  final o = api.Certificate();
+  buildCounterCertificate++;
+  if (buildCounterCertificate < 3) {
+    o.issuer = 'foo';
+    o.notAfterTime = 'foo';
+    o.notBeforeTime = 'foo';
+    o.parsed = true;
+    o.rawDer = 'foo';
+    o.serialNumber = 'foo';
+    o.sha256Fingerprint = 'foo';
+    o.subject = 'foo';
+    o.subjectAlternativeDnsNames = buildUnnamed3();
+  }
+  buildCounterCertificate--;
+  return o;
+}
+
+void checkCertificate(api.Certificate o) {
+  buildCounterCertificate++;
+  if (buildCounterCertificate < 3) {
+    unittest.expect(
+      o.issuer!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.notAfterTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.notBeforeTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.parsed!, unittest.isTrue);
+    unittest.expect(
+      o.rawDer!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.serialNumber!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.sha256Fingerprint!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.subject!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed3(o.subjectAlternativeDnsNames!);
+  }
+  buildCounterCertificate--;
+}
+
 core.List<core.String> buildUnnamed4() => [
       'foo',
       'foo',
@@ -332,14 +388,31 @@
   );
 }
 
+core.List<core.String> buildUnnamed6() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed6(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterCertificateChains = 0;
 api.CertificateChains buildCertificateChains() {
   final o = api.CertificateChains();
   buildCounterCertificateChains++;
   if (buildCounterCertificateChains < 3) {
-    o.caviumCerts = buildUnnamed3();
-    o.googleCardCerts = buildUnnamed4();
-    o.googlePartitionCerts = buildUnnamed5();
+    o.caviumCerts = buildUnnamed4();
+    o.googleCardCerts = buildUnnamed5();
+    o.googlePartitionCerts = buildUnnamed6();
   }
   buildCounterCertificateChains--;
   return o;
@@ -348,19 +421,19 @@
 void checkCertificateChains(api.CertificateChains o) {
   buildCounterCertificateChains++;
   if (buildCounterCertificateChains < 3) {
-    checkUnnamed3(o.caviumCerts!);
-    checkUnnamed4(o.googleCardCerts!);
-    checkUnnamed5(o.googlePartitionCerts!);
+    checkUnnamed4(o.caviumCerts!);
+    checkUnnamed5(o.googleCardCerts!);
+    checkUnnamed6(o.googlePartitionCerts!);
   }
   buildCounterCertificateChains--;
 }
 
-core.Map<core.String, core.String> buildUnnamed6() => {
+core.Map<core.String, core.String> buildUnnamed7() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed6(core.Map<core.String, core.String> o) {
+void checkUnnamed7(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -378,9 +451,10 @@
   buildCounterCryptoKey++;
   if (buildCounterCryptoKey < 3) {
     o.createTime = 'foo';
+    o.cryptoKeyBackend = 'foo';
     o.destroyScheduledDuration = 'foo';
     o.importOnly = true;
-    o.labels = buildUnnamed6();
+    o.labels = buildUnnamed7();
     o.name = 'foo';
     o.nextRotationTime = 'foo';
     o.primary = buildCryptoKeyVersion();
@@ -400,11 +474,15 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.cryptoKeyBackend!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.destroyScheduledDuration!,
       unittest.equals('foo'),
     );
     unittest.expect(o.importOnly!, unittest.isTrue);
-    checkUnnamed6(o.labels!);
+    checkUnnamed7(o.labels!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -650,6 +728,51 @@
   buildCounterDigest--;
 }
 
+core.List<api.ServiceResolver> buildUnnamed8() => [
+      buildServiceResolver(),
+      buildServiceResolver(),
+    ];
+
+void checkUnnamed8(core.List<api.ServiceResolver> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkServiceResolver(o[0]);
+  checkServiceResolver(o[1]);
+}
+
+core.int buildCounterEkmConnection = 0;
+api.EkmConnection buildEkmConnection() {
+  final o = api.EkmConnection();
+  buildCounterEkmConnection++;
+  if (buildCounterEkmConnection < 3) {
+    o.createTime = 'foo';
+    o.etag = 'foo';
+    o.name = 'foo';
+    o.serviceResolvers = buildUnnamed8();
+  }
+  buildCounterEkmConnection--;
+  return o;
+}
+
+void checkEkmConnection(api.EkmConnection o) {
+  buildCounterEkmConnection++;
+  if (buildCounterEkmConnection < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.etag!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed8(o.serviceResolvers!);
+  }
+  buildCounterEkmConnection--;
+}
+
 core.int buildCounterEncryptRequest = 0;
 api.EncryptRequest buildEncryptRequest() {
   final o = api.EncryptRequest();
@@ -771,6 +894,7 @@
   final o = api.ExternalProtectionLevelOptions();
   buildCounterExternalProtectionLevelOptions++;
   if (buildCounterExternalProtectionLevelOptions < 3) {
+    o.ekmConnectionKeyPath = 'foo';
     o.externalKeyUri = 'foo';
   }
   buildCounterExternalProtectionLevelOptions--;
@@ -781,6 +905,10 @@
   buildCounterExternalProtectionLevelOptions++;
   if (buildCounterExternalProtectionLevelOptions < 3) {
     unittest.expect(
+      o.ekmConnectionKeyPath!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.externalKeyUri!,
       unittest.equals('foo'),
     );
@@ -996,12 +1124,12 @@
   buildCounterKeyRing--;
 }
 
-core.List<api.CryptoKeyVersion> buildUnnamed7() => [
+core.List<api.CryptoKeyVersion> buildUnnamed9() => [
       buildCryptoKeyVersion(),
       buildCryptoKeyVersion(),
     ];
 
-void checkUnnamed7(core.List<api.CryptoKeyVersion> o) {
+void checkUnnamed9(core.List<api.CryptoKeyVersion> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCryptoKeyVersion(o[0]);
   checkCryptoKeyVersion(o[1]);
@@ -1012,7 +1140,7 @@
   final o = api.ListCryptoKeyVersionsResponse();
   buildCounterListCryptoKeyVersionsResponse++;
   if (buildCounterListCryptoKeyVersionsResponse < 3) {
-    o.cryptoKeyVersions = buildUnnamed7();
+    o.cryptoKeyVersions = buildUnnamed9();
     o.nextPageToken = 'foo';
     o.totalSize = 42;
   }
@@ -1023,7 +1151,7 @@
 void checkListCryptoKeyVersionsResponse(api.ListCryptoKeyVersionsResponse o) {
   buildCounterListCryptoKeyVersionsResponse++;
   if (buildCounterListCryptoKeyVersionsResponse < 3) {
-    checkUnnamed7(o.cryptoKeyVersions!);
+    checkUnnamed9(o.cryptoKeyVersions!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1036,12 +1164,12 @@
   buildCounterListCryptoKeyVersionsResponse--;
 }
 
-core.List<api.CryptoKey> buildUnnamed8() => [
+core.List<api.CryptoKey> buildUnnamed10() => [
       buildCryptoKey(),
       buildCryptoKey(),
     ];
 
-void checkUnnamed8(core.List<api.CryptoKey> o) {
+void checkUnnamed10(core.List<api.CryptoKey> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCryptoKey(o[0]);
   checkCryptoKey(o[1]);
@@ -1052,7 +1180,7 @@
   final o = api.ListCryptoKeysResponse();
   buildCounterListCryptoKeysResponse++;
   if (buildCounterListCryptoKeysResponse < 3) {
-    o.cryptoKeys = buildUnnamed8();
+    o.cryptoKeys = buildUnnamed10();
     o.nextPageToken = 'foo';
     o.totalSize = 42;
   }
@@ -1063,7 +1191,7 @@
 void checkListCryptoKeysResponse(api.ListCryptoKeysResponse o) {
   buildCounterListCryptoKeysResponse++;
   if (buildCounterListCryptoKeysResponse < 3) {
-    checkUnnamed8(o.cryptoKeys!);
+    checkUnnamed10(o.cryptoKeys!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1076,12 +1204,52 @@
   buildCounterListCryptoKeysResponse--;
 }
 
-core.List<api.ImportJob> buildUnnamed9() => [
+core.List<api.EkmConnection> buildUnnamed11() => [
+      buildEkmConnection(),
+      buildEkmConnection(),
+    ];
+
+void checkUnnamed11(core.List<api.EkmConnection> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEkmConnection(o[0]);
+  checkEkmConnection(o[1]);
+}
+
+core.int buildCounterListEkmConnectionsResponse = 0;
+api.ListEkmConnectionsResponse buildListEkmConnectionsResponse() {
+  final o = api.ListEkmConnectionsResponse();
+  buildCounterListEkmConnectionsResponse++;
+  if (buildCounterListEkmConnectionsResponse < 3) {
+    o.ekmConnections = buildUnnamed11();
+    o.nextPageToken = 'foo';
+    o.totalSize = 42;
+  }
+  buildCounterListEkmConnectionsResponse--;
+  return o;
+}
+
+void checkListEkmConnectionsResponse(api.ListEkmConnectionsResponse o) {
+  buildCounterListEkmConnectionsResponse++;
+  if (buildCounterListEkmConnectionsResponse < 3) {
+    checkUnnamed11(o.ekmConnections!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.totalSize!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterListEkmConnectionsResponse--;
+}
+
+core.List<api.ImportJob> buildUnnamed12() => [
       buildImportJob(),
       buildImportJob(),
     ];
 
-void checkUnnamed9(core.List<api.ImportJob> o) {
+void checkUnnamed12(core.List<api.ImportJob> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkImportJob(o[0]);
   checkImportJob(o[1]);
@@ -1092,7 +1260,7 @@
   final o = api.ListImportJobsResponse();
   buildCounterListImportJobsResponse++;
   if (buildCounterListImportJobsResponse < 3) {
-    o.importJobs = buildUnnamed9();
+    o.importJobs = buildUnnamed12();
     o.nextPageToken = 'foo';
     o.totalSize = 42;
   }
@@ -1103,7 +1271,7 @@
 void checkListImportJobsResponse(api.ListImportJobsResponse o) {
   buildCounterListImportJobsResponse++;
   if (buildCounterListImportJobsResponse < 3) {
-    checkUnnamed9(o.importJobs!);
+    checkUnnamed12(o.importJobs!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1116,12 +1284,12 @@
   buildCounterListImportJobsResponse--;
 }
 
-core.List<api.KeyRing> buildUnnamed10() => [
+core.List<api.KeyRing> buildUnnamed13() => [
       buildKeyRing(),
       buildKeyRing(),
     ];
 
-void checkUnnamed10(core.List<api.KeyRing> o) {
+void checkUnnamed13(core.List<api.KeyRing> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKeyRing(o[0]);
   checkKeyRing(o[1]);
@@ -1132,7 +1300,7 @@
   final o = api.ListKeyRingsResponse();
   buildCounterListKeyRingsResponse++;
   if (buildCounterListKeyRingsResponse < 3) {
-    o.keyRings = buildUnnamed10();
+    o.keyRings = buildUnnamed13();
     o.nextPageToken = 'foo';
     o.totalSize = 42;
   }
@@ -1143,7 +1311,7 @@
 void checkListKeyRingsResponse(api.ListKeyRingsResponse o) {
   buildCounterListKeyRingsResponse++;
   if (buildCounterListKeyRingsResponse < 3) {
-    checkUnnamed10(o.keyRings!);
+    checkUnnamed13(o.keyRings!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1156,12 +1324,12 @@
   buildCounterListKeyRingsResponse--;
 }
 
-core.List<api.Location> buildUnnamed11() => [
+core.List<api.Location> buildUnnamed14() => [
       buildLocation(),
       buildLocation(),
     ];
 
-void checkUnnamed11(core.List<api.Location> o) {
+void checkUnnamed14(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -1172,7 +1340,7 @@
   final o = api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed11();
+    o.locations = buildUnnamed14();
     o.nextPageToken = 'foo';
   }
   buildCounterListLocationsResponse--;
@@ -1182,7 +1350,7 @@
 void checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed11(o.locations!);
+    checkUnnamed14(o.locations!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1191,12 +1359,12 @@
   buildCounterListLocationsResponse--;
 }
 
-core.Map<core.String, core.String> buildUnnamed12() => {
+core.Map<core.String, core.String> buildUnnamed15() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed12(core.Map<core.String, core.String> o) {
+void checkUnnamed15(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1208,7 +1376,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed13() => {
+core.Map<core.String, core.Object?> buildUnnamed16() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -1221,7 +1389,7 @@
       },
     };
 
-void checkUnnamed13(core.Map<core.String, core.Object?> o) {
+void checkUnnamed16(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o['x']!) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1259,9 +1427,9 @@
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
     o.displayName = 'foo';
-    o.labels = buildUnnamed12();
+    o.labels = buildUnnamed15();
     o.locationId = 'foo';
-    o.metadata = buildUnnamed13();
+    o.metadata = buildUnnamed16();
     o.name = 'foo';
   }
   buildCounterLocation--;
@@ -1275,12 +1443,12 @@
       o.displayName!,
       unittest.equals('foo'),
     );
-    checkUnnamed12(o.labels!);
+    checkUnnamed15(o.labels!);
     unittest.expect(
       o.locationId!,
       unittest.equals('foo'),
     );
-    checkUnnamed13(o.metadata!);
+    checkUnnamed16(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -1427,23 +1595,23 @@
   buildCounterMacVerifyResponse--;
 }
 
-core.List<api.AuditConfig> buildUnnamed14() => [
+core.List<api.AuditConfig> buildUnnamed17() => [
       buildAuditConfig(),
       buildAuditConfig(),
     ];
 
-void checkUnnamed14(core.List<api.AuditConfig> o) {
+void checkUnnamed17(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-core.List<api.Binding> buildUnnamed15() => [
+core.List<api.Binding> buildUnnamed18() => [
       buildBinding(),
       buildBinding(),
     ];
 
-void checkUnnamed15(core.List<api.Binding> o) {
+void checkUnnamed18(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -1454,8 +1622,8 @@
   final o = api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed14();
-    o.bindings = buildUnnamed15();
+    o.auditConfigs = buildUnnamed17();
+    o.bindings = buildUnnamed18();
     o.etag = 'foo';
     o.version = 42;
   }
@@ -1466,8 +1634,8 @@
 void checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed14(o.auditConfigs!);
-    checkUnnamed15(o.bindings!);
+    checkUnnamed17(o.auditConfigs!);
+    checkUnnamed18(o.bindings!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -1537,6 +1705,51 @@
   buildCounterRestoreCryptoKeyVersionRequest--;
 }
 
+core.List<api.Certificate> buildUnnamed19() => [
+      buildCertificate(),
+      buildCertificate(),
+    ];
+
+void checkUnnamed19(core.List<api.Certificate> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCertificate(o[0]);
+  checkCertificate(o[1]);
+}
+
+core.int buildCounterServiceResolver = 0;
+api.ServiceResolver buildServiceResolver() {
+  final o = api.ServiceResolver();
+  buildCounterServiceResolver++;
+  if (buildCounterServiceResolver < 3) {
+    o.endpointFilter = 'foo';
+    o.hostname = 'foo';
+    o.serverCertificates = buildUnnamed19();
+    o.serviceDirectoryService = 'foo';
+  }
+  buildCounterServiceResolver--;
+  return o;
+}
+
+void checkServiceResolver(api.ServiceResolver o) {
+  buildCounterServiceResolver++;
+  if (buildCounterServiceResolver < 3) {
+    unittest.expect(
+      o.endpointFilter!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.hostname!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed19(o.serverCertificates!);
+    unittest.expect(
+      o.serviceDirectoryService!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterServiceResolver--;
+}
+
 core.int buildCounterSetIamPolicyRequest = 0;
 api.SetIamPolicyRequest buildSetIamPolicyRequest() {
   final o = api.SetIamPolicyRequest();
@@ -1561,12 +1774,12 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-core.List<core.String> buildUnnamed16() => [
+core.List<core.String> buildUnnamed20() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed16(core.List<core.String> o) {
+void checkUnnamed20(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1583,7 +1796,7 @@
   final o = api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed16();
+    o.permissions = buildUnnamed20();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -1592,17 +1805,17 @@
 void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed16(o.permissions!);
+    checkUnnamed20(o.permissions!);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-core.List<core.String> buildUnnamed17() => [
+core.List<core.String> buildUnnamed21() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed17(core.List<core.String> o) {
+void checkUnnamed21(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1619,7 +1832,7 @@
   final o = api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed17();
+    o.permissions = buildUnnamed21();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -1628,7 +1841,7 @@
 void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed17(o.permissions!);
+    checkUnnamed21(o.permissions!);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -1750,6 +1963,16 @@
     });
   });
 
+  unittest.group('obj-schema-Certificate', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildCertificate();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.Certificate.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkCertificate(od);
+    });
+  });
+
   unittest.group('obj-schema-CertificateChains', () {
     unittest.test('to-json--from-json', () async {
       final o = buildCertificateChains();
@@ -1830,6 +2053,16 @@
     });
   });
 
+  unittest.group('obj-schema-EkmConnection', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildEkmConnection();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.EkmConnection.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkEkmConnection(od);
+    });
+  });
+
   unittest.group('obj-schema-EncryptRequest', () {
     unittest.test('to-json--from-json', () async {
       final o = buildEncryptRequest();
@@ -1950,6 +2183,16 @@
     });
   });
 
+  unittest.group('obj-schema-ListEkmConnectionsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListEkmConnectionsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListEkmConnectionsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListEkmConnectionsResponse(od);
+    });
+  });
+
   unittest.group('obj-schema-ListImportJobsResponse', () {
     unittest.test('to-json--from-json', () async {
       final o = buildListImportJobsResponse();
@@ -2060,6 +2303,16 @@
     });
   });
 
+  unittest.group('obj-schema-ServiceResolver', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildServiceResolver();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ServiceResolver.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkServiceResolver(od);
+    });
+  });
+
   unittest.group('obj-schema-SetIamPolicyRequest', () {
     unittest.test('to-json--from-json', () async {
       final o = buildSetIamPolicyRequest();
@@ -2295,6 +2548,121 @@
   });
 
   unittest.group('resource-ProjectsLocationsEkmConnectionsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudKMSApi(mock).projects.locations.ekmConnections;
+      final arg_request = buildEkmConnection();
+      final arg_parent = 'foo';
+      final arg_ekmConnectionId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.EkmConnection.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkEkmConnection(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['ekmConnectionId']!.first,
+          unittest.equals(arg_ekmConnectionId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEkmConnection());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          ekmConnectionId: arg_ekmConnectionId, $fields: arg_$fields);
+      checkEkmConnection(response as api.EkmConnection);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudKMSApi(mock).projects.locations.ekmConnections;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEkmConnection());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkEkmConnection(response as api.EkmConnection);
+    });
+
     unittest.test('method--getIamPolicy', () async {
       final mock = HttpServerMock();
       final res = api.CloudKMSApi(mock).projects.locations.ekmConnections;
@@ -2354,6 +2722,147 @@
       checkPolicy(response as api.Policy);
     });
 
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudKMSApi(mock).projects.locations.ekmConnections;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListEkmConnectionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListEkmConnectionsResponse(
+          response as api.ListEkmConnectionsResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudKMSApi(mock).projects.locations.ekmConnections;
+      final arg_request = buildEkmConnection();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.EkmConnection.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkEkmConnection(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEkmConnection());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkEkmConnection(response as api.EkmConnection);
+    });
+
     unittest.test('method--setIamPolicy', () async {
       final mock = HttpServerMock();
       final res = api.CloudKMSApi(mock).projects.locations.ekmConnections;
diff --git a/generated/googleapis/test/composer/v1_test.dart b/generated/googleapis/test/composer/v1_test.dart
index a52118c..cf7b563 100644
--- a/generated/googleapis/test/composer/v1_test.dart
+++ b/generated/googleapis/test/composer/v1_test.dart
@@ -733,6 +733,7 @@
   final o = api.PrivateEnvironmentConfig();
   buildCounterPrivateEnvironmentConfig++;
   if (buildCounterPrivateEnvironmentConfig < 3) {
+    o.cloudComposerConnectionSubnetwork = 'foo';
     o.cloudComposerNetworkIpv4CidrBlock = 'foo';
     o.cloudComposerNetworkIpv4ReservedRange = 'foo';
     o.cloudSqlIpv4CidrBlock = 'foo';
@@ -749,6 +750,10 @@
   buildCounterPrivateEnvironmentConfig++;
   if (buildCounterPrivateEnvironmentConfig < 3) {
     unittest.expect(
+      o.cloudComposerConnectionSubnetwork!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.cloudComposerNetworkIpv4CidrBlock!,
       unittest.equals('foo'),
     );
diff --git a/generated/googleapis/test/compute/v1_test.dart b/generated/googleapis/test/compute/v1_test.dart
index 69b5aad..d8980ae 100644
--- a/generated/googleapis/test/compute/v1_test.dart
+++ b/generated/googleapis/test/compute/v1_test.dart
@@ -68571,6 +68571,112 @@
       checkOperation(response as api.Operation);
     });
 
+    unittest.test('method--resume', () async {
+      final mock = HttpServerMock();
+      final res = api.ComputeApi(mock).instances;
+      final arg_project = 'foo';
+      final arg_zone = 'foo';
+      final arg_instance = 'foo';
+      final arg_requestId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 11),
+          unittest.equals('compute/v1/'),
+        );
+        pathOffset += 11;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 9),
+          unittest.equals('projects/'),
+        );
+        pathOffset += 9;
+        index = path.indexOf('/zones/', pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(
+          subPart,
+          unittest.equals('$arg_project'),
+        );
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('/zones/'),
+        );
+        pathOffset += 7;
+        index = path.indexOf('/instances/', pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(
+          subPart,
+          unittest.equals('$arg_zone'),
+        );
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 11),
+          unittest.equals('/instances/'),
+        );
+        pathOffset += 11;
+        index = path.indexOf('/resume', pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(
+          subPart,
+          unittest.equals('$arg_instance'),
+        );
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('/resume'),
+        );
+        pathOffset += 7;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['requestId']!.first,
+          unittest.equals(arg_requestId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.resume(arg_project, arg_zone, arg_instance,
+          requestId: arg_requestId, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
     unittest.test('method--sendDiagnosticInterrupt', () async {
       final mock = HttpServerMock();
       final res = api.ComputeApi(mock).instances;
@@ -70443,6 +70549,112 @@
       checkOperation(response as api.Operation);
     });
 
+    unittest.test('method--suspend', () async {
+      final mock = HttpServerMock();
+      final res = api.ComputeApi(mock).instances;
+      final arg_project = 'foo';
+      final arg_zone = 'foo';
+      final arg_instance = 'foo';
+      final arg_requestId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 11),
+          unittest.equals('compute/v1/'),
+        );
+        pathOffset += 11;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 9),
+          unittest.equals('projects/'),
+        );
+        pathOffset += 9;
+        index = path.indexOf('/zones/', pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(
+          subPart,
+          unittest.equals('$arg_project'),
+        );
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('/zones/'),
+        );
+        pathOffset += 7;
+        index = path.indexOf('/instances/', pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(
+          subPart,
+          unittest.equals('$arg_zone'),
+        );
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 11),
+          unittest.equals('/instances/'),
+        );
+        pathOffset += 11;
+        index = path.indexOf('/suspend', pathOffset);
+        unittest.expect(index >= 0, unittest.isTrue);
+        subPart =
+            core.Uri.decodeQueryComponent(path.substring(pathOffset, index));
+        pathOffset = index;
+        unittest.expect(
+          subPart,
+          unittest.equals('$arg_instance'),
+        );
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('/suspend'),
+        );
+        pathOffset += 8;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['requestId']!.first,
+          unittest.equals(arg_requestId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.suspend(arg_project, arg_zone, arg_instance,
+          requestId: arg_requestId, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
     unittest.test('method--testIamPermissions', () async {
       final mock = HttpServerMock();
       final res = api.ComputeApi(mock).instances;
diff --git a/generated/googleapis/test/connectors/v1_test.dart b/generated/googleapis/test/connectors/v1_test.dart
index de072ee..216bc7a 100644
--- a/generated/googleapis/test/connectors/v1_test.dart
+++ b/generated/googleapis/test/connectors/v1_test.dart
@@ -376,13 +376,13 @@
     o.egressBackends = buildUnnamed6();
     o.envoyImageLocation = 'foo';
     o.imageLocation = 'foo';
-    o.inactive = true;
     o.labels = buildUnnamed7();
     o.lockConfig = buildLockConfig();
     o.name = 'foo';
     o.serviceAccount = 'foo';
     o.serviceDirectory = 'foo';
     o.status = buildConnectionStatus();
+    o.suspended = true;
     o.updateTime = 'foo';
   }
   buildCounterConnection--;
@@ -415,7 +415,6 @@
       o.imageLocation!,
       unittest.equals('foo'),
     );
-    unittest.expect(o.inactive!, unittest.isTrue);
     checkUnnamed7(o.labels!);
     checkLockConfig(o.lockConfig!);
     unittest.expect(
@@ -431,6 +430,7 @@
       unittest.equals('foo'),
     );
     checkConnectionStatus(o.status!);
+    unittest.expect(o.suspended!, unittest.isTrue);
     unittest.expect(
       o.updateTime!,
       unittest.equals('foo'),
diff --git a/generated/googleapis/test/container/v1_test.dart b/generated/googleapis/test/container/v1_test.dart
index 02c7294..0167373 100644
--- a/generated/googleapis/test/container/v1_test.dart
+++ b/generated/googleapis/test/container/v1_test.dart
@@ -505,6 +505,7 @@
     o.endpoint = 'foo';
     o.expireTime = 'foo';
     o.id = 'foo';
+    o.identityServiceConfig = buildIdentityServiceConfig();
     o.initialClusterVersion = 'foo';
     o.initialNodeCount = 42;
     o.instanceGroupUrls = buildUnnamed2();
@@ -599,6 +600,7 @@
       o.id!,
       unittest.equals('foo'),
     );
+    checkIdentityServiceConfig(o.identityServiceConfig!);
     unittest.expect(
       o.initialClusterVersion!,
       unittest.equals('foo'),
@@ -780,6 +782,7 @@
     o.desiredDefaultSnatStatus = buildDefaultSnatStatus();
     o.desiredDnsConfig = buildDNSConfig();
     o.desiredGcfsConfig = buildGcfsConfig();
+    o.desiredIdentityServiceConfig = buildIdentityServiceConfig();
     o.desiredImageType = 'foo';
     o.desiredIntraNodeVisibilityConfig = buildIntraNodeVisibilityConfig();
     o.desiredL4ilbSubsettingConfig = buildILBSubsettingConfig();
@@ -824,6 +827,7 @@
     checkDefaultSnatStatus(o.desiredDefaultSnatStatus!);
     checkDNSConfig(o.desiredDnsConfig!);
     checkGcfsConfig(o.desiredGcfsConfig!);
+    checkIdentityServiceConfig(o.desiredIdentityServiceConfig!);
     unittest.expect(
       o.desiredImageType!,
       unittest.equals('foo'),
@@ -1591,6 +1595,25 @@
   buildCounterIPAllocationPolicy--;
 }
 
+core.int buildCounterIdentityServiceConfig = 0;
+api.IdentityServiceConfig buildIdentityServiceConfig() {
+  final o = api.IdentityServiceConfig();
+  buildCounterIdentityServiceConfig++;
+  if (buildCounterIdentityServiceConfig < 3) {
+    o.enabled = true;
+  }
+  buildCounterIdentityServiceConfig--;
+  return o;
+}
+
+void checkIdentityServiceConfig(api.IdentityServiceConfig o) {
+  buildCounterIdentityServiceConfig++;
+  if (buildCounterIdentityServiceConfig < 3) {
+    unittest.expect(o.enabled!, unittest.isTrue);
+  }
+  buildCounterIdentityServiceConfig--;
+}
+
 core.int buildCounterIntraNodeVisibilityConfig = 0;
 api.IntraNodeVisibilityConfig buildIntraNodeVisibilityConfig() {
   final o = api.IntraNodeVisibilityConfig();
@@ -4968,6 +4991,16 @@
     });
   });
 
+  unittest.group('obj-schema-IdentityServiceConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildIdentityServiceConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.IdentityServiceConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkIdentityServiceConfig(od);
+    });
+  });
+
   unittest.group('obj-schema-IntraNodeVisibilityConfig', () {
     unittest.test('to-json--from-json', () async {
       final o = buildIntraNodeVisibilityConfig();
diff --git a/generated/googleapis/test/datacatalog/v1_test.dart b/generated/googleapis/test/datacatalog/v1_test.dart
index 6fbf402..a684141 100644
--- a/generated/googleapis/test/datacatalog/v1_test.dart
+++ b/generated/googleapis/test/datacatalog/v1_test.dart
@@ -496,6 +496,8 @@
   if (buildCounterGoogleCloudDatacatalogV1DataSource < 3) {
     o.resource = 'foo';
     o.service = 'foo';
+    o.sourceEntry = 'foo';
+    o.storageProperties = buildGoogleCloudDatacatalogV1StorageProperties();
   }
   buildCounterGoogleCloudDatacatalogV1DataSource--;
   return o;
@@ -513,6 +515,11 @@
       o.service!,
       unittest.equals('foo'),
     );
+    unittest.expect(
+      o.sourceEntry!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDatacatalogV1StorageProperties(o.storageProperties!);
   }
   buildCounterGoogleCloudDatacatalogV1DataSource--;
 }
@@ -546,6 +553,7 @@
   final o = api.GoogleCloudDatacatalogV1DatabaseTableSpec();
   buildCounterGoogleCloudDatacatalogV1DatabaseTableSpec++;
   if (buildCounterGoogleCloudDatacatalogV1DatabaseTableSpec < 3) {
+    o.dataplexTable = buildGoogleCloudDatacatalogV1DataplexTableSpec();
     o.type = 'foo';
   }
   buildCounterGoogleCloudDatacatalogV1DatabaseTableSpec--;
@@ -556,6 +564,7 @@
     api.GoogleCloudDatacatalogV1DatabaseTableSpec o) {
   buildCounterGoogleCloudDatacatalogV1DatabaseTableSpec++;
   if (buildCounterGoogleCloudDatacatalogV1DatabaseTableSpec < 3) {
+    checkGoogleCloudDatacatalogV1DataplexTableSpec(o.dataplexTable!);
     unittest.expect(
       o.type!,
       unittest.equals('foo'),
@@ -564,12 +573,146 @@
   buildCounterGoogleCloudDatacatalogV1DatabaseTableSpec--;
 }
 
-core.Map<core.String, core.String> buildUnnamed4() => {
+core.int buildCounterGoogleCloudDatacatalogV1DataplexExternalTable = 0;
+api.GoogleCloudDatacatalogV1DataplexExternalTable
+    buildGoogleCloudDatacatalogV1DataplexExternalTable() {
+  final o = api.GoogleCloudDatacatalogV1DataplexExternalTable();
+  buildCounterGoogleCloudDatacatalogV1DataplexExternalTable++;
+  if (buildCounterGoogleCloudDatacatalogV1DataplexExternalTable < 3) {
+    o.dataCatalogEntry = 'foo';
+    o.fullyQualifiedName = 'foo';
+    o.googleCloudResource = 'foo';
+    o.system = 'foo';
+  }
+  buildCounterGoogleCloudDatacatalogV1DataplexExternalTable--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1DataplexExternalTable(
+    api.GoogleCloudDatacatalogV1DataplexExternalTable o) {
+  buildCounterGoogleCloudDatacatalogV1DataplexExternalTable++;
+  if (buildCounterGoogleCloudDatacatalogV1DataplexExternalTable < 3) {
+    unittest.expect(
+      o.dataCatalogEntry!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.fullyQualifiedName!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.googleCloudResource!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.system!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDatacatalogV1DataplexExternalTable--;
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1DataplexFilesetSpec = 0;
+api.GoogleCloudDatacatalogV1DataplexFilesetSpec
+    buildGoogleCloudDatacatalogV1DataplexFilesetSpec() {
+  final o = api.GoogleCloudDatacatalogV1DataplexFilesetSpec();
+  buildCounterGoogleCloudDatacatalogV1DataplexFilesetSpec++;
+  if (buildCounterGoogleCloudDatacatalogV1DataplexFilesetSpec < 3) {
+    o.dataplexSpec = buildGoogleCloudDatacatalogV1DataplexSpec();
+  }
+  buildCounterGoogleCloudDatacatalogV1DataplexFilesetSpec--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1DataplexFilesetSpec(
+    api.GoogleCloudDatacatalogV1DataplexFilesetSpec o) {
+  buildCounterGoogleCloudDatacatalogV1DataplexFilesetSpec++;
+  if (buildCounterGoogleCloudDatacatalogV1DataplexFilesetSpec < 3) {
+    checkGoogleCloudDatacatalogV1DataplexSpec(o.dataplexSpec!);
+  }
+  buildCounterGoogleCloudDatacatalogV1DataplexFilesetSpec--;
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1DataplexSpec = 0;
+api.GoogleCloudDatacatalogV1DataplexSpec
+    buildGoogleCloudDatacatalogV1DataplexSpec() {
+  final o = api.GoogleCloudDatacatalogV1DataplexSpec();
+  buildCounterGoogleCloudDatacatalogV1DataplexSpec++;
+  if (buildCounterGoogleCloudDatacatalogV1DataplexSpec < 3) {
+    o.asset = 'foo';
+    o.compressionFormat = 'foo';
+    o.dataFormat = buildGoogleCloudDatacatalogV1PhysicalSchema();
+    o.projectId = 'foo';
+  }
+  buildCounterGoogleCloudDatacatalogV1DataplexSpec--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1DataplexSpec(
+    api.GoogleCloudDatacatalogV1DataplexSpec o) {
+  buildCounterGoogleCloudDatacatalogV1DataplexSpec++;
+  if (buildCounterGoogleCloudDatacatalogV1DataplexSpec < 3) {
+    unittest.expect(
+      o.asset!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.compressionFormat!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDatacatalogV1PhysicalSchema(o.dataFormat!);
+    unittest.expect(
+      o.projectId!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDatacatalogV1DataplexSpec--;
+}
+
+core.List<api.GoogleCloudDatacatalogV1DataplexExternalTable> buildUnnamed4() =>
+    [
+      buildGoogleCloudDatacatalogV1DataplexExternalTable(),
+      buildGoogleCloudDatacatalogV1DataplexExternalTable(),
+    ];
+
+void checkUnnamed4(
+    core.List<api.GoogleCloudDatacatalogV1DataplexExternalTable> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDatacatalogV1DataplexExternalTable(o[0]);
+  checkGoogleCloudDatacatalogV1DataplexExternalTable(o[1]);
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1DataplexTableSpec = 0;
+api.GoogleCloudDatacatalogV1DataplexTableSpec
+    buildGoogleCloudDatacatalogV1DataplexTableSpec() {
+  final o = api.GoogleCloudDatacatalogV1DataplexTableSpec();
+  buildCounterGoogleCloudDatacatalogV1DataplexTableSpec++;
+  if (buildCounterGoogleCloudDatacatalogV1DataplexTableSpec < 3) {
+    o.dataplexSpec = buildGoogleCloudDatacatalogV1DataplexSpec();
+    o.externalTables = buildUnnamed4();
+    o.userManaged = true;
+  }
+  buildCounterGoogleCloudDatacatalogV1DataplexTableSpec--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1DataplexTableSpec(
+    api.GoogleCloudDatacatalogV1DataplexTableSpec o) {
+  buildCounterGoogleCloudDatacatalogV1DataplexTableSpec++;
+  if (buildCounterGoogleCloudDatacatalogV1DataplexTableSpec < 3) {
+    checkGoogleCloudDatacatalogV1DataplexSpec(o.dataplexSpec!);
+    checkUnnamed4(o.externalTables!);
+    unittest.expect(o.userManaged!, unittest.isTrue);
+  }
+  buildCounterGoogleCloudDatacatalogV1DataplexTableSpec--;
+}
+
+core.Map<core.String, core.String> buildUnnamed5() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed4(core.Map<core.String, core.String> o) {
+void checkUnnamed5(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -596,10 +739,11 @@
     o.databaseTableSpec = buildGoogleCloudDatacatalogV1DatabaseTableSpec();
     o.description = 'foo';
     o.displayName = 'foo';
+    o.filesetSpec = buildGoogleCloudDatacatalogV1FilesetSpec();
     o.fullyQualifiedName = 'foo';
     o.gcsFilesetSpec = buildGoogleCloudDatacatalogV1GcsFilesetSpec();
     o.integratedSystem = 'foo';
-    o.labels = buildUnnamed4();
+    o.labels = buildUnnamed5();
     o.linkedResource = 'foo';
     o.name = 'foo';
     o.personalDetails = buildGoogleCloudDatacatalogV1PersonalDetails();
@@ -634,6 +778,7 @@
       o.displayName!,
       unittest.equals('foo'),
     );
+    checkGoogleCloudDatacatalogV1FilesetSpec(o.filesetSpec!);
     unittest.expect(
       o.fullyQualifiedName!,
       unittest.equals('foo'),
@@ -643,7 +788,7 @@
       o.integratedSystem!,
       unittest.equals('foo'),
     );
-    checkUnnamed4(o.labels!);
+    checkUnnamed5(o.labels!);
     unittest.expect(
       o.linkedResource!,
       unittest.equals('foo'),
@@ -733,12 +878,12 @@
   buildCounterGoogleCloudDatacatalogV1EntryOverview--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1SerializedTaxonomy> buildUnnamed5() => [
+core.List<api.GoogleCloudDatacatalogV1SerializedTaxonomy> buildUnnamed6() => [
       buildGoogleCloudDatacatalogV1SerializedTaxonomy(),
       buildGoogleCloudDatacatalogV1SerializedTaxonomy(),
     ];
 
-void checkUnnamed5(
+void checkUnnamed6(
     core.List<api.GoogleCloudDatacatalogV1SerializedTaxonomy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1SerializedTaxonomy(o[0]);
@@ -751,7 +896,7 @@
   final o = api.GoogleCloudDatacatalogV1ExportTaxonomiesResponse();
   buildCounterGoogleCloudDatacatalogV1ExportTaxonomiesResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ExportTaxonomiesResponse < 3) {
-    o.taxonomies = buildUnnamed5();
+    o.taxonomies = buildUnnamed6();
   }
   buildCounterGoogleCloudDatacatalogV1ExportTaxonomiesResponse--;
   return o;
@@ -761,7 +906,7 @@
     api.GoogleCloudDatacatalogV1ExportTaxonomiesResponse o) {
   buildCounterGoogleCloudDatacatalogV1ExportTaxonomiesResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ExportTaxonomiesResponse < 3) {
-    checkUnnamed5(o.taxonomies!);
+    checkUnnamed6(o.taxonomies!);
   }
   buildCounterGoogleCloudDatacatalogV1ExportTaxonomiesResponse--;
 }
@@ -792,12 +937,12 @@
 }
 
 core.List<api.GoogleCloudDatacatalogV1FieldTypeEnumTypeEnumValue>
-    buildUnnamed6() => [
+    buildUnnamed7() => [
           buildGoogleCloudDatacatalogV1FieldTypeEnumTypeEnumValue(),
           buildGoogleCloudDatacatalogV1FieldTypeEnumTypeEnumValue(),
         ];
 
-void checkUnnamed6(
+void checkUnnamed7(
     core.List<api.GoogleCloudDatacatalogV1FieldTypeEnumTypeEnumValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1FieldTypeEnumTypeEnumValue(o[0]);
@@ -810,7 +955,7 @@
   final o = api.GoogleCloudDatacatalogV1FieldTypeEnumType();
   buildCounterGoogleCloudDatacatalogV1FieldTypeEnumType++;
   if (buildCounterGoogleCloudDatacatalogV1FieldTypeEnumType < 3) {
-    o.allowedValues = buildUnnamed6();
+    o.allowedValues = buildUnnamed7();
   }
   buildCounterGoogleCloudDatacatalogV1FieldTypeEnumType--;
   return o;
@@ -820,7 +965,7 @@
     api.GoogleCloudDatacatalogV1FieldTypeEnumType o) {
   buildCounterGoogleCloudDatacatalogV1FieldTypeEnumType++;
   if (buildCounterGoogleCloudDatacatalogV1FieldTypeEnumType < 3) {
-    checkUnnamed6(o.allowedValues!);
+    checkUnnamed7(o.allowedValues!);
   }
   buildCounterGoogleCloudDatacatalogV1FieldTypeEnumType--;
 }
@@ -849,6 +994,27 @@
   buildCounterGoogleCloudDatacatalogV1FieldTypeEnumTypeEnumValue--;
 }
 
+core.int buildCounterGoogleCloudDatacatalogV1FilesetSpec = 0;
+api.GoogleCloudDatacatalogV1FilesetSpec
+    buildGoogleCloudDatacatalogV1FilesetSpec() {
+  final o = api.GoogleCloudDatacatalogV1FilesetSpec();
+  buildCounterGoogleCloudDatacatalogV1FilesetSpec++;
+  if (buildCounterGoogleCloudDatacatalogV1FilesetSpec < 3) {
+    o.dataplexFileset = buildGoogleCloudDatacatalogV1DataplexFilesetSpec();
+  }
+  buildCounterGoogleCloudDatacatalogV1FilesetSpec--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1FilesetSpec(
+    api.GoogleCloudDatacatalogV1FilesetSpec o) {
+  buildCounterGoogleCloudDatacatalogV1FilesetSpec++;
+  if (buildCounterGoogleCloudDatacatalogV1FilesetSpec < 3) {
+    checkGoogleCloudDatacatalogV1DataplexFilesetSpec(o.dataplexFileset!);
+  }
+  buildCounterGoogleCloudDatacatalogV1FilesetSpec--;
+}
+
 core.int buildCounterGoogleCloudDatacatalogV1GcsFileSpec = 0;
 api.GoogleCloudDatacatalogV1GcsFileSpec
     buildGoogleCloudDatacatalogV1GcsFileSpec() {
@@ -880,12 +1046,12 @@
   buildCounterGoogleCloudDatacatalogV1GcsFileSpec--;
 }
 
-core.List<core.String> buildUnnamed7() => [
+core.List<core.String> buildUnnamed8() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed7(core.List<core.String> o) {
+void checkUnnamed8(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -897,12 +1063,12 @@
   );
 }
 
-core.List<api.GoogleCloudDatacatalogV1GcsFileSpec> buildUnnamed8() => [
+core.List<api.GoogleCloudDatacatalogV1GcsFileSpec> buildUnnamed9() => [
       buildGoogleCloudDatacatalogV1GcsFileSpec(),
       buildGoogleCloudDatacatalogV1GcsFileSpec(),
     ];
 
-void checkUnnamed8(core.List<api.GoogleCloudDatacatalogV1GcsFileSpec> o) {
+void checkUnnamed9(core.List<api.GoogleCloudDatacatalogV1GcsFileSpec> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1GcsFileSpec(o[0]);
   checkGoogleCloudDatacatalogV1GcsFileSpec(o[1]);
@@ -914,8 +1080,8 @@
   final o = api.GoogleCloudDatacatalogV1GcsFilesetSpec();
   buildCounterGoogleCloudDatacatalogV1GcsFilesetSpec++;
   if (buildCounterGoogleCloudDatacatalogV1GcsFilesetSpec < 3) {
-    o.filePatterns = buildUnnamed7();
-    o.sampleGcsFileSpecs = buildUnnamed8();
+    o.filePatterns = buildUnnamed8();
+    o.sampleGcsFileSpecs = buildUnnamed9();
   }
   buildCounterGoogleCloudDatacatalogV1GcsFilesetSpec--;
   return o;
@@ -925,8 +1091,8 @@
     api.GoogleCloudDatacatalogV1GcsFilesetSpec o) {
   buildCounterGoogleCloudDatacatalogV1GcsFilesetSpec++;
   if (buildCounterGoogleCloudDatacatalogV1GcsFilesetSpec < 3) {
-    checkUnnamed7(o.filePatterns!);
-    checkUnnamed8(o.sampleGcsFileSpecs!);
+    checkUnnamed8(o.filePatterns!);
+    checkUnnamed9(o.sampleGcsFileSpecs!);
   }
   buildCounterGoogleCloudDatacatalogV1GcsFilesetSpec--;
 }
@@ -954,12 +1120,12 @@
   buildCounterGoogleCloudDatacatalogV1ImportTaxonomiesRequest--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1Taxonomy> buildUnnamed9() => [
+core.List<api.GoogleCloudDatacatalogV1Taxonomy> buildUnnamed10() => [
       buildGoogleCloudDatacatalogV1Taxonomy(),
       buildGoogleCloudDatacatalogV1Taxonomy(),
     ];
 
-void checkUnnamed9(core.List<api.GoogleCloudDatacatalogV1Taxonomy> o) {
+void checkUnnamed10(core.List<api.GoogleCloudDatacatalogV1Taxonomy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1Taxonomy(o[0]);
   checkGoogleCloudDatacatalogV1Taxonomy(o[1]);
@@ -971,7 +1137,7 @@
   final o = api.GoogleCloudDatacatalogV1ImportTaxonomiesResponse();
   buildCounterGoogleCloudDatacatalogV1ImportTaxonomiesResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ImportTaxonomiesResponse < 3) {
-    o.taxonomies = buildUnnamed9();
+    o.taxonomies = buildUnnamed10();
   }
   buildCounterGoogleCloudDatacatalogV1ImportTaxonomiesResponse--;
   return o;
@@ -981,17 +1147,17 @@
     api.GoogleCloudDatacatalogV1ImportTaxonomiesResponse o) {
   buildCounterGoogleCloudDatacatalogV1ImportTaxonomiesResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ImportTaxonomiesResponse < 3) {
-    checkUnnamed9(o.taxonomies!);
+    checkUnnamed10(o.taxonomies!);
   }
   buildCounterGoogleCloudDatacatalogV1ImportTaxonomiesResponse--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1SerializedTaxonomy> buildUnnamed10() => [
+core.List<api.GoogleCloudDatacatalogV1SerializedTaxonomy> buildUnnamed11() => [
       buildGoogleCloudDatacatalogV1SerializedTaxonomy(),
       buildGoogleCloudDatacatalogV1SerializedTaxonomy(),
     ];
 
-void checkUnnamed10(
+void checkUnnamed11(
     core.List<api.GoogleCloudDatacatalogV1SerializedTaxonomy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1SerializedTaxonomy(o[0]);
@@ -1004,7 +1170,7 @@
   final o = api.GoogleCloudDatacatalogV1InlineSource();
   buildCounterGoogleCloudDatacatalogV1InlineSource++;
   if (buildCounterGoogleCloudDatacatalogV1InlineSource < 3) {
-    o.taxonomies = buildUnnamed10();
+    o.taxonomies = buildUnnamed11();
   }
   buildCounterGoogleCloudDatacatalogV1InlineSource--;
   return o;
@@ -1014,17 +1180,17 @@
     api.GoogleCloudDatacatalogV1InlineSource o) {
   buildCounterGoogleCloudDatacatalogV1InlineSource++;
   if (buildCounterGoogleCloudDatacatalogV1InlineSource < 3) {
-    checkUnnamed10(o.taxonomies!);
+    checkUnnamed11(o.taxonomies!);
   }
   buildCounterGoogleCloudDatacatalogV1InlineSource--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1Entry> buildUnnamed11() => [
+core.List<api.GoogleCloudDatacatalogV1Entry> buildUnnamed12() => [
       buildGoogleCloudDatacatalogV1Entry(),
       buildGoogleCloudDatacatalogV1Entry(),
     ];
 
-void checkUnnamed11(core.List<api.GoogleCloudDatacatalogV1Entry> o) {
+void checkUnnamed12(core.List<api.GoogleCloudDatacatalogV1Entry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1Entry(o[0]);
   checkGoogleCloudDatacatalogV1Entry(o[1]);
@@ -1036,7 +1202,7 @@
   final o = api.GoogleCloudDatacatalogV1ListEntriesResponse();
   buildCounterGoogleCloudDatacatalogV1ListEntriesResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ListEntriesResponse < 3) {
-    o.entries = buildUnnamed11();
+    o.entries = buildUnnamed12();
     o.nextPageToken = 'foo';
   }
   buildCounterGoogleCloudDatacatalogV1ListEntriesResponse--;
@@ -1047,7 +1213,7 @@
     api.GoogleCloudDatacatalogV1ListEntriesResponse o) {
   buildCounterGoogleCloudDatacatalogV1ListEntriesResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ListEntriesResponse < 3) {
-    checkUnnamed11(o.entries!);
+    checkUnnamed12(o.entries!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1056,12 +1222,12 @@
   buildCounterGoogleCloudDatacatalogV1ListEntriesResponse--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1EntryGroup> buildUnnamed12() => [
+core.List<api.GoogleCloudDatacatalogV1EntryGroup> buildUnnamed13() => [
       buildGoogleCloudDatacatalogV1EntryGroup(),
       buildGoogleCloudDatacatalogV1EntryGroup(),
     ];
 
-void checkUnnamed12(core.List<api.GoogleCloudDatacatalogV1EntryGroup> o) {
+void checkUnnamed13(core.List<api.GoogleCloudDatacatalogV1EntryGroup> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1EntryGroup(o[0]);
   checkGoogleCloudDatacatalogV1EntryGroup(o[1]);
@@ -1073,7 +1239,7 @@
   final o = api.GoogleCloudDatacatalogV1ListEntryGroupsResponse();
   buildCounterGoogleCloudDatacatalogV1ListEntryGroupsResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ListEntryGroupsResponse < 3) {
-    o.entryGroups = buildUnnamed12();
+    o.entryGroups = buildUnnamed13();
     o.nextPageToken = 'foo';
   }
   buildCounterGoogleCloudDatacatalogV1ListEntryGroupsResponse--;
@@ -1084,7 +1250,7 @@
     api.GoogleCloudDatacatalogV1ListEntryGroupsResponse o) {
   buildCounterGoogleCloudDatacatalogV1ListEntryGroupsResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ListEntryGroupsResponse < 3) {
-    checkUnnamed12(o.entryGroups!);
+    checkUnnamed13(o.entryGroups!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1093,12 +1259,12 @@
   buildCounterGoogleCloudDatacatalogV1ListEntryGroupsResponse--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1PolicyTag> buildUnnamed13() => [
+core.List<api.GoogleCloudDatacatalogV1PolicyTag> buildUnnamed14() => [
       buildGoogleCloudDatacatalogV1PolicyTag(),
       buildGoogleCloudDatacatalogV1PolicyTag(),
     ];
 
-void checkUnnamed13(core.List<api.GoogleCloudDatacatalogV1PolicyTag> o) {
+void checkUnnamed14(core.List<api.GoogleCloudDatacatalogV1PolicyTag> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1PolicyTag(o[0]);
   checkGoogleCloudDatacatalogV1PolicyTag(o[1]);
@@ -1111,7 +1277,7 @@
   buildCounterGoogleCloudDatacatalogV1ListPolicyTagsResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ListPolicyTagsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.policyTags = buildUnnamed13();
+    o.policyTags = buildUnnamed14();
   }
   buildCounterGoogleCloudDatacatalogV1ListPolicyTagsResponse--;
   return o;
@@ -1125,17 +1291,17 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed13(o.policyTags!);
+    checkUnnamed14(o.policyTags!);
   }
   buildCounterGoogleCloudDatacatalogV1ListPolicyTagsResponse--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1Tag> buildUnnamed14() => [
+core.List<api.GoogleCloudDatacatalogV1Tag> buildUnnamed15() => [
       buildGoogleCloudDatacatalogV1Tag(),
       buildGoogleCloudDatacatalogV1Tag(),
     ];
 
-void checkUnnamed14(core.List<api.GoogleCloudDatacatalogV1Tag> o) {
+void checkUnnamed15(core.List<api.GoogleCloudDatacatalogV1Tag> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1Tag(o[0]);
   checkGoogleCloudDatacatalogV1Tag(o[1]);
@@ -1148,7 +1314,7 @@
   buildCounterGoogleCloudDatacatalogV1ListTagsResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ListTagsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.tags = buildUnnamed14();
+    o.tags = buildUnnamed15();
   }
   buildCounterGoogleCloudDatacatalogV1ListTagsResponse--;
   return o;
@@ -1162,17 +1328,17 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed14(o.tags!);
+    checkUnnamed15(o.tags!);
   }
   buildCounterGoogleCloudDatacatalogV1ListTagsResponse--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1Taxonomy> buildUnnamed15() => [
+core.List<api.GoogleCloudDatacatalogV1Taxonomy> buildUnnamed16() => [
       buildGoogleCloudDatacatalogV1Taxonomy(),
       buildGoogleCloudDatacatalogV1Taxonomy(),
     ];
 
-void checkUnnamed15(core.List<api.GoogleCloudDatacatalogV1Taxonomy> o) {
+void checkUnnamed16(core.List<api.GoogleCloudDatacatalogV1Taxonomy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1Taxonomy(o[0]);
   checkGoogleCloudDatacatalogV1Taxonomy(o[1]);
@@ -1185,7 +1351,7 @@
   buildCounterGoogleCloudDatacatalogV1ListTaxonomiesResponse++;
   if (buildCounterGoogleCloudDatacatalogV1ListTaxonomiesResponse < 3) {
     o.nextPageToken = 'foo';
-    o.taxonomies = buildUnnamed15();
+    o.taxonomies = buildUnnamed16();
   }
   buildCounterGoogleCloudDatacatalogV1ListTaxonomiesResponse--;
   return o;
@@ -1199,7 +1365,7 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed15(o.taxonomies!);
+    checkUnnamed16(o.taxonomies!);
   }
   buildCounterGoogleCloudDatacatalogV1ListTaxonomiesResponse--;
 }
@@ -1272,12 +1438,166 @@
   buildCounterGoogleCloudDatacatalogV1PersonalDetails--;
 }
 
-core.List<core.String> buildUnnamed16() => [
+core.int buildCounterGoogleCloudDatacatalogV1PhysicalSchema = 0;
+api.GoogleCloudDatacatalogV1PhysicalSchema
+    buildGoogleCloudDatacatalogV1PhysicalSchema() {
+  final o = api.GoogleCloudDatacatalogV1PhysicalSchema();
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchema < 3) {
+    o.avro = buildGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema();
+    o.csv = buildGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema();
+    o.orc = buildGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema();
+    o.parquet = buildGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema();
+    o.protobuf = buildGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema();
+    o.thrift = buildGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema();
+  }
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchema--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1PhysicalSchema(
+    api.GoogleCloudDatacatalogV1PhysicalSchema o) {
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchema < 3) {
+    checkGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema(o.avro!);
+    checkGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema(o.csv!);
+    checkGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema(o.orc!);
+    checkGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema(o.parquet!);
+    checkGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema(o.protobuf!);
+    checkGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema(o.thrift!);
+  }
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchema--;
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema = 0;
+api.GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema
+    buildGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema() {
+  final o = api.GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema();
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema < 3) {
+    o.text = 'foo';
+  }
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema(
+    api.GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema o) {
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema < 3) {
+    unittest.expect(
+      o.text!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema--;
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema = 0;
+api.GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema
+    buildGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema() {
+  final o = api.GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema();
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema < 3) {}
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema(
+    api.GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema o) {
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema < 3) {}
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema--;
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema = 0;
+api.GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema
+    buildGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema() {
+  final o = api.GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema();
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema < 3) {}
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema(
+    api.GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema o) {
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema < 3) {}
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema--;
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema = 0;
+api.GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema
+    buildGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema() {
+  final o = api.GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema();
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema < 3) {}
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema(
+    api.GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema o) {
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema < 3) {}
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema--;
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema = 0;
+api.GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema
+    buildGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema() {
+  final o = api.GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema();
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema < 3) {
+    o.text = 'foo';
+  }
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema(
+    api.GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema o) {
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema < 3) {
+    unittest.expect(
+      o.text!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema--;
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema = 0;
+api.GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema
+    buildGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema() {
+  final o = api.GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema();
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema < 3) {
+    o.text = 'foo';
+  }
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema(
+    api.GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema o) {
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema++;
+  if (buildCounterGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema < 3) {
+    unittest.expect(
+      o.text!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema--;
+}
+
+core.List<core.String> buildUnnamed17() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed16(core.List<core.String> o) {
+void checkUnnamed17(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1294,7 +1614,7 @@
   final o = api.GoogleCloudDatacatalogV1PolicyTag();
   buildCounterGoogleCloudDatacatalogV1PolicyTag++;
   if (buildCounterGoogleCloudDatacatalogV1PolicyTag < 3) {
-    o.childPolicyTags = buildUnnamed16();
+    o.childPolicyTags = buildUnnamed17();
     o.description = 'foo';
     o.displayName = 'foo';
     o.name = 'foo';
@@ -1308,7 +1628,7 @@
     api.GoogleCloudDatacatalogV1PolicyTag o) {
   buildCounterGoogleCloudDatacatalogV1PolicyTag++;
   if (buildCounterGoogleCloudDatacatalogV1PolicyTag < 3) {
-    checkUnnamed16(o.childPolicyTags!);
+    checkUnnamed17(o.childPolicyTags!);
     unittest.expect(
       o.description!,
       unittest.equals('foo'),
@@ -1403,12 +1723,12 @@
   buildCounterGoogleCloudDatacatalogV1ReplaceTaxonomyRequest--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1RoutineSpecArgument> buildUnnamed17() => [
+core.List<api.GoogleCloudDatacatalogV1RoutineSpecArgument> buildUnnamed18() => [
       buildGoogleCloudDatacatalogV1RoutineSpecArgument(),
       buildGoogleCloudDatacatalogV1RoutineSpecArgument(),
     ];
 
-void checkUnnamed17(
+void checkUnnamed18(
     core.List<api.GoogleCloudDatacatalogV1RoutineSpecArgument> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1RoutineSpecArgument(o[0]);
@@ -1425,7 +1745,7 @@
     o.definitionBody = 'foo';
     o.language = 'foo';
     o.returnType = 'foo';
-    o.routineArguments = buildUnnamed17();
+    o.routineArguments = buildUnnamed18();
     o.routineType = 'foo';
   }
   buildCounterGoogleCloudDatacatalogV1RoutineSpec--;
@@ -1449,7 +1769,7 @@
       o.returnType!,
       unittest.equals('foo'),
     );
-    checkUnnamed17(o.routineArguments!);
+    checkUnnamed18(o.routineArguments!);
     unittest.expect(
       o.routineType!,
       unittest.equals('foo'),
@@ -1492,12 +1812,12 @@
   buildCounterGoogleCloudDatacatalogV1RoutineSpecArgument--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1ColumnSchema> buildUnnamed18() => [
+core.List<api.GoogleCloudDatacatalogV1ColumnSchema> buildUnnamed19() => [
       buildGoogleCloudDatacatalogV1ColumnSchema(),
       buildGoogleCloudDatacatalogV1ColumnSchema(),
     ];
 
-void checkUnnamed18(core.List<api.GoogleCloudDatacatalogV1ColumnSchema> o) {
+void checkUnnamed19(core.List<api.GoogleCloudDatacatalogV1ColumnSchema> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1ColumnSchema(o[0]);
   checkGoogleCloudDatacatalogV1ColumnSchema(o[1]);
@@ -1508,7 +1828,7 @@
   final o = api.GoogleCloudDatacatalogV1Schema();
   buildCounterGoogleCloudDatacatalogV1Schema++;
   if (buildCounterGoogleCloudDatacatalogV1Schema < 3) {
-    o.columns = buildUnnamed18();
+    o.columns = buildUnnamed19();
   }
   buildCounterGoogleCloudDatacatalogV1Schema--;
   return o;
@@ -1517,7 +1837,7 @@
 void checkGoogleCloudDatacatalogV1Schema(api.GoogleCloudDatacatalogV1Schema o) {
   buildCounterGoogleCloudDatacatalogV1Schema++;
   if (buildCounterGoogleCloudDatacatalogV1Schema < 3) {
-    checkUnnamed18(o.columns!);
+    checkUnnamed19(o.columns!);
   }
   buildCounterGoogleCloudDatacatalogV1Schema--;
 }
@@ -1563,23 +1883,6 @@
   buildCounterGoogleCloudDatacatalogV1SearchCatalogRequest--;
 }
 
-core.List<core.String> buildUnnamed19() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed19(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed20() => [
       'foo',
       'foo',
@@ -1614,6 +1917,23 @@
   );
 }
 
+core.List<core.String> buildUnnamed22() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed22(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGoogleCloudDatacatalogV1SearchCatalogRequestScope = 0;
 api.GoogleCloudDatacatalogV1SearchCatalogRequestScope
     buildGoogleCloudDatacatalogV1SearchCatalogRequestScope() {
@@ -1621,10 +1941,10 @@
   buildCounterGoogleCloudDatacatalogV1SearchCatalogRequestScope++;
   if (buildCounterGoogleCloudDatacatalogV1SearchCatalogRequestScope < 3) {
     o.includeGcpPublicDatasets = true;
-    o.includeOrgIds = buildUnnamed19();
-    o.includeProjectIds = buildUnnamed20();
+    o.includeOrgIds = buildUnnamed20();
+    o.includeProjectIds = buildUnnamed21();
     o.includePublicTagTemplates = true;
-    o.restrictedLocations = buildUnnamed21();
+    o.restrictedLocations = buildUnnamed22();
     o.starredOnly = true;
   }
   buildCounterGoogleCloudDatacatalogV1SearchCatalogRequestScope--;
@@ -1636,33 +1956,33 @@
   buildCounterGoogleCloudDatacatalogV1SearchCatalogRequestScope++;
   if (buildCounterGoogleCloudDatacatalogV1SearchCatalogRequestScope < 3) {
     unittest.expect(o.includeGcpPublicDatasets!, unittest.isTrue);
-    checkUnnamed19(o.includeOrgIds!);
-    checkUnnamed20(o.includeProjectIds!);
+    checkUnnamed20(o.includeOrgIds!);
+    checkUnnamed21(o.includeProjectIds!);
     unittest.expect(o.includePublicTagTemplates!, unittest.isTrue);
-    checkUnnamed21(o.restrictedLocations!);
+    checkUnnamed22(o.restrictedLocations!);
     unittest.expect(o.starredOnly!, unittest.isTrue);
   }
   buildCounterGoogleCloudDatacatalogV1SearchCatalogRequestScope--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1SearchCatalogResult> buildUnnamed22() => [
+core.List<api.GoogleCloudDatacatalogV1SearchCatalogResult> buildUnnamed23() => [
       buildGoogleCloudDatacatalogV1SearchCatalogResult(),
       buildGoogleCloudDatacatalogV1SearchCatalogResult(),
     ];
 
-void checkUnnamed22(
+void checkUnnamed23(
     core.List<api.GoogleCloudDatacatalogV1SearchCatalogResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1SearchCatalogResult(o[0]);
   checkGoogleCloudDatacatalogV1SearchCatalogResult(o[1]);
 }
 
-core.List<core.String> buildUnnamed23() => [
+core.List<core.String> buildUnnamed24() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed23(core.List<core.String> o) {
+void checkUnnamed24(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1681,8 +2001,8 @@
   buildCounterGoogleCloudDatacatalogV1SearchCatalogResponse++;
   if (buildCounterGoogleCloudDatacatalogV1SearchCatalogResponse < 3) {
     o.nextPageToken = 'foo';
-    o.results = buildUnnamed22();
-    o.unreachable = buildUnnamed23();
+    o.results = buildUnnamed23();
+    o.unreachable = buildUnnamed24();
   }
   buildCounterGoogleCloudDatacatalogV1SearchCatalogResponse--;
   return o;
@@ -1696,8 +2016,8 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed22(o.results!);
-    checkUnnamed23(o.unreachable!);
+    checkUnnamed23(o.results!);
+    checkUnnamed24(o.unreachable!);
   }
   buildCounterGoogleCloudDatacatalogV1SearchCatalogResponse--;
 }
@@ -1771,12 +2091,12 @@
   buildCounterGoogleCloudDatacatalogV1SearchCatalogResult--;
 }
 
-core.List<api.GoogleCloudDatacatalogV1SerializedPolicyTag> buildUnnamed24() => [
+core.List<api.GoogleCloudDatacatalogV1SerializedPolicyTag> buildUnnamed25() => [
       buildGoogleCloudDatacatalogV1SerializedPolicyTag(),
       buildGoogleCloudDatacatalogV1SerializedPolicyTag(),
     ];
 
-void checkUnnamed24(
+void checkUnnamed25(
     core.List<api.GoogleCloudDatacatalogV1SerializedPolicyTag> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1SerializedPolicyTag(o[0]);
@@ -1789,7 +2109,7 @@
   final o = api.GoogleCloudDatacatalogV1SerializedPolicyTag();
   buildCounterGoogleCloudDatacatalogV1SerializedPolicyTag++;
   if (buildCounterGoogleCloudDatacatalogV1SerializedPolicyTag < 3) {
-    o.childPolicyTags = buildUnnamed24();
+    o.childPolicyTags = buildUnnamed25();
     o.description = 'foo';
     o.displayName = 'foo';
     o.policyTag = 'foo';
@@ -1802,7 +2122,7 @@
     api.GoogleCloudDatacatalogV1SerializedPolicyTag o) {
   buildCounterGoogleCloudDatacatalogV1SerializedPolicyTag++;
   if (buildCounterGoogleCloudDatacatalogV1SerializedPolicyTag < 3) {
-    checkUnnamed24(o.childPolicyTags!);
+    checkUnnamed25(o.childPolicyTags!);
     unittest.expect(
       o.description!,
       unittest.equals('foo'),
@@ -1819,12 +2139,12 @@
   buildCounterGoogleCloudDatacatalogV1SerializedPolicyTag--;
 }
 
-core.List<core.String> buildUnnamed25() => [
+core.List<core.String> buildUnnamed26() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed25(core.List<core.String> o) {
+void checkUnnamed26(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1836,12 +2156,12 @@
   );
 }
 
-core.List<api.GoogleCloudDatacatalogV1SerializedPolicyTag> buildUnnamed26() => [
+core.List<api.GoogleCloudDatacatalogV1SerializedPolicyTag> buildUnnamed27() => [
       buildGoogleCloudDatacatalogV1SerializedPolicyTag(),
       buildGoogleCloudDatacatalogV1SerializedPolicyTag(),
     ];
 
-void checkUnnamed26(
+void checkUnnamed27(
     core.List<api.GoogleCloudDatacatalogV1SerializedPolicyTag> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1SerializedPolicyTag(o[0]);
@@ -1854,10 +2174,10 @@
   final o = api.GoogleCloudDatacatalogV1SerializedTaxonomy();
   buildCounterGoogleCloudDatacatalogV1SerializedTaxonomy++;
   if (buildCounterGoogleCloudDatacatalogV1SerializedTaxonomy < 3) {
-    o.activatedPolicyTypes = buildUnnamed25();
+    o.activatedPolicyTypes = buildUnnamed26();
     o.description = 'foo';
     o.displayName = 'foo';
-    o.policyTags = buildUnnamed26();
+    o.policyTags = buildUnnamed27();
   }
   buildCounterGoogleCloudDatacatalogV1SerializedTaxonomy--;
   return o;
@@ -1867,7 +2187,7 @@
     api.GoogleCloudDatacatalogV1SerializedTaxonomy o) {
   buildCounterGoogleCloudDatacatalogV1SerializedTaxonomy++;
   if (buildCounterGoogleCloudDatacatalogV1SerializedTaxonomy < 3) {
-    checkUnnamed25(o.activatedPolicyTypes!);
+    checkUnnamed26(o.activatedPolicyTypes!);
     unittest.expect(
       o.description!,
       unittest.equals('foo'),
@@ -1876,7 +2196,7 @@
       o.displayName!,
       unittest.equals('foo'),
     );
-    checkUnnamed26(o.policyTags!);
+    checkUnnamed27(o.policyTags!);
   }
   buildCounterGoogleCloudDatacatalogV1SerializedTaxonomy--;
 }
@@ -1915,6 +2235,49 @@
   buildCounterGoogleCloudDatacatalogV1StarEntryResponse--;
 }
 
+core.List<core.String> buildUnnamed28() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed28(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDatacatalogV1StorageProperties = 0;
+api.GoogleCloudDatacatalogV1StorageProperties
+    buildGoogleCloudDatacatalogV1StorageProperties() {
+  final o = api.GoogleCloudDatacatalogV1StorageProperties();
+  buildCounterGoogleCloudDatacatalogV1StorageProperties++;
+  if (buildCounterGoogleCloudDatacatalogV1StorageProperties < 3) {
+    o.filePattern = buildUnnamed28();
+    o.fileType = 'foo';
+  }
+  buildCounterGoogleCloudDatacatalogV1StorageProperties--;
+  return o;
+}
+
+void checkGoogleCloudDatacatalogV1StorageProperties(
+    api.GoogleCloudDatacatalogV1StorageProperties o) {
+  buildCounterGoogleCloudDatacatalogV1StorageProperties++;
+  if (buildCounterGoogleCloudDatacatalogV1StorageProperties < 3) {
+    checkUnnamed28(o.filePattern!);
+    unittest.expect(
+      o.fileType!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDatacatalogV1StorageProperties--;
+}
+
 core.int buildCounterGoogleCloudDatacatalogV1SystemTimestamps = 0;
 api.GoogleCloudDatacatalogV1SystemTimestamps
     buildGoogleCloudDatacatalogV1SystemTimestamps() {
@@ -1972,13 +2335,13 @@
   buildCounterGoogleCloudDatacatalogV1TableSpec--;
 }
 
-core.Map<core.String, api.GoogleCloudDatacatalogV1TagField> buildUnnamed27() =>
+core.Map<core.String, api.GoogleCloudDatacatalogV1TagField> buildUnnamed29() =>
     {
       'x': buildGoogleCloudDatacatalogV1TagField(),
       'y': buildGoogleCloudDatacatalogV1TagField(),
     };
 
-void checkUnnamed27(
+void checkUnnamed29(
     core.Map<core.String, api.GoogleCloudDatacatalogV1TagField> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1TagField(o['x']!);
@@ -1991,7 +2354,7 @@
   buildCounterGoogleCloudDatacatalogV1Tag++;
   if (buildCounterGoogleCloudDatacatalogV1Tag < 3) {
     o.column = 'foo';
-    o.fields = buildUnnamed27();
+    o.fields = buildUnnamed29();
     o.name = 'foo';
     o.template = 'foo';
     o.templateDisplayName = 'foo';
@@ -2007,7 +2370,7 @@
       o.column!,
       unittest.equals('foo'),
     );
-    checkUnnamed27(o.fields!);
+    checkUnnamed29(o.fields!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -2101,12 +2464,12 @@
 }
 
 core.Map<core.String, api.GoogleCloudDatacatalogV1TagTemplateField>
-    buildUnnamed28() => {
+    buildUnnamed30() => {
           'x': buildGoogleCloudDatacatalogV1TagTemplateField(),
           'y': buildGoogleCloudDatacatalogV1TagTemplateField(),
         };
 
-void checkUnnamed28(
+void checkUnnamed30(
     core.Map<core.String, api.GoogleCloudDatacatalogV1TagTemplateField> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1TagTemplateField(o['x']!);
@@ -2120,7 +2483,7 @@
   buildCounterGoogleCloudDatacatalogV1TagTemplate++;
   if (buildCounterGoogleCloudDatacatalogV1TagTemplate < 3) {
     o.displayName = 'foo';
-    o.fields = buildUnnamed28();
+    o.fields = buildUnnamed30();
     o.isPubliclyReadable = true;
     o.name = 'foo';
   }
@@ -2136,7 +2499,7 @@
       o.displayName!,
       unittest.equals('foo'),
     );
-    checkUnnamed28(o.fields!);
+    checkUnnamed30(o.fields!);
     unittest.expect(o.isPubliclyReadable!, unittest.isTrue);
     unittest.expect(
       o.name!,
@@ -2189,12 +2552,12 @@
   buildCounterGoogleCloudDatacatalogV1TagTemplateField--;
 }
 
-core.List<core.String> buildUnnamed29() => [
+core.List<core.String> buildUnnamed31() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed29(core.List<core.String> o) {
+void checkUnnamed31(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2211,7 +2574,7 @@
   final o = api.GoogleCloudDatacatalogV1Taxonomy();
   buildCounterGoogleCloudDatacatalogV1Taxonomy++;
   if (buildCounterGoogleCloudDatacatalogV1Taxonomy < 3) {
-    o.activatedPolicyTypes = buildUnnamed29();
+    o.activatedPolicyTypes = buildUnnamed31();
     o.description = 'foo';
     o.displayName = 'foo';
     o.name = 'foo';
@@ -2226,7 +2589,7 @@
     api.GoogleCloudDatacatalogV1Taxonomy o) {
   buildCounterGoogleCloudDatacatalogV1Taxonomy++;
   if (buildCounterGoogleCloudDatacatalogV1Taxonomy < 3) {
-    checkUnnamed29(o.activatedPolicyTypes!);
+    checkUnnamed31(o.activatedPolicyTypes!);
     unittest.expect(
       o.description!,
       unittest.equals('foo'),
@@ -2283,12 +2646,12 @@
 }
 
 core.Map<core.String, api.GoogleCloudDatacatalogV1UsageStats>
-    buildUnnamed30() => {
+    buildUnnamed32() => {
           'x': buildGoogleCloudDatacatalogV1UsageStats(),
           'y': buildGoogleCloudDatacatalogV1UsageStats(),
         };
 
-void checkUnnamed30(
+void checkUnnamed32(
     core.Map<core.String, api.GoogleCloudDatacatalogV1UsageStats> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudDatacatalogV1UsageStats(o['x']!);
@@ -2302,7 +2665,7 @@
   buildCounterGoogleCloudDatacatalogV1UsageSignal++;
   if (buildCounterGoogleCloudDatacatalogV1UsageSignal < 3) {
     o.updateTime = 'foo';
-    o.usageWithinTimeRange = buildUnnamed30();
+    o.usageWithinTimeRange = buildUnnamed32();
   }
   buildCounterGoogleCloudDatacatalogV1UsageSignal--;
   return o;
@@ -2316,7 +2679,7 @@
       o.updateTime!,
       unittest.equals('foo'),
     );
-    checkUnnamed30(o.usageWithinTimeRange!);
+    checkUnnamed32(o.usageWithinTimeRange!);
   }
   buildCounterGoogleCloudDatacatalogV1UsageSignal--;
 }
@@ -2383,12 +2746,12 @@
   buildCounterGoogleCloudDatacatalogV1ViewSpec--;
 }
 
-core.List<api.Binding> buildUnnamed31() => [
+core.List<api.Binding> buildUnnamed33() => [
       buildBinding(),
       buildBinding(),
     ];
 
-void checkUnnamed31(core.List<api.Binding> o) {
+void checkUnnamed33(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -2399,7 +2762,7 @@
   final o = api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.bindings = buildUnnamed31();
+    o.bindings = buildUnnamed33();
     o.etag = 'foo';
     o.version = 42;
   }
@@ -2410,7 +2773,7 @@
 void checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed31(o.bindings!);
+    checkUnnamed33(o.bindings!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -2442,12 +2805,12 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-core.List<core.String> buildUnnamed32() => [
+core.List<core.String> buildUnnamed34() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed32(core.List<core.String> o) {
+void checkUnnamed34(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2464,7 +2827,7 @@
   final o = api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed32();
+    o.permissions = buildUnnamed34();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -2473,17 +2836,17 @@
 void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed32(o.permissions!);
+    checkUnnamed34(o.permissions!);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-core.List<core.String> buildUnnamed33() => [
+core.List<core.String> buildUnnamed35() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed33(core.List<core.String> o) {
+void checkUnnamed35(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2500,7 +2863,7 @@
   final o = api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed33();
+    o.permissions = buildUnnamed35();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -2509,17 +2872,17 @@
 void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed33(o.permissions!);
+    checkUnnamed35(o.permissions!);
   }
   buildCounterTestIamPermissionsResponse--;
 }
 
-core.List<core.String> buildUnnamed34() => [
+core.List<core.String> buildUnnamed36() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed34(core.List<core.String> o) {
+void checkUnnamed36(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2717,6 +3080,47 @@
     });
   });
 
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1DataplexExternalTable',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1DataplexExternalTable();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1DataplexExternalTable.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1DataplexExternalTable(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1DataplexFilesetSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1DataplexFilesetSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1DataplexFilesetSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1DataplexFilesetSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1DataplexSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1DataplexSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1DataplexSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1DataplexSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1DataplexTableSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1DataplexTableSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1DataplexTableSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1DataplexTableSpec(od);
+    });
+  });
+
   unittest.group('obj-schema-GoogleCloudDatacatalogV1Entry', () {
     unittest.test('to-json--from-json', () async {
       final o = buildGoogleCloudDatacatalogV1Entry();
@@ -2790,6 +3194,16 @@
     });
   });
 
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1FilesetSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1FilesetSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1FilesetSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1FilesetSpec(od);
+    });
+  });
+
   unittest.group('obj-schema-GoogleCloudDatacatalogV1GcsFileSpec', () {
     unittest.test('to-json--from-json', () async {
       final o = buildGoogleCloudDatacatalogV1GcsFileSpec();
@@ -2929,6 +3343,85 @@
     });
   });
 
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1PhysicalSchema', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1PhysicalSchema();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1PhysicalSchema.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1PhysicalSchema(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1PhysicalSchemaAvroSchema(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1PhysicalSchemaCsvSchema(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1PhysicalSchemaOrcSchema(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1PhysicalSchemaParquetSchema(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1PhysicalSchemaThriftSchema(od);
+    });
+  });
+
   unittest.group('obj-schema-GoogleCloudDatacatalogV1PolicyTag', () {
     unittest.test('to-json--from-json', () async {
       final o = buildGoogleCloudDatacatalogV1PolicyTag();
@@ -3088,6 +3581,16 @@
     });
   });
 
+  unittest.group('obj-schema-GoogleCloudDatacatalogV1StorageProperties', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDatacatalogV1StorageProperties();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDatacatalogV1StorageProperties.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDatacatalogV1StorageProperties(od);
+    });
+  });
+
   unittest.group('obj-schema-GoogleCloudDatacatalogV1SystemTimestamps', () {
     unittest.test('to-json--from-json', () async {
       final o = buildGoogleCloudDatacatalogV1SystemTimestamps();
@@ -5918,7 +6421,7 @@
       final res = api.DataCatalogApi(mock).projects.locations.taxonomies;
       final arg_parent = 'foo';
       final arg_serializedTaxonomies = true;
-      final arg_taxonomies = buildUnnamed34();
+      final arg_taxonomies = buildUnnamed36();
       final arg_$fields = 'foo';
       mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
         final path = (req.url).path;
diff --git a/generated/googleapis/test/dataplex/v1_test.dart b/generated/googleapis/test/dataplex/v1_test.dart
new file mode 100644
index 0000000..ddc70d7
--- /dev/null
+++ b/generated/googleapis/test/dataplex/v1_test.dart
@@ -0,0 +1,9111 @@
+// ignore_for_file: camel_case_types
+// ignore_for_file: cascade_invocations
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_const_declarations
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_final_locals
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_cast
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: unnecessary_string_interpolations
+// ignore_for_file: unused_local_variable
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:googleapis/dataplex/v1.dart' as api;
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import '../test_shared.dart';
+
+core.int buildCounterEmpty = 0;
+api.Empty buildEmpty() {
+  final o = api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+void checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.List<core.String> buildUnnamed0() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed0(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1Action = 0;
+api.GoogleCloudDataplexV1Action buildGoogleCloudDataplexV1Action() {
+  final o = api.GoogleCloudDataplexV1Action();
+  buildCounterGoogleCloudDataplexV1Action++;
+  if (buildCounterGoogleCloudDataplexV1Action < 3) {
+    o.asset = 'foo';
+    o.category = 'foo';
+    o.dataLocations = buildUnnamed0();
+    o.detectTime = 'foo';
+    o.failedSecurityPolicyApply =
+        buildGoogleCloudDataplexV1ActionFailedSecurityPolicyApply();
+    o.incompatibleDataSchema =
+        buildGoogleCloudDataplexV1ActionIncompatibleDataSchema();
+    o.invalidDataFormat = buildGoogleCloudDataplexV1ActionInvalidDataFormat();
+    o.invalidDataOrganization =
+        buildGoogleCloudDataplexV1ActionInvalidDataOrganization();
+    o.invalidDataPartition =
+        buildGoogleCloudDataplexV1ActionInvalidDataPartition();
+    o.issue = 'foo';
+    o.lake = 'foo';
+    o.missingData = buildGoogleCloudDataplexV1ActionMissingData();
+    o.missingResource = buildGoogleCloudDataplexV1ActionMissingResource();
+    o.name = 'foo';
+    o.unauthorizedResource =
+        buildGoogleCloudDataplexV1ActionUnauthorizedResource();
+    o.zone = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Action--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Action(api.GoogleCloudDataplexV1Action o) {
+  buildCounterGoogleCloudDataplexV1Action++;
+  if (buildCounterGoogleCloudDataplexV1Action < 3) {
+    unittest.expect(
+      o.asset!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.category!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed0(o.dataLocations!);
+    unittest.expect(
+      o.detectTime!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1ActionFailedSecurityPolicyApply(
+        o.failedSecurityPolicyApply!);
+    checkGoogleCloudDataplexV1ActionIncompatibleDataSchema(
+        o.incompatibleDataSchema!);
+    checkGoogleCloudDataplexV1ActionInvalidDataFormat(o.invalidDataFormat!);
+    checkGoogleCloudDataplexV1ActionInvalidDataOrganization(
+        o.invalidDataOrganization!);
+    checkGoogleCloudDataplexV1ActionInvalidDataPartition(
+        o.invalidDataPartition!);
+    unittest.expect(
+      o.issue!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.lake!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1ActionMissingData(o.missingData!);
+    checkGoogleCloudDataplexV1ActionMissingResource(o.missingResource!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1ActionUnauthorizedResource(
+        o.unauthorizedResource!);
+    unittest.expect(
+      o.zone!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Action--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ActionFailedSecurityPolicyApply = 0;
+api.GoogleCloudDataplexV1ActionFailedSecurityPolicyApply
+    buildGoogleCloudDataplexV1ActionFailedSecurityPolicyApply() {
+  final o = api.GoogleCloudDataplexV1ActionFailedSecurityPolicyApply();
+  buildCounterGoogleCloudDataplexV1ActionFailedSecurityPolicyApply++;
+  if (buildCounterGoogleCloudDataplexV1ActionFailedSecurityPolicyApply < 3) {
+    o.asset = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ActionFailedSecurityPolicyApply--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ActionFailedSecurityPolicyApply(
+    api.GoogleCloudDataplexV1ActionFailedSecurityPolicyApply o) {
+  buildCounterGoogleCloudDataplexV1ActionFailedSecurityPolicyApply++;
+  if (buildCounterGoogleCloudDataplexV1ActionFailedSecurityPolicyApply < 3) {
+    unittest.expect(
+      o.asset!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ActionFailedSecurityPolicyApply--;
+}
+
+core.List<core.String> buildUnnamed1() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed1(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1ActionIncompatibleDataSchema = 0;
+api.GoogleCloudDataplexV1ActionIncompatibleDataSchema
+    buildGoogleCloudDataplexV1ActionIncompatibleDataSchema() {
+  final o = api.GoogleCloudDataplexV1ActionIncompatibleDataSchema();
+  buildCounterGoogleCloudDataplexV1ActionIncompatibleDataSchema++;
+  if (buildCounterGoogleCloudDataplexV1ActionIncompatibleDataSchema < 3) {
+    o.existingSchema = 'foo';
+    o.newSchema = 'foo';
+    o.sampledDataLocations = buildUnnamed1();
+    o.schemaChange = 'foo';
+    o.table = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ActionIncompatibleDataSchema--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ActionIncompatibleDataSchema(
+    api.GoogleCloudDataplexV1ActionIncompatibleDataSchema o) {
+  buildCounterGoogleCloudDataplexV1ActionIncompatibleDataSchema++;
+  if (buildCounterGoogleCloudDataplexV1ActionIncompatibleDataSchema < 3) {
+    unittest.expect(
+      o.existingSchema!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.newSchema!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed1(o.sampledDataLocations!);
+    unittest.expect(
+      o.schemaChange!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.table!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ActionIncompatibleDataSchema--;
+}
+
+core.List<core.String> buildUnnamed2() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed2(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1ActionInvalidDataFormat = 0;
+api.GoogleCloudDataplexV1ActionInvalidDataFormat
+    buildGoogleCloudDataplexV1ActionInvalidDataFormat() {
+  final o = api.GoogleCloudDataplexV1ActionInvalidDataFormat();
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataFormat++;
+  if (buildCounterGoogleCloudDataplexV1ActionInvalidDataFormat < 3) {
+    o.expectedFormat = 'foo';
+    o.newFormat = 'foo';
+    o.sampledDataLocations = buildUnnamed2();
+  }
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataFormat--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ActionInvalidDataFormat(
+    api.GoogleCloudDataplexV1ActionInvalidDataFormat o) {
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataFormat++;
+  if (buildCounterGoogleCloudDataplexV1ActionInvalidDataFormat < 3) {
+    unittest.expect(
+      o.expectedFormat!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.newFormat!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed2(o.sampledDataLocations!);
+  }
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataFormat--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ActionInvalidDataOrganization = 0;
+api.GoogleCloudDataplexV1ActionInvalidDataOrganization
+    buildGoogleCloudDataplexV1ActionInvalidDataOrganization() {
+  final o = api.GoogleCloudDataplexV1ActionInvalidDataOrganization();
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataOrganization++;
+  if (buildCounterGoogleCloudDataplexV1ActionInvalidDataOrganization < 3) {}
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataOrganization--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ActionInvalidDataOrganization(
+    api.GoogleCloudDataplexV1ActionInvalidDataOrganization o) {
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataOrganization++;
+  if (buildCounterGoogleCloudDataplexV1ActionInvalidDataOrganization < 3) {}
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataOrganization--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ActionInvalidDataPartition = 0;
+api.GoogleCloudDataplexV1ActionInvalidDataPartition
+    buildGoogleCloudDataplexV1ActionInvalidDataPartition() {
+  final o = api.GoogleCloudDataplexV1ActionInvalidDataPartition();
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataPartition++;
+  if (buildCounterGoogleCloudDataplexV1ActionInvalidDataPartition < 3) {
+    o.expectedStructure = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataPartition--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ActionInvalidDataPartition(
+    api.GoogleCloudDataplexV1ActionInvalidDataPartition o) {
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataPartition++;
+  if (buildCounterGoogleCloudDataplexV1ActionInvalidDataPartition < 3) {
+    unittest.expect(
+      o.expectedStructure!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ActionInvalidDataPartition--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ActionMissingData = 0;
+api.GoogleCloudDataplexV1ActionMissingData
+    buildGoogleCloudDataplexV1ActionMissingData() {
+  final o = api.GoogleCloudDataplexV1ActionMissingData();
+  buildCounterGoogleCloudDataplexV1ActionMissingData++;
+  if (buildCounterGoogleCloudDataplexV1ActionMissingData < 3) {}
+  buildCounterGoogleCloudDataplexV1ActionMissingData--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ActionMissingData(
+    api.GoogleCloudDataplexV1ActionMissingData o) {
+  buildCounterGoogleCloudDataplexV1ActionMissingData++;
+  if (buildCounterGoogleCloudDataplexV1ActionMissingData < 3) {}
+  buildCounterGoogleCloudDataplexV1ActionMissingData--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ActionMissingResource = 0;
+api.GoogleCloudDataplexV1ActionMissingResource
+    buildGoogleCloudDataplexV1ActionMissingResource() {
+  final o = api.GoogleCloudDataplexV1ActionMissingResource();
+  buildCounterGoogleCloudDataplexV1ActionMissingResource++;
+  if (buildCounterGoogleCloudDataplexV1ActionMissingResource < 3) {}
+  buildCounterGoogleCloudDataplexV1ActionMissingResource--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ActionMissingResource(
+    api.GoogleCloudDataplexV1ActionMissingResource o) {
+  buildCounterGoogleCloudDataplexV1ActionMissingResource++;
+  if (buildCounterGoogleCloudDataplexV1ActionMissingResource < 3) {}
+  buildCounterGoogleCloudDataplexV1ActionMissingResource--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ActionUnauthorizedResource = 0;
+api.GoogleCloudDataplexV1ActionUnauthorizedResource
+    buildGoogleCloudDataplexV1ActionUnauthorizedResource() {
+  final o = api.GoogleCloudDataplexV1ActionUnauthorizedResource();
+  buildCounterGoogleCloudDataplexV1ActionUnauthorizedResource++;
+  if (buildCounterGoogleCloudDataplexV1ActionUnauthorizedResource < 3) {}
+  buildCounterGoogleCloudDataplexV1ActionUnauthorizedResource--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ActionUnauthorizedResource(
+    api.GoogleCloudDataplexV1ActionUnauthorizedResource o) {
+  buildCounterGoogleCloudDataplexV1ActionUnauthorizedResource++;
+  if (buildCounterGoogleCloudDataplexV1ActionUnauthorizedResource < 3) {}
+  buildCounterGoogleCloudDataplexV1ActionUnauthorizedResource--;
+}
+
+core.Map<core.String, core.String> buildUnnamed3() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed3(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1Asset = 0;
+api.GoogleCloudDataplexV1Asset buildGoogleCloudDataplexV1Asset() {
+  final o = api.GoogleCloudDataplexV1Asset();
+  buildCounterGoogleCloudDataplexV1Asset++;
+  if (buildCounterGoogleCloudDataplexV1Asset < 3) {
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.discoverySpec = buildGoogleCloudDataplexV1AssetDiscoverySpec();
+    o.discoveryStatus = buildGoogleCloudDataplexV1AssetDiscoveryStatus();
+    o.displayName = 'foo';
+    o.labels = buildUnnamed3();
+    o.name = 'foo';
+    o.resourceSpec = buildGoogleCloudDataplexV1AssetResourceSpec();
+    o.resourceStatus = buildGoogleCloudDataplexV1AssetResourceStatus();
+    o.securityStatus = buildGoogleCloudDataplexV1AssetSecurityStatus();
+    o.state = 'foo';
+    o.uid = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Asset--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Asset(api.GoogleCloudDataplexV1Asset o) {
+  buildCounterGoogleCloudDataplexV1Asset++;
+  if (buildCounterGoogleCloudDataplexV1Asset < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1AssetDiscoverySpec(o.discoverySpec!);
+    checkGoogleCloudDataplexV1AssetDiscoveryStatus(o.discoveryStatus!);
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed3(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1AssetResourceSpec(o.resourceSpec!);
+    checkGoogleCloudDataplexV1AssetResourceStatus(o.resourceStatus!);
+    checkGoogleCloudDataplexV1AssetSecurityStatus(o.securityStatus!);
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.uid!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Asset--;
+}
+
+core.List<core.String> buildUnnamed4() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed4(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed5() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed5(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1AssetDiscoverySpec = 0;
+api.GoogleCloudDataplexV1AssetDiscoverySpec
+    buildGoogleCloudDataplexV1AssetDiscoverySpec() {
+  final o = api.GoogleCloudDataplexV1AssetDiscoverySpec();
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpec++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoverySpec < 3) {
+    o.csvOptions = buildGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions();
+    o.enabled = true;
+    o.excludePatterns = buildUnnamed4();
+    o.includePatterns = buildUnnamed5();
+    o.jsonOptions = buildGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions();
+    o.schedule = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpec--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1AssetDiscoverySpec(
+    api.GoogleCloudDataplexV1AssetDiscoverySpec o) {
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpec++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoverySpec < 3) {
+    checkGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions(o.csvOptions!);
+    unittest.expect(o.enabled!, unittest.isTrue);
+    checkUnnamed4(o.excludePatterns!);
+    checkUnnamed5(o.includePatterns!);
+    checkGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions(o.jsonOptions!);
+    unittest.expect(
+      o.schedule!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpec--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions = 0;
+api.GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions
+    buildGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions() {
+  final o = api.GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions();
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions < 3) {
+    o.delimiter = 'foo';
+    o.disableTypeInference = true;
+    o.encoding = 'foo';
+    o.headerRows = 42;
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions(
+    api.GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions o) {
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions < 3) {
+    unittest.expect(
+      o.delimiter!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.disableTypeInference!, unittest.isTrue);
+    unittest.expect(
+      o.encoding!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.headerRows!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions = 0;
+api.GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions
+    buildGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions() {
+  final o = api.GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions();
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions < 3) {
+    o.disableTypeInference = true;
+    o.encoding = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions(
+    api.GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions o) {
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions < 3) {
+    unittest.expect(o.disableTypeInference!, unittest.isTrue);
+    unittest.expect(
+      o.encoding!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1AssetDiscoveryStatus = 0;
+api.GoogleCloudDataplexV1AssetDiscoveryStatus
+    buildGoogleCloudDataplexV1AssetDiscoveryStatus() {
+  final o = api.GoogleCloudDataplexV1AssetDiscoveryStatus();
+  buildCounterGoogleCloudDataplexV1AssetDiscoveryStatus++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoveryStatus < 3) {
+    o.lastRunDuration = 'foo';
+    o.lastRunTime = 'foo';
+    o.message = 'foo';
+    o.state = 'foo';
+    o.stats = buildGoogleCloudDataplexV1AssetDiscoveryStatusStats();
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoveryStatus--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1AssetDiscoveryStatus(
+    api.GoogleCloudDataplexV1AssetDiscoveryStatus o) {
+  buildCounterGoogleCloudDataplexV1AssetDiscoveryStatus++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoveryStatus < 3) {
+    unittest.expect(
+      o.lastRunDuration!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.lastRunTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1AssetDiscoveryStatusStats(o.stats!);
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoveryStatus--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1AssetDiscoveryStatusStats = 0;
+api.GoogleCloudDataplexV1AssetDiscoveryStatusStats
+    buildGoogleCloudDataplexV1AssetDiscoveryStatusStats() {
+  final o = api.GoogleCloudDataplexV1AssetDiscoveryStatusStats();
+  buildCounterGoogleCloudDataplexV1AssetDiscoveryStatusStats++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoveryStatusStats < 3) {
+    o.dataItems = 'foo';
+    o.dataSize = 'foo';
+    o.filesets = 'foo';
+    o.tables = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoveryStatusStats--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1AssetDiscoveryStatusStats(
+    api.GoogleCloudDataplexV1AssetDiscoveryStatusStats o) {
+  buildCounterGoogleCloudDataplexV1AssetDiscoveryStatusStats++;
+  if (buildCounterGoogleCloudDataplexV1AssetDiscoveryStatusStats < 3) {
+    unittest.expect(
+      o.dataItems!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.dataSize!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.filesets!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.tables!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1AssetDiscoveryStatusStats--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1AssetResourceSpec = 0;
+api.GoogleCloudDataplexV1AssetResourceSpec
+    buildGoogleCloudDataplexV1AssetResourceSpec() {
+  final o = api.GoogleCloudDataplexV1AssetResourceSpec();
+  buildCounterGoogleCloudDataplexV1AssetResourceSpec++;
+  if (buildCounterGoogleCloudDataplexV1AssetResourceSpec < 3) {
+    o.name = 'foo';
+    o.type = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1AssetResourceSpec--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1AssetResourceSpec(
+    api.GoogleCloudDataplexV1AssetResourceSpec o) {
+  buildCounterGoogleCloudDataplexV1AssetResourceSpec++;
+  if (buildCounterGoogleCloudDataplexV1AssetResourceSpec < 3) {
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1AssetResourceSpec--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1AssetResourceStatus = 0;
+api.GoogleCloudDataplexV1AssetResourceStatus
+    buildGoogleCloudDataplexV1AssetResourceStatus() {
+  final o = api.GoogleCloudDataplexV1AssetResourceStatus();
+  buildCounterGoogleCloudDataplexV1AssetResourceStatus++;
+  if (buildCounterGoogleCloudDataplexV1AssetResourceStatus < 3) {
+    o.message = 'foo';
+    o.state = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1AssetResourceStatus--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1AssetResourceStatus(
+    api.GoogleCloudDataplexV1AssetResourceStatus o) {
+  buildCounterGoogleCloudDataplexV1AssetResourceStatus++;
+  if (buildCounterGoogleCloudDataplexV1AssetResourceStatus < 3) {
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1AssetResourceStatus--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1AssetSecurityStatus = 0;
+api.GoogleCloudDataplexV1AssetSecurityStatus
+    buildGoogleCloudDataplexV1AssetSecurityStatus() {
+  final o = api.GoogleCloudDataplexV1AssetSecurityStatus();
+  buildCounterGoogleCloudDataplexV1AssetSecurityStatus++;
+  if (buildCounterGoogleCloudDataplexV1AssetSecurityStatus < 3) {
+    o.message = 'foo';
+    o.state = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1AssetSecurityStatus--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1AssetSecurityStatus(
+    api.GoogleCloudDataplexV1AssetSecurityStatus o) {
+  buildCounterGoogleCloudDataplexV1AssetSecurityStatus++;
+  if (buildCounterGoogleCloudDataplexV1AssetSecurityStatus < 3) {
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1AssetSecurityStatus--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1AssetStatus = 0;
+api.GoogleCloudDataplexV1AssetStatus buildGoogleCloudDataplexV1AssetStatus() {
+  final o = api.GoogleCloudDataplexV1AssetStatus();
+  buildCounterGoogleCloudDataplexV1AssetStatus++;
+  if (buildCounterGoogleCloudDataplexV1AssetStatus < 3) {
+    o.activeAssets = 42;
+    o.securityPolicyApplyingAssets = 42;
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1AssetStatus--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1AssetStatus(
+    api.GoogleCloudDataplexV1AssetStatus o) {
+  buildCounterGoogleCloudDataplexV1AssetStatus++;
+  if (buildCounterGoogleCloudDataplexV1AssetStatus < 3) {
+    unittest.expect(
+      o.activeAssets!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.securityPolicyApplyingAssets!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1AssetStatus--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1CancelJobRequest = 0;
+api.GoogleCloudDataplexV1CancelJobRequest
+    buildGoogleCloudDataplexV1CancelJobRequest() {
+  final o = api.GoogleCloudDataplexV1CancelJobRequest();
+  buildCounterGoogleCloudDataplexV1CancelJobRequest++;
+  if (buildCounterGoogleCloudDataplexV1CancelJobRequest < 3) {}
+  buildCounterGoogleCloudDataplexV1CancelJobRequest--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1CancelJobRequest(
+    api.GoogleCloudDataplexV1CancelJobRequest o) {
+  buildCounterGoogleCloudDataplexV1CancelJobRequest++;
+  if (buildCounterGoogleCloudDataplexV1CancelJobRequest < 3) {}
+  buildCounterGoogleCloudDataplexV1CancelJobRequest--;
+}
+
+core.Map<core.String, core.String> buildUnnamed6() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed6(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1Content = 0;
+api.GoogleCloudDataplexV1Content buildGoogleCloudDataplexV1Content() {
+  final o = api.GoogleCloudDataplexV1Content();
+  buildCounterGoogleCloudDataplexV1Content++;
+  if (buildCounterGoogleCloudDataplexV1Content < 3) {
+    o.createTime = 'foo';
+    o.dataText = 'foo';
+    o.description = 'foo';
+    o.labels = buildUnnamed6();
+    o.name = 'foo';
+    o.notebook = buildGoogleCloudDataplexV1ContentNotebook();
+    o.path = 'foo';
+    o.sqlScript = buildGoogleCloudDataplexV1ContentSqlScript();
+    o.uid = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Content--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Content(api.GoogleCloudDataplexV1Content o) {
+  buildCounterGoogleCloudDataplexV1Content++;
+  if (buildCounterGoogleCloudDataplexV1Content < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.dataText!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed6(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1ContentNotebook(o.notebook!);
+    unittest.expect(
+      o.path!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1ContentSqlScript(o.sqlScript!);
+    unittest.expect(
+      o.uid!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Content--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ContentNotebook = 0;
+api.GoogleCloudDataplexV1ContentNotebook
+    buildGoogleCloudDataplexV1ContentNotebook() {
+  final o = api.GoogleCloudDataplexV1ContentNotebook();
+  buildCounterGoogleCloudDataplexV1ContentNotebook++;
+  if (buildCounterGoogleCloudDataplexV1ContentNotebook < 3) {
+    o.kernelType = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ContentNotebook--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ContentNotebook(
+    api.GoogleCloudDataplexV1ContentNotebook o) {
+  buildCounterGoogleCloudDataplexV1ContentNotebook++;
+  if (buildCounterGoogleCloudDataplexV1ContentNotebook < 3) {
+    unittest.expect(
+      o.kernelType!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ContentNotebook--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ContentSqlScript = 0;
+api.GoogleCloudDataplexV1ContentSqlScript
+    buildGoogleCloudDataplexV1ContentSqlScript() {
+  final o = api.GoogleCloudDataplexV1ContentSqlScript();
+  buildCounterGoogleCloudDataplexV1ContentSqlScript++;
+  if (buildCounterGoogleCloudDataplexV1ContentSqlScript < 3) {
+    o.engine = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ContentSqlScript--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ContentSqlScript(
+    api.GoogleCloudDataplexV1ContentSqlScript o) {
+  buildCounterGoogleCloudDataplexV1ContentSqlScript++;
+  if (buildCounterGoogleCloudDataplexV1ContentSqlScript < 3) {
+    unittest.expect(
+      o.engine!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ContentSqlScript--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1Entity = 0;
+api.GoogleCloudDataplexV1Entity buildGoogleCloudDataplexV1Entity() {
+  final o = api.GoogleCloudDataplexV1Entity();
+  buildCounterGoogleCloudDataplexV1Entity++;
+  if (buildCounterGoogleCloudDataplexV1Entity < 3) {
+    o.asset = 'foo';
+    o.catalogEntry = 'foo';
+    o.compatibility = buildGoogleCloudDataplexV1EntityCompatibilityStatus();
+    o.createTime = 'foo';
+    o.dataPath = 'foo';
+    o.dataPathPattern = 'foo';
+    o.description = 'foo';
+    o.displayName = 'foo';
+    o.etag = 'foo';
+    o.format = buildGoogleCloudDataplexV1StorageFormat();
+    o.id = 'foo';
+    o.name = 'foo';
+    o.schema = buildGoogleCloudDataplexV1Schema();
+    o.system = 'foo';
+    o.type = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Entity--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Entity(api.GoogleCloudDataplexV1Entity o) {
+  buildCounterGoogleCloudDataplexV1Entity++;
+  if (buildCounterGoogleCloudDataplexV1Entity < 3) {
+    unittest.expect(
+      o.asset!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.catalogEntry!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1EntityCompatibilityStatus(o.compatibility!);
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.dataPath!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.dataPathPattern!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.etag!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1StorageFormat(o.format!);
+    unittest.expect(
+      o.id!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1Schema(o.schema!);
+    unittest.expect(
+      o.system!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Entity--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1EntityCompatibilityStatus = 0;
+api.GoogleCloudDataplexV1EntityCompatibilityStatus
+    buildGoogleCloudDataplexV1EntityCompatibilityStatus() {
+  final o = api.GoogleCloudDataplexV1EntityCompatibilityStatus();
+  buildCounterGoogleCloudDataplexV1EntityCompatibilityStatus++;
+  if (buildCounterGoogleCloudDataplexV1EntityCompatibilityStatus < 3) {
+    o.bigquery =
+        buildGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility();
+    o.hiveMetastore =
+        buildGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility();
+  }
+  buildCounterGoogleCloudDataplexV1EntityCompatibilityStatus--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1EntityCompatibilityStatus(
+    api.GoogleCloudDataplexV1EntityCompatibilityStatus o) {
+  buildCounterGoogleCloudDataplexV1EntityCompatibilityStatus++;
+  if (buildCounterGoogleCloudDataplexV1EntityCompatibilityStatus < 3) {
+    checkGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility(
+        o.bigquery!);
+    checkGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility(
+        o.hiveMetastore!);
+  }
+  buildCounterGoogleCloudDataplexV1EntityCompatibilityStatus--;
+}
+
+core.int
+    buildCounterGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility = 0;
+api.GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility
+    buildGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility() {
+  final o = api.GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility();
+  buildCounterGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility++;
+  if (buildCounterGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility <
+      3) {
+    o.compatible = true;
+    o.reason = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility(
+    api.GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility o) {
+  buildCounterGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility++;
+  if (buildCounterGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility <
+      3) {
+    unittest.expect(o.compatible!, unittest.isTrue);
+    unittest.expect(
+      o.reason!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility--;
+}
+
+core.Map<core.String, core.String> buildUnnamed7() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed7(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1Environment = 0;
+api.GoogleCloudDataplexV1Environment buildGoogleCloudDataplexV1Environment() {
+  final o = api.GoogleCloudDataplexV1Environment();
+  buildCounterGoogleCloudDataplexV1Environment++;
+  if (buildCounterGoogleCloudDataplexV1Environment < 3) {
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.displayName = 'foo';
+    o.endpoints = buildGoogleCloudDataplexV1EnvironmentEndpoints();
+    o.infrastructureSpec =
+        buildGoogleCloudDataplexV1EnvironmentInfrastructureSpec();
+    o.labels = buildUnnamed7();
+    o.name = 'foo';
+    o.sessionSpec = buildGoogleCloudDataplexV1EnvironmentSessionSpec();
+    o.sessionStatus = buildGoogleCloudDataplexV1EnvironmentSessionStatus();
+    o.state = 'foo';
+    o.uid = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Environment--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Environment(
+    api.GoogleCloudDataplexV1Environment o) {
+  buildCounterGoogleCloudDataplexV1Environment++;
+  if (buildCounterGoogleCloudDataplexV1Environment < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1EnvironmentEndpoints(o.endpoints!);
+    checkGoogleCloudDataplexV1EnvironmentInfrastructureSpec(
+        o.infrastructureSpec!);
+    checkUnnamed7(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1EnvironmentSessionSpec(o.sessionSpec!);
+    checkGoogleCloudDataplexV1EnvironmentSessionStatus(o.sessionStatus!);
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.uid!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Environment--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1EnvironmentEndpoints = 0;
+api.GoogleCloudDataplexV1EnvironmentEndpoints
+    buildGoogleCloudDataplexV1EnvironmentEndpoints() {
+  final o = api.GoogleCloudDataplexV1EnvironmentEndpoints();
+  buildCounterGoogleCloudDataplexV1EnvironmentEndpoints++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentEndpoints < 3) {
+    o.notebooks = 'foo';
+    o.sql = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentEndpoints--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1EnvironmentEndpoints(
+    api.GoogleCloudDataplexV1EnvironmentEndpoints o) {
+  buildCounterGoogleCloudDataplexV1EnvironmentEndpoints++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentEndpoints < 3) {
+    unittest.expect(
+      o.notebooks!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.sql!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentEndpoints--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpec = 0;
+api.GoogleCloudDataplexV1EnvironmentInfrastructureSpec
+    buildGoogleCloudDataplexV1EnvironmentInfrastructureSpec() {
+  final o = api.GoogleCloudDataplexV1EnvironmentInfrastructureSpec();
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpec++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpec < 3) {
+    o.compute =
+        buildGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources();
+    o.osImage =
+        buildGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime();
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpec--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1EnvironmentInfrastructureSpec(
+    api.GoogleCloudDataplexV1EnvironmentInfrastructureSpec o) {
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpec++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpec < 3) {
+    checkGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources(
+        o.compute!);
+    checkGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime(
+        o.osImage!);
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpec--;
+}
+
+core.int
+    buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources =
+    0;
+api.GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources
+    buildGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources() {
+  final o =
+      api.GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources();
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources <
+      3) {
+    o.diskSizeGb = 42;
+    o.maxNodeCount = 42;
+    o.nodeCount = 42;
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources(
+    api.GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources o) {
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources <
+      3) {
+    unittest.expect(
+      o.diskSizeGb!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.maxNodeCount!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.nodeCount!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources--;
+}
+
+core.List<core.String> buildUnnamed8() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed8(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.String> buildUnnamed9() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed9(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed10() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed10(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int
+    buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime =
+    0;
+api.GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime
+    buildGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime() {
+  final o =
+      api.GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime();
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime <
+      3) {
+    o.imageVersion = 'foo';
+    o.javaLibraries = buildUnnamed8();
+    o.properties = buildUnnamed9();
+    o.pythonPackages = buildUnnamed10();
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime(
+    api.GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime o) {
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime <
+      3) {
+    unittest.expect(
+      o.imageVersion!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed8(o.javaLibraries!);
+    checkUnnamed9(o.properties!);
+    checkUnnamed10(o.pythonPackages!);
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1EnvironmentSessionSpec = 0;
+api.GoogleCloudDataplexV1EnvironmentSessionSpec
+    buildGoogleCloudDataplexV1EnvironmentSessionSpec() {
+  final o = api.GoogleCloudDataplexV1EnvironmentSessionSpec();
+  buildCounterGoogleCloudDataplexV1EnvironmentSessionSpec++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentSessionSpec < 3) {
+    o.enableFastStartup = true;
+    o.maxIdleDuration = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentSessionSpec--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1EnvironmentSessionSpec(
+    api.GoogleCloudDataplexV1EnvironmentSessionSpec o) {
+  buildCounterGoogleCloudDataplexV1EnvironmentSessionSpec++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentSessionSpec < 3) {
+    unittest.expect(o.enableFastStartup!, unittest.isTrue);
+    unittest.expect(
+      o.maxIdleDuration!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentSessionSpec--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1EnvironmentSessionStatus = 0;
+api.GoogleCloudDataplexV1EnvironmentSessionStatus
+    buildGoogleCloudDataplexV1EnvironmentSessionStatus() {
+  final o = api.GoogleCloudDataplexV1EnvironmentSessionStatus();
+  buildCounterGoogleCloudDataplexV1EnvironmentSessionStatus++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentSessionStatus < 3) {
+    o.active = true;
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentSessionStatus--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1EnvironmentSessionStatus(
+    api.GoogleCloudDataplexV1EnvironmentSessionStatus o) {
+  buildCounterGoogleCloudDataplexV1EnvironmentSessionStatus++;
+  if (buildCounterGoogleCloudDataplexV1EnvironmentSessionStatus < 3) {
+    unittest.expect(o.active!, unittest.isTrue);
+  }
+  buildCounterGoogleCloudDataplexV1EnvironmentSessionStatus--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1Job = 0;
+api.GoogleCloudDataplexV1Job buildGoogleCloudDataplexV1Job() {
+  final o = api.GoogleCloudDataplexV1Job();
+  buildCounterGoogleCloudDataplexV1Job++;
+  if (buildCounterGoogleCloudDataplexV1Job < 3) {
+    o.endTime = 'foo';
+    o.message = 'foo';
+    o.name = 'foo';
+    o.retryCount = 42;
+    o.service = 'foo';
+    o.serviceJob = 'foo';
+    o.startTime = 'foo';
+    o.state = 'foo';
+    o.uid = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Job--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Job(api.GoogleCloudDataplexV1Job o) {
+  buildCounterGoogleCloudDataplexV1Job++;
+  if (buildCounterGoogleCloudDataplexV1Job < 3) {
+    unittest.expect(
+      o.endTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.retryCount!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.service!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.serviceJob!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.startTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.uid!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Job--;
+}
+
+core.Map<core.String, core.String> buildUnnamed11() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed11(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1Lake = 0;
+api.GoogleCloudDataplexV1Lake buildGoogleCloudDataplexV1Lake() {
+  final o = api.GoogleCloudDataplexV1Lake();
+  buildCounterGoogleCloudDataplexV1Lake++;
+  if (buildCounterGoogleCloudDataplexV1Lake < 3) {
+    o.assetStatus = buildGoogleCloudDataplexV1AssetStatus();
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.displayName = 'foo';
+    o.labels = buildUnnamed11();
+    o.metastore = buildGoogleCloudDataplexV1LakeMetastore();
+    o.metastoreStatus = buildGoogleCloudDataplexV1LakeMetastoreStatus();
+    o.name = 'foo';
+    o.serviceAccount = 'foo';
+    o.state = 'foo';
+    o.uid = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Lake--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Lake(api.GoogleCloudDataplexV1Lake o) {
+  buildCounterGoogleCloudDataplexV1Lake++;
+  if (buildCounterGoogleCloudDataplexV1Lake < 3) {
+    checkGoogleCloudDataplexV1AssetStatus(o.assetStatus!);
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed11(o.labels!);
+    checkGoogleCloudDataplexV1LakeMetastore(o.metastore!);
+    checkGoogleCloudDataplexV1LakeMetastoreStatus(o.metastoreStatus!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.serviceAccount!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.uid!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Lake--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1LakeMetastore = 0;
+api.GoogleCloudDataplexV1LakeMetastore
+    buildGoogleCloudDataplexV1LakeMetastore() {
+  final o = api.GoogleCloudDataplexV1LakeMetastore();
+  buildCounterGoogleCloudDataplexV1LakeMetastore++;
+  if (buildCounterGoogleCloudDataplexV1LakeMetastore < 3) {
+    o.service = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1LakeMetastore--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1LakeMetastore(
+    api.GoogleCloudDataplexV1LakeMetastore o) {
+  buildCounterGoogleCloudDataplexV1LakeMetastore++;
+  if (buildCounterGoogleCloudDataplexV1LakeMetastore < 3) {
+    unittest.expect(
+      o.service!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1LakeMetastore--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1LakeMetastoreStatus = 0;
+api.GoogleCloudDataplexV1LakeMetastoreStatus
+    buildGoogleCloudDataplexV1LakeMetastoreStatus() {
+  final o = api.GoogleCloudDataplexV1LakeMetastoreStatus();
+  buildCounterGoogleCloudDataplexV1LakeMetastoreStatus++;
+  if (buildCounterGoogleCloudDataplexV1LakeMetastoreStatus < 3) {
+    o.endpoint = 'foo';
+    o.message = 'foo';
+    o.state = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1LakeMetastoreStatus--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1LakeMetastoreStatus(
+    api.GoogleCloudDataplexV1LakeMetastoreStatus o) {
+  buildCounterGoogleCloudDataplexV1LakeMetastoreStatus++;
+  if (buildCounterGoogleCloudDataplexV1LakeMetastoreStatus < 3) {
+    unittest.expect(
+      o.endpoint!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1LakeMetastoreStatus--;
+}
+
+core.List<api.GoogleCloudDataplexV1Action> buildUnnamed12() => [
+      buildGoogleCloudDataplexV1Action(),
+      buildGoogleCloudDataplexV1Action(),
+    ];
+
+void checkUnnamed12(core.List<api.GoogleCloudDataplexV1Action> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Action(o[0]);
+  checkGoogleCloudDataplexV1Action(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListActionsResponse = 0;
+api.GoogleCloudDataplexV1ListActionsResponse
+    buildGoogleCloudDataplexV1ListActionsResponse() {
+  final o = api.GoogleCloudDataplexV1ListActionsResponse();
+  buildCounterGoogleCloudDataplexV1ListActionsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListActionsResponse < 3) {
+    o.actions = buildUnnamed12();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ListActionsResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListActionsResponse(
+    api.GoogleCloudDataplexV1ListActionsResponse o) {
+  buildCounterGoogleCloudDataplexV1ListActionsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListActionsResponse < 3) {
+    checkUnnamed12(o.actions!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ListActionsResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Asset> buildUnnamed13() => [
+      buildGoogleCloudDataplexV1Asset(),
+      buildGoogleCloudDataplexV1Asset(),
+    ];
+
+void checkUnnamed13(core.List<api.GoogleCloudDataplexV1Asset> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Asset(o[0]);
+  checkGoogleCloudDataplexV1Asset(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListAssetsResponse = 0;
+api.GoogleCloudDataplexV1ListAssetsResponse
+    buildGoogleCloudDataplexV1ListAssetsResponse() {
+  final o = api.GoogleCloudDataplexV1ListAssetsResponse();
+  buildCounterGoogleCloudDataplexV1ListAssetsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListAssetsResponse < 3) {
+    o.assets = buildUnnamed13();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ListAssetsResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListAssetsResponse(
+    api.GoogleCloudDataplexV1ListAssetsResponse o) {
+  buildCounterGoogleCloudDataplexV1ListAssetsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListAssetsResponse < 3) {
+    checkUnnamed13(o.assets!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ListAssetsResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Content> buildUnnamed14() => [
+      buildGoogleCloudDataplexV1Content(),
+      buildGoogleCloudDataplexV1Content(),
+    ];
+
+void checkUnnamed14(core.List<api.GoogleCloudDataplexV1Content> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Content(o[0]);
+  checkGoogleCloudDataplexV1Content(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListContentResponse = 0;
+api.GoogleCloudDataplexV1ListContentResponse
+    buildGoogleCloudDataplexV1ListContentResponse() {
+  final o = api.GoogleCloudDataplexV1ListContentResponse();
+  buildCounterGoogleCloudDataplexV1ListContentResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListContentResponse < 3) {
+    o.content = buildUnnamed14();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ListContentResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListContentResponse(
+    api.GoogleCloudDataplexV1ListContentResponse o) {
+  buildCounterGoogleCloudDataplexV1ListContentResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListContentResponse < 3) {
+    checkUnnamed14(o.content!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ListContentResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Entity> buildUnnamed15() => [
+      buildGoogleCloudDataplexV1Entity(),
+      buildGoogleCloudDataplexV1Entity(),
+    ];
+
+void checkUnnamed15(core.List<api.GoogleCloudDataplexV1Entity> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Entity(o[0]);
+  checkGoogleCloudDataplexV1Entity(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListEntitiesResponse = 0;
+api.GoogleCloudDataplexV1ListEntitiesResponse
+    buildGoogleCloudDataplexV1ListEntitiesResponse() {
+  final o = api.GoogleCloudDataplexV1ListEntitiesResponse();
+  buildCounterGoogleCloudDataplexV1ListEntitiesResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListEntitiesResponse < 3) {
+    o.entities = buildUnnamed15();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ListEntitiesResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListEntitiesResponse(
+    api.GoogleCloudDataplexV1ListEntitiesResponse o) {
+  buildCounterGoogleCloudDataplexV1ListEntitiesResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListEntitiesResponse < 3) {
+    checkUnnamed15(o.entities!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ListEntitiesResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Environment> buildUnnamed16() => [
+      buildGoogleCloudDataplexV1Environment(),
+      buildGoogleCloudDataplexV1Environment(),
+    ];
+
+void checkUnnamed16(core.List<api.GoogleCloudDataplexV1Environment> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Environment(o[0]);
+  checkGoogleCloudDataplexV1Environment(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListEnvironmentsResponse = 0;
+api.GoogleCloudDataplexV1ListEnvironmentsResponse
+    buildGoogleCloudDataplexV1ListEnvironmentsResponse() {
+  final o = api.GoogleCloudDataplexV1ListEnvironmentsResponse();
+  buildCounterGoogleCloudDataplexV1ListEnvironmentsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListEnvironmentsResponse < 3) {
+    o.environments = buildUnnamed16();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ListEnvironmentsResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListEnvironmentsResponse(
+    api.GoogleCloudDataplexV1ListEnvironmentsResponse o) {
+  buildCounterGoogleCloudDataplexV1ListEnvironmentsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListEnvironmentsResponse < 3) {
+    checkUnnamed16(o.environments!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ListEnvironmentsResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Job> buildUnnamed17() => [
+      buildGoogleCloudDataplexV1Job(),
+      buildGoogleCloudDataplexV1Job(),
+    ];
+
+void checkUnnamed17(core.List<api.GoogleCloudDataplexV1Job> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Job(o[0]);
+  checkGoogleCloudDataplexV1Job(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListJobsResponse = 0;
+api.GoogleCloudDataplexV1ListJobsResponse
+    buildGoogleCloudDataplexV1ListJobsResponse() {
+  final o = api.GoogleCloudDataplexV1ListJobsResponse();
+  buildCounterGoogleCloudDataplexV1ListJobsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListJobsResponse < 3) {
+    o.jobs = buildUnnamed17();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ListJobsResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListJobsResponse(
+    api.GoogleCloudDataplexV1ListJobsResponse o) {
+  buildCounterGoogleCloudDataplexV1ListJobsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListJobsResponse < 3) {
+    checkUnnamed17(o.jobs!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ListJobsResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Lake> buildUnnamed18() => [
+      buildGoogleCloudDataplexV1Lake(),
+      buildGoogleCloudDataplexV1Lake(),
+    ];
+
+void checkUnnamed18(core.List<api.GoogleCloudDataplexV1Lake> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Lake(o[0]);
+  checkGoogleCloudDataplexV1Lake(o[1]);
+}
+
+core.List<core.String> buildUnnamed19() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed19(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListLakesResponse = 0;
+api.GoogleCloudDataplexV1ListLakesResponse
+    buildGoogleCloudDataplexV1ListLakesResponse() {
+  final o = api.GoogleCloudDataplexV1ListLakesResponse();
+  buildCounterGoogleCloudDataplexV1ListLakesResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListLakesResponse < 3) {
+    o.lakes = buildUnnamed18();
+    o.nextPageToken = 'foo';
+    o.unreachableLocations = buildUnnamed19();
+  }
+  buildCounterGoogleCloudDataplexV1ListLakesResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListLakesResponse(
+    api.GoogleCloudDataplexV1ListLakesResponse o) {
+  buildCounterGoogleCloudDataplexV1ListLakesResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListLakesResponse < 3) {
+    checkUnnamed18(o.lakes!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed19(o.unreachableLocations!);
+  }
+  buildCounterGoogleCloudDataplexV1ListLakesResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Partition> buildUnnamed20() => [
+      buildGoogleCloudDataplexV1Partition(),
+      buildGoogleCloudDataplexV1Partition(),
+    ];
+
+void checkUnnamed20(core.List<api.GoogleCloudDataplexV1Partition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Partition(o[0]);
+  checkGoogleCloudDataplexV1Partition(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListPartitionsResponse = 0;
+api.GoogleCloudDataplexV1ListPartitionsResponse
+    buildGoogleCloudDataplexV1ListPartitionsResponse() {
+  final o = api.GoogleCloudDataplexV1ListPartitionsResponse();
+  buildCounterGoogleCloudDataplexV1ListPartitionsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListPartitionsResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.partitions = buildUnnamed20();
+  }
+  buildCounterGoogleCloudDataplexV1ListPartitionsResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListPartitionsResponse(
+    api.GoogleCloudDataplexV1ListPartitionsResponse o) {
+  buildCounterGoogleCloudDataplexV1ListPartitionsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListPartitionsResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed20(o.partitions!);
+  }
+  buildCounterGoogleCloudDataplexV1ListPartitionsResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Session> buildUnnamed21() => [
+      buildGoogleCloudDataplexV1Session(),
+      buildGoogleCloudDataplexV1Session(),
+    ];
+
+void checkUnnamed21(core.List<api.GoogleCloudDataplexV1Session> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Session(o[0]);
+  checkGoogleCloudDataplexV1Session(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListSessionsResponse = 0;
+api.GoogleCloudDataplexV1ListSessionsResponse
+    buildGoogleCloudDataplexV1ListSessionsResponse() {
+  final o = api.GoogleCloudDataplexV1ListSessionsResponse();
+  buildCounterGoogleCloudDataplexV1ListSessionsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListSessionsResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.sessions = buildUnnamed21();
+  }
+  buildCounterGoogleCloudDataplexV1ListSessionsResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListSessionsResponse(
+    api.GoogleCloudDataplexV1ListSessionsResponse o) {
+  buildCounterGoogleCloudDataplexV1ListSessionsResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListSessionsResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed21(o.sessions!);
+  }
+  buildCounterGoogleCloudDataplexV1ListSessionsResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Task> buildUnnamed22() => [
+      buildGoogleCloudDataplexV1Task(),
+      buildGoogleCloudDataplexV1Task(),
+    ];
+
+void checkUnnamed22(core.List<api.GoogleCloudDataplexV1Task> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Task(o[0]);
+  checkGoogleCloudDataplexV1Task(o[1]);
+}
+
+core.List<core.String> buildUnnamed23() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed23(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListTasksResponse = 0;
+api.GoogleCloudDataplexV1ListTasksResponse
+    buildGoogleCloudDataplexV1ListTasksResponse() {
+  final o = api.GoogleCloudDataplexV1ListTasksResponse();
+  buildCounterGoogleCloudDataplexV1ListTasksResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListTasksResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.tasks = buildUnnamed22();
+    o.unreachableLocations = buildUnnamed23();
+  }
+  buildCounterGoogleCloudDataplexV1ListTasksResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListTasksResponse(
+    api.GoogleCloudDataplexV1ListTasksResponse o) {
+  buildCounterGoogleCloudDataplexV1ListTasksResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListTasksResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed22(o.tasks!);
+    checkUnnamed23(o.unreachableLocations!);
+  }
+  buildCounterGoogleCloudDataplexV1ListTasksResponse--;
+}
+
+core.List<api.GoogleCloudDataplexV1Zone> buildUnnamed24() => [
+      buildGoogleCloudDataplexV1Zone(),
+      buildGoogleCloudDataplexV1Zone(),
+    ];
+
+void checkUnnamed24(core.List<api.GoogleCloudDataplexV1Zone> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1Zone(o[0]);
+  checkGoogleCloudDataplexV1Zone(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1ListZonesResponse = 0;
+api.GoogleCloudDataplexV1ListZonesResponse
+    buildGoogleCloudDataplexV1ListZonesResponse() {
+  final o = api.GoogleCloudDataplexV1ListZonesResponse();
+  buildCounterGoogleCloudDataplexV1ListZonesResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListZonesResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.zones = buildUnnamed24();
+  }
+  buildCounterGoogleCloudDataplexV1ListZonesResponse--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ListZonesResponse(
+    api.GoogleCloudDataplexV1ListZonesResponse o) {
+  buildCounterGoogleCloudDataplexV1ListZonesResponse++;
+  if (buildCounterGoogleCloudDataplexV1ListZonesResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed24(o.zones!);
+  }
+  buildCounterGoogleCloudDataplexV1ListZonesResponse--;
+}
+
+core.List<core.String> buildUnnamed25() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed25(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1Partition = 0;
+api.GoogleCloudDataplexV1Partition buildGoogleCloudDataplexV1Partition() {
+  final o = api.GoogleCloudDataplexV1Partition();
+  buildCounterGoogleCloudDataplexV1Partition++;
+  if (buildCounterGoogleCloudDataplexV1Partition < 3) {
+    o.etag = 'foo';
+    o.location = 'foo';
+    o.name = 'foo';
+    o.values = buildUnnamed25();
+  }
+  buildCounterGoogleCloudDataplexV1Partition--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Partition(api.GoogleCloudDataplexV1Partition o) {
+  buildCounterGoogleCloudDataplexV1Partition++;
+  if (buildCounterGoogleCloudDataplexV1Partition < 3) {
+    unittest.expect(
+      o.etag!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.location!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed25(o.values!);
+  }
+  buildCounterGoogleCloudDataplexV1Partition--;
+}
+
+core.List<api.GoogleCloudDataplexV1SchemaSchemaField> buildUnnamed26() => [
+      buildGoogleCloudDataplexV1SchemaSchemaField(),
+      buildGoogleCloudDataplexV1SchemaSchemaField(),
+    ];
+
+void checkUnnamed26(core.List<api.GoogleCloudDataplexV1SchemaSchemaField> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1SchemaSchemaField(o[0]);
+  checkGoogleCloudDataplexV1SchemaSchemaField(o[1]);
+}
+
+core.List<api.GoogleCloudDataplexV1SchemaPartitionField> buildUnnamed27() => [
+      buildGoogleCloudDataplexV1SchemaPartitionField(),
+      buildGoogleCloudDataplexV1SchemaPartitionField(),
+    ];
+
+void checkUnnamed27(
+    core.List<api.GoogleCloudDataplexV1SchemaPartitionField> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1SchemaPartitionField(o[0]);
+  checkGoogleCloudDataplexV1SchemaPartitionField(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1Schema = 0;
+api.GoogleCloudDataplexV1Schema buildGoogleCloudDataplexV1Schema() {
+  final o = api.GoogleCloudDataplexV1Schema();
+  buildCounterGoogleCloudDataplexV1Schema++;
+  if (buildCounterGoogleCloudDataplexV1Schema < 3) {
+    o.fields = buildUnnamed26();
+    o.partitionFields = buildUnnamed27();
+    o.partitionStyle = 'foo';
+    o.userManaged = true;
+  }
+  buildCounterGoogleCloudDataplexV1Schema--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Schema(api.GoogleCloudDataplexV1Schema o) {
+  buildCounterGoogleCloudDataplexV1Schema++;
+  if (buildCounterGoogleCloudDataplexV1Schema < 3) {
+    checkUnnamed26(o.fields!);
+    checkUnnamed27(o.partitionFields!);
+    unittest.expect(
+      o.partitionStyle!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.userManaged!, unittest.isTrue);
+  }
+  buildCounterGoogleCloudDataplexV1Schema--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1SchemaPartitionField = 0;
+api.GoogleCloudDataplexV1SchemaPartitionField
+    buildGoogleCloudDataplexV1SchemaPartitionField() {
+  final o = api.GoogleCloudDataplexV1SchemaPartitionField();
+  buildCounterGoogleCloudDataplexV1SchemaPartitionField++;
+  if (buildCounterGoogleCloudDataplexV1SchemaPartitionField < 3) {
+    o.name = 'foo';
+    o.type = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1SchemaPartitionField--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1SchemaPartitionField(
+    api.GoogleCloudDataplexV1SchemaPartitionField o) {
+  buildCounterGoogleCloudDataplexV1SchemaPartitionField++;
+  if (buildCounterGoogleCloudDataplexV1SchemaPartitionField < 3) {
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1SchemaPartitionField--;
+}
+
+core.List<api.GoogleCloudDataplexV1SchemaSchemaField> buildUnnamed28() => [
+      buildGoogleCloudDataplexV1SchemaSchemaField(),
+      buildGoogleCloudDataplexV1SchemaSchemaField(),
+    ];
+
+void checkUnnamed28(core.List<api.GoogleCloudDataplexV1SchemaSchemaField> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudDataplexV1SchemaSchemaField(o[0]);
+  checkGoogleCloudDataplexV1SchemaSchemaField(o[1]);
+}
+
+core.int buildCounterGoogleCloudDataplexV1SchemaSchemaField = 0;
+api.GoogleCloudDataplexV1SchemaSchemaField
+    buildGoogleCloudDataplexV1SchemaSchemaField() {
+  final o = api.GoogleCloudDataplexV1SchemaSchemaField();
+  buildCounterGoogleCloudDataplexV1SchemaSchemaField++;
+  if (buildCounterGoogleCloudDataplexV1SchemaSchemaField < 3) {
+    o.description = 'foo';
+    o.fields = buildUnnamed28();
+    o.mode = 'foo';
+    o.name = 'foo';
+    o.type = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1SchemaSchemaField--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1SchemaSchemaField(
+    api.GoogleCloudDataplexV1SchemaSchemaField o) {
+  buildCounterGoogleCloudDataplexV1SchemaSchemaField++;
+  if (buildCounterGoogleCloudDataplexV1SchemaSchemaField < 3) {
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed28(o.fields!);
+    unittest.expect(
+      o.mode!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1SchemaSchemaField--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1Session = 0;
+api.GoogleCloudDataplexV1Session buildGoogleCloudDataplexV1Session() {
+  final o = api.GoogleCloudDataplexV1Session();
+  buildCounterGoogleCloudDataplexV1Session++;
+  if (buildCounterGoogleCloudDataplexV1Session < 3) {
+    o.createTime = 'foo';
+    o.name = 'foo';
+    o.state = 'foo';
+    o.userId = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Session--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Session(api.GoogleCloudDataplexV1Session o) {
+  buildCounterGoogleCloudDataplexV1Session++;
+  if (buildCounterGoogleCloudDataplexV1Session < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.userId!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Session--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1StorageFormat = 0;
+api.GoogleCloudDataplexV1StorageFormat
+    buildGoogleCloudDataplexV1StorageFormat() {
+  final o = api.GoogleCloudDataplexV1StorageFormat();
+  buildCounterGoogleCloudDataplexV1StorageFormat++;
+  if (buildCounterGoogleCloudDataplexV1StorageFormat < 3) {
+    o.compressionFormat = 'foo';
+    o.csv = buildGoogleCloudDataplexV1StorageFormatCsvOptions();
+    o.format = 'foo';
+    o.json = buildGoogleCloudDataplexV1StorageFormatJsonOptions();
+    o.mimeType = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1StorageFormat--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1StorageFormat(
+    api.GoogleCloudDataplexV1StorageFormat o) {
+  buildCounterGoogleCloudDataplexV1StorageFormat++;
+  if (buildCounterGoogleCloudDataplexV1StorageFormat < 3) {
+    unittest.expect(
+      o.compressionFormat!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1StorageFormatCsvOptions(o.csv!);
+    unittest.expect(
+      o.format!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1StorageFormatJsonOptions(o.json!);
+    unittest.expect(
+      o.mimeType!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1StorageFormat--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1StorageFormatCsvOptions = 0;
+api.GoogleCloudDataplexV1StorageFormatCsvOptions
+    buildGoogleCloudDataplexV1StorageFormatCsvOptions() {
+  final o = api.GoogleCloudDataplexV1StorageFormatCsvOptions();
+  buildCounterGoogleCloudDataplexV1StorageFormatCsvOptions++;
+  if (buildCounterGoogleCloudDataplexV1StorageFormatCsvOptions < 3) {
+    o.delimiter = 'foo';
+    o.encoding = 'foo';
+    o.headerRows = 42;
+    o.quote = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1StorageFormatCsvOptions--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1StorageFormatCsvOptions(
+    api.GoogleCloudDataplexV1StorageFormatCsvOptions o) {
+  buildCounterGoogleCloudDataplexV1StorageFormatCsvOptions++;
+  if (buildCounterGoogleCloudDataplexV1StorageFormatCsvOptions < 3) {
+    unittest.expect(
+      o.delimiter!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.encoding!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.headerRows!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.quote!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1StorageFormatCsvOptions--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1StorageFormatJsonOptions = 0;
+api.GoogleCloudDataplexV1StorageFormatJsonOptions
+    buildGoogleCloudDataplexV1StorageFormatJsonOptions() {
+  final o = api.GoogleCloudDataplexV1StorageFormatJsonOptions();
+  buildCounterGoogleCloudDataplexV1StorageFormatJsonOptions++;
+  if (buildCounterGoogleCloudDataplexV1StorageFormatJsonOptions < 3) {
+    o.encoding = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1StorageFormatJsonOptions--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1StorageFormatJsonOptions(
+    api.GoogleCloudDataplexV1StorageFormatJsonOptions o) {
+  buildCounterGoogleCloudDataplexV1StorageFormatJsonOptions++;
+  if (buildCounterGoogleCloudDataplexV1StorageFormatJsonOptions < 3) {
+    unittest.expect(
+      o.encoding!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1StorageFormatJsonOptions--;
+}
+
+core.Map<core.String, core.String> buildUnnamed29() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed29(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1Task = 0;
+api.GoogleCloudDataplexV1Task buildGoogleCloudDataplexV1Task() {
+  final o = api.GoogleCloudDataplexV1Task();
+  buildCounterGoogleCloudDataplexV1Task++;
+  if (buildCounterGoogleCloudDataplexV1Task < 3) {
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.displayName = 'foo';
+    o.executionSpec = buildGoogleCloudDataplexV1TaskExecutionSpec();
+    o.labels = buildUnnamed29();
+    o.name = 'foo';
+    o.spark = buildGoogleCloudDataplexV1TaskSparkTaskConfig();
+    o.state = 'foo';
+    o.triggerSpec = buildGoogleCloudDataplexV1TaskTriggerSpec();
+    o.uid = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Task--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Task(api.GoogleCloudDataplexV1Task o) {
+  buildCounterGoogleCloudDataplexV1Task++;
+  if (buildCounterGoogleCloudDataplexV1Task < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1TaskExecutionSpec(o.executionSpec!);
+    checkUnnamed29(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1TaskSparkTaskConfig(o.spark!);
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1TaskTriggerSpec(o.triggerSpec!);
+    unittest.expect(
+      o.uid!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Task--;
+}
+
+core.Map<core.String, core.String> buildUnnamed30() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed30(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1TaskExecutionSpec = 0;
+api.GoogleCloudDataplexV1TaskExecutionSpec
+    buildGoogleCloudDataplexV1TaskExecutionSpec() {
+  final o = api.GoogleCloudDataplexV1TaskExecutionSpec();
+  buildCounterGoogleCloudDataplexV1TaskExecutionSpec++;
+  if (buildCounterGoogleCloudDataplexV1TaskExecutionSpec < 3) {
+    o.args = buildUnnamed30();
+    o.maxJobExecutionLifetime = 'foo';
+    o.serviceAccount = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1TaskExecutionSpec--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1TaskExecutionSpec(
+    api.GoogleCloudDataplexV1TaskExecutionSpec o) {
+  buildCounterGoogleCloudDataplexV1TaskExecutionSpec++;
+  if (buildCounterGoogleCloudDataplexV1TaskExecutionSpec < 3) {
+    checkUnnamed30(o.args!);
+    unittest.expect(
+      o.maxJobExecutionLifetime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.serviceAccount!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1TaskExecutionSpec--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1TaskInfrastructureSpec = 0;
+api.GoogleCloudDataplexV1TaskInfrastructureSpec
+    buildGoogleCloudDataplexV1TaskInfrastructureSpec() {
+  final o = api.GoogleCloudDataplexV1TaskInfrastructureSpec();
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpec++;
+  if (buildCounterGoogleCloudDataplexV1TaskInfrastructureSpec < 3) {
+    o.batch =
+        buildGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources();
+    o.containerImage =
+        buildGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime();
+    o.vpcNetwork = buildGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork();
+  }
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpec--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1TaskInfrastructureSpec(
+    api.GoogleCloudDataplexV1TaskInfrastructureSpec o) {
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpec++;
+  if (buildCounterGoogleCloudDataplexV1TaskInfrastructureSpec < 3) {
+    checkGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources(
+        o.batch!);
+    checkGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime(
+        o.containerImage!);
+    checkGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork(o.vpcNetwork!);
+  }
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpec--;
+}
+
+core.int
+    buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources =
+    0;
+api.GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources
+    buildGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources() {
+  final o =
+      api.GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources();
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources++;
+  if (buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources <
+      3) {
+    o.executorsCount = 42;
+    o.maxExecutorsCount = 42;
+  }
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources(
+    api.GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources o) {
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources++;
+  if (buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources <
+      3) {
+    unittest.expect(
+      o.executorsCount!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.maxExecutorsCount!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources--;
+}
+
+core.List<core.String> buildUnnamed31() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed31(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.String> buildUnnamed32() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed32(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed33() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed33(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int
+    buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime =
+    0;
+api.GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime
+    buildGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime() {
+  final o =
+      api.GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime();
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime++;
+  if (buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime <
+      3) {
+    o.javaJars = buildUnnamed31();
+    o.properties = buildUnnamed32();
+    o.pythonPackages = buildUnnamed33();
+  }
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime(
+    api.GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime o) {
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime++;
+  if (buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime <
+      3) {
+    checkUnnamed31(o.javaJars!);
+    checkUnnamed32(o.properties!);
+    checkUnnamed33(o.pythonPackages!);
+  }
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime--;
+}
+
+core.List<core.String> buildUnnamed34() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed34(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork = 0;
+api.GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork
+    buildGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork() {
+  final o = api.GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork();
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork++;
+  if (buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork < 3) {
+    o.network = 'foo';
+    o.networkTags = buildUnnamed34();
+    o.subNetwork = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork(
+    api.GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork o) {
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork++;
+  if (buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork < 3) {
+    unittest.expect(
+      o.network!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed34(o.networkTags!);
+    unittest.expect(
+      o.subNetwork!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork--;
+}
+
+core.List<core.String> buildUnnamed35() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed35(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed36() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed36(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1TaskSparkTaskConfig = 0;
+api.GoogleCloudDataplexV1TaskSparkTaskConfig
+    buildGoogleCloudDataplexV1TaskSparkTaskConfig() {
+  final o = api.GoogleCloudDataplexV1TaskSparkTaskConfig();
+  buildCounterGoogleCloudDataplexV1TaskSparkTaskConfig++;
+  if (buildCounterGoogleCloudDataplexV1TaskSparkTaskConfig < 3) {
+    o.archiveUris = buildUnnamed35();
+    o.fileUris = buildUnnamed36();
+    o.infrastructureSpec = buildGoogleCloudDataplexV1TaskInfrastructureSpec();
+    o.mainClass = 'foo';
+    o.mainJarFileUri = 'foo';
+    o.pythonScriptFile = 'foo';
+    o.sqlScript = 'foo';
+    o.sqlScriptFile = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1TaskSparkTaskConfig--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1TaskSparkTaskConfig(
+    api.GoogleCloudDataplexV1TaskSparkTaskConfig o) {
+  buildCounterGoogleCloudDataplexV1TaskSparkTaskConfig++;
+  if (buildCounterGoogleCloudDataplexV1TaskSparkTaskConfig < 3) {
+    checkUnnamed35(o.archiveUris!);
+    checkUnnamed36(o.fileUris!);
+    checkGoogleCloudDataplexV1TaskInfrastructureSpec(o.infrastructureSpec!);
+    unittest.expect(
+      o.mainClass!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.mainJarFileUri!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.pythonScriptFile!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.sqlScript!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.sqlScriptFile!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1TaskSparkTaskConfig--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1TaskTriggerSpec = 0;
+api.GoogleCloudDataplexV1TaskTriggerSpec
+    buildGoogleCloudDataplexV1TaskTriggerSpec() {
+  final o = api.GoogleCloudDataplexV1TaskTriggerSpec();
+  buildCounterGoogleCloudDataplexV1TaskTriggerSpec++;
+  if (buildCounterGoogleCloudDataplexV1TaskTriggerSpec < 3) {
+    o.disabled = true;
+    o.maxRetries = 42;
+    o.schedule = 'foo';
+    o.startTime = 'foo';
+    o.type = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1TaskTriggerSpec--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1TaskTriggerSpec(
+    api.GoogleCloudDataplexV1TaskTriggerSpec o) {
+  buildCounterGoogleCloudDataplexV1TaskTriggerSpec++;
+  if (buildCounterGoogleCloudDataplexV1TaskTriggerSpec < 3) {
+    unittest.expect(o.disabled!, unittest.isTrue);
+    unittest.expect(
+      o.maxRetries!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.schedule!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.startTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1TaskTriggerSpec--;
+}
+
+core.Map<core.String, core.String> buildUnnamed37() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed37(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1Zone = 0;
+api.GoogleCloudDataplexV1Zone buildGoogleCloudDataplexV1Zone() {
+  final o = api.GoogleCloudDataplexV1Zone();
+  buildCounterGoogleCloudDataplexV1Zone++;
+  if (buildCounterGoogleCloudDataplexV1Zone < 3) {
+    o.assetStatus = buildGoogleCloudDataplexV1AssetStatus();
+    o.createTime = 'foo';
+    o.description = 'foo';
+    o.discoverySpec = buildGoogleCloudDataplexV1ZoneDiscoverySpec();
+    o.displayName = 'foo';
+    o.labels = buildUnnamed37();
+    o.name = 'foo';
+    o.resourceSpec = buildGoogleCloudDataplexV1ZoneResourceSpec();
+    o.state = 'foo';
+    o.type = 'foo';
+    o.uid = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1Zone--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1Zone(api.GoogleCloudDataplexV1Zone o) {
+  buildCounterGoogleCloudDataplexV1Zone++;
+  if (buildCounterGoogleCloudDataplexV1Zone < 3) {
+    checkGoogleCloudDataplexV1AssetStatus(o.assetStatus!);
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1ZoneDiscoverySpec(o.discoverySpec!);
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed37(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkGoogleCloudDataplexV1ZoneResourceSpec(o.resourceSpec!);
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.uid!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1Zone--;
+}
+
+core.List<core.String> buildUnnamed38() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed38(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed39() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed39(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudDataplexV1ZoneDiscoverySpec = 0;
+api.GoogleCloudDataplexV1ZoneDiscoverySpec
+    buildGoogleCloudDataplexV1ZoneDiscoverySpec() {
+  final o = api.GoogleCloudDataplexV1ZoneDiscoverySpec();
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpec++;
+  if (buildCounterGoogleCloudDataplexV1ZoneDiscoverySpec < 3) {
+    o.csvOptions = buildGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions();
+    o.enabled = true;
+    o.excludePatterns = buildUnnamed38();
+    o.includePatterns = buildUnnamed39();
+    o.jsonOptions = buildGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions();
+    o.schedule = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpec--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ZoneDiscoverySpec(
+    api.GoogleCloudDataplexV1ZoneDiscoverySpec o) {
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpec++;
+  if (buildCounterGoogleCloudDataplexV1ZoneDiscoverySpec < 3) {
+    checkGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions(o.csvOptions!);
+    unittest.expect(o.enabled!, unittest.isTrue);
+    checkUnnamed38(o.excludePatterns!);
+    checkUnnamed39(o.includePatterns!);
+    checkGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions(o.jsonOptions!);
+    unittest.expect(
+      o.schedule!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpec--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions = 0;
+api.GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions
+    buildGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions() {
+  final o = api.GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions();
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions++;
+  if (buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions < 3) {
+    o.delimiter = 'foo';
+    o.disableTypeInference = true;
+    o.encoding = 'foo';
+    o.headerRows = 42;
+  }
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions(
+    api.GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions o) {
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions++;
+  if (buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions < 3) {
+    unittest.expect(
+      o.delimiter!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.disableTypeInference!, unittest.isTrue);
+    unittest.expect(
+      o.encoding!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.headerRows!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions = 0;
+api.GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions
+    buildGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions() {
+  final o = api.GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions();
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions++;
+  if (buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions < 3) {
+    o.disableTypeInference = true;
+    o.encoding = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions(
+    api.GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions o) {
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions++;
+  if (buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions < 3) {
+    unittest.expect(o.disableTypeInference!, unittest.isTrue);
+    unittest.expect(
+      o.encoding!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions--;
+}
+
+core.int buildCounterGoogleCloudDataplexV1ZoneResourceSpec = 0;
+api.GoogleCloudDataplexV1ZoneResourceSpec
+    buildGoogleCloudDataplexV1ZoneResourceSpec() {
+  final o = api.GoogleCloudDataplexV1ZoneResourceSpec();
+  buildCounterGoogleCloudDataplexV1ZoneResourceSpec++;
+  if (buildCounterGoogleCloudDataplexV1ZoneResourceSpec < 3) {
+    o.locationType = 'foo';
+  }
+  buildCounterGoogleCloudDataplexV1ZoneResourceSpec--;
+  return o;
+}
+
+void checkGoogleCloudDataplexV1ZoneResourceSpec(
+    api.GoogleCloudDataplexV1ZoneResourceSpec o) {
+  buildCounterGoogleCloudDataplexV1ZoneResourceSpec++;
+  if (buildCounterGoogleCloudDataplexV1ZoneResourceSpec < 3) {
+    unittest.expect(
+      o.locationType!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudDataplexV1ZoneResourceSpec--;
+}
+
+core.List<api.GoogleCloudLocationLocation> buildUnnamed40() => [
+      buildGoogleCloudLocationLocation(),
+      buildGoogleCloudLocationLocation(),
+    ];
+
+void checkUnnamed40(core.List<api.GoogleCloudLocationLocation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudLocationLocation(o[0]);
+  checkGoogleCloudLocationLocation(o[1]);
+}
+
+core.int buildCounterGoogleCloudLocationListLocationsResponse = 0;
+api.GoogleCloudLocationListLocationsResponse
+    buildGoogleCloudLocationListLocationsResponse() {
+  final o = api.GoogleCloudLocationListLocationsResponse();
+  buildCounterGoogleCloudLocationListLocationsResponse++;
+  if (buildCounterGoogleCloudLocationListLocationsResponse < 3) {
+    o.locations = buildUnnamed40();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterGoogleCloudLocationListLocationsResponse--;
+  return o;
+}
+
+void checkGoogleCloudLocationListLocationsResponse(
+    api.GoogleCloudLocationListLocationsResponse o) {
+  buildCounterGoogleCloudLocationListLocationsResponse++;
+  if (buildCounterGoogleCloudLocationListLocationsResponse < 3) {
+    checkUnnamed40(o.locations!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudLocationListLocationsResponse--;
+}
+
+core.Map<core.String, core.String> buildUnnamed41() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed41(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed42() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed42(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o['x']!) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(
+    casted1['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted1['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted1['string'],
+    unittest.equals('foo'),
+  );
+  var casted2 = (o['y']!) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(
+    casted2['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted2['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted2['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleCloudLocationLocation = 0;
+api.GoogleCloudLocationLocation buildGoogleCloudLocationLocation() {
+  final o = api.GoogleCloudLocationLocation();
+  buildCounterGoogleCloudLocationLocation++;
+  if (buildCounterGoogleCloudLocationLocation < 3) {
+    o.displayName = 'foo';
+    o.labels = buildUnnamed41();
+    o.locationId = 'foo';
+    o.metadata = buildUnnamed42();
+    o.name = 'foo';
+  }
+  buildCounterGoogleCloudLocationLocation--;
+  return o;
+}
+
+void checkGoogleCloudLocationLocation(api.GoogleCloudLocationLocation o) {
+  buildCounterGoogleCloudLocationLocation++;
+  if (buildCounterGoogleCloudLocationLocation < 3) {
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed41(o.labels!);
+    unittest.expect(
+      o.locationId!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed42(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudLocationLocation--;
+}
+
+core.List<api.GoogleIamV1AuditLogConfig> buildUnnamed43() => [
+      buildGoogleIamV1AuditLogConfig(),
+      buildGoogleIamV1AuditLogConfig(),
+    ];
+
+void checkUnnamed43(core.List<api.GoogleIamV1AuditLogConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleIamV1AuditLogConfig(o[0]);
+  checkGoogleIamV1AuditLogConfig(o[1]);
+}
+
+core.int buildCounterGoogleIamV1AuditConfig = 0;
+api.GoogleIamV1AuditConfig buildGoogleIamV1AuditConfig() {
+  final o = api.GoogleIamV1AuditConfig();
+  buildCounterGoogleIamV1AuditConfig++;
+  if (buildCounterGoogleIamV1AuditConfig < 3) {
+    o.auditLogConfigs = buildUnnamed43();
+    o.service = 'foo';
+  }
+  buildCounterGoogleIamV1AuditConfig--;
+  return o;
+}
+
+void checkGoogleIamV1AuditConfig(api.GoogleIamV1AuditConfig o) {
+  buildCounterGoogleIamV1AuditConfig++;
+  if (buildCounterGoogleIamV1AuditConfig < 3) {
+    checkUnnamed43(o.auditLogConfigs!);
+    unittest.expect(
+      o.service!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleIamV1AuditConfig--;
+}
+
+core.List<core.String> buildUnnamed44() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed44(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleIamV1AuditLogConfig = 0;
+api.GoogleIamV1AuditLogConfig buildGoogleIamV1AuditLogConfig() {
+  final o = api.GoogleIamV1AuditLogConfig();
+  buildCounterGoogleIamV1AuditLogConfig++;
+  if (buildCounterGoogleIamV1AuditLogConfig < 3) {
+    o.exemptedMembers = buildUnnamed44();
+    o.logType = 'foo';
+  }
+  buildCounterGoogleIamV1AuditLogConfig--;
+  return o;
+}
+
+void checkGoogleIamV1AuditLogConfig(api.GoogleIamV1AuditLogConfig o) {
+  buildCounterGoogleIamV1AuditLogConfig++;
+  if (buildCounterGoogleIamV1AuditLogConfig < 3) {
+    checkUnnamed44(o.exemptedMembers!);
+    unittest.expect(
+      o.logType!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleIamV1AuditLogConfig--;
+}
+
+core.List<core.String> buildUnnamed45() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed45(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleIamV1Binding = 0;
+api.GoogleIamV1Binding buildGoogleIamV1Binding() {
+  final o = api.GoogleIamV1Binding();
+  buildCounterGoogleIamV1Binding++;
+  if (buildCounterGoogleIamV1Binding < 3) {
+    o.condition = buildGoogleTypeExpr();
+    o.members = buildUnnamed45();
+    o.role = 'foo';
+  }
+  buildCounterGoogleIamV1Binding--;
+  return o;
+}
+
+void checkGoogleIamV1Binding(api.GoogleIamV1Binding o) {
+  buildCounterGoogleIamV1Binding++;
+  if (buildCounterGoogleIamV1Binding < 3) {
+    checkGoogleTypeExpr(o.condition!);
+    checkUnnamed45(o.members!);
+    unittest.expect(
+      o.role!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleIamV1Binding--;
+}
+
+core.List<api.GoogleIamV1AuditConfig> buildUnnamed46() => [
+      buildGoogleIamV1AuditConfig(),
+      buildGoogleIamV1AuditConfig(),
+    ];
+
+void checkUnnamed46(core.List<api.GoogleIamV1AuditConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleIamV1AuditConfig(o[0]);
+  checkGoogleIamV1AuditConfig(o[1]);
+}
+
+core.List<api.GoogleIamV1Binding> buildUnnamed47() => [
+      buildGoogleIamV1Binding(),
+      buildGoogleIamV1Binding(),
+    ];
+
+void checkUnnamed47(core.List<api.GoogleIamV1Binding> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleIamV1Binding(o[0]);
+  checkGoogleIamV1Binding(o[1]);
+}
+
+core.int buildCounterGoogleIamV1Policy = 0;
+api.GoogleIamV1Policy buildGoogleIamV1Policy() {
+  final o = api.GoogleIamV1Policy();
+  buildCounterGoogleIamV1Policy++;
+  if (buildCounterGoogleIamV1Policy < 3) {
+    o.auditConfigs = buildUnnamed46();
+    o.bindings = buildUnnamed47();
+    o.etag = 'foo';
+    o.version = 42;
+  }
+  buildCounterGoogleIamV1Policy--;
+  return o;
+}
+
+void checkGoogleIamV1Policy(api.GoogleIamV1Policy o) {
+  buildCounterGoogleIamV1Policy++;
+  if (buildCounterGoogleIamV1Policy < 3) {
+    checkUnnamed46(o.auditConfigs!);
+    checkUnnamed47(o.bindings!);
+    unittest.expect(
+      o.etag!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.version!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterGoogleIamV1Policy--;
+}
+
+core.int buildCounterGoogleIamV1SetIamPolicyRequest = 0;
+api.GoogleIamV1SetIamPolicyRequest buildGoogleIamV1SetIamPolicyRequest() {
+  final o = api.GoogleIamV1SetIamPolicyRequest();
+  buildCounterGoogleIamV1SetIamPolicyRequest++;
+  if (buildCounterGoogleIamV1SetIamPolicyRequest < 3) {
+    o.policy = buildGoogleIamV1Policy();
+    o.updateMask = 'foo';
+  }
+  buildCounterGoogleIamV1SetIamPolicyRequest--;
+  return o;
+}
+
+void checkGoogleIamV1SetIamPolicyRequest(api.GoogleIamV1SetIamPolicyRequest o) {
+  buildCounterGoogleIamV1SetIamPolicyRequest++;
+  if (buildCounterGoogleIamV1SetIamPolicyRequest < 3) {
+    checkGoogleIamV1Policy(o.policy!);
+    unittest.expect(
+      o.updateMask!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleIamV1SetIamPolicyRequest--;
+}
+
+core.List<core.String> buildUnnamed48() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed48(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleIamV1TestIamPermissionsRequest = 0;
+api.GoogleIamV1TestIamPermissionsRequest
+    buildGoogleIamV1TestIamPermissionsRequest() {
+  final o = api.GoogleIamV1TestIamPermissionsRequest();
+  buildCounterGoogleIamV1TestIamPermissionsRequest++;
+  if (buildCounterGoogleIamV1TestIamPermissionsRequest < 3) {
+    o.permissions = buildUnnamed48();
+  }
+  buildCounterGoogleIamV1TestIamPermissionsRequest--;
+  return o;
+}
+
+void checkGoogleIamV1TestIamPermissionsRequest(
+    api.GoogleIamV1TestIamPermissionsRequest o) {
+  buildCounterGoogleIamV1TestIamPermissionsRequest++;
+  if (buildCounterGoogleIamV1TestIamPermissionsRequest < 3) {
+    checkUnnamed48(o.permissions!);
+  }
+  buildCounterGoogleIamV1TestIamPermissionsRequest--;
+}
+
+core.List<core.String> buildUnnamed49() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed49(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleIamV1TestIamPermissionsResponse = 0;
+api.GoogleIamV1TestIamPermissionsResponse
+    buildGoogleIamV1TestIamPermissionsResponse() {
+  final o = api.GoogleIamV1TestIamPermissionsResponse();
+  buildCounterGoogleIamV1TestIamPermissionsResponse++;
+  if (buildCounterGoogleIamV1TestIamPermissionsResponse < 3) {
+    o.permissions = buildUnnamed49();
+  }
+  buildCounterGoogleIamV1TestIamPermissionsResponse--;
+  return o;
+}
+
+void checkGoogleIamV1TestIamPermissionsResponse(
+    api.GoogleIamV1TestIamPermissionsResponse o) {
+  buildCounterGoogleIamV1TestIamPermissionsResponse++;
+  if (buildCounterGoogleIamV1TestIamPermissionsResponse < 3) {
+    checkUnnamed49(o.permissions!);
+  }
+  buildCounterGoogleIamV1TestIamPermissionsResponse--;
+}
+
+core.int buildCounterGoogleLongrunningCancelOperationRequest = 0;
+api.GoogleLongrunningCancelOperationRequest
+    buildGoogleLongrunningCancelOperationRequest() {
+  final o = api.GoogleLongrunningCancelOperationRequest();
+  buildCounterGoogleLongrunningCancelOperationRequest++;
+  if (buildCounterGoogleLongrunningCancelOperationRequest < 3) {}
+  buildCounterGoogleLongrunningCancelOperationRequest--;
+  return o;
+}
+
+void checkGoogleLongrunningCancelOperationRequest(
+    api.GoogleLongrunningCancelOperationRequest o) {
+  buildCounterGoogleLongrunningCancelOperationRequest++;
+  if (buildCounterGoogleLongrunningCancelOperationRequest < 3) {}
+  buildCounterGoogleLongrunningCancelOperationRequest--;
+}
+
+core.List<api.GoogleLongrunningOperation> buildUnnamed50() => [
+      buildGoogleLongrunningOperation(),
+      buildGoogleLongrunningOperation(),
+    ];
+
+void checkUnnamed50(core.List<api.GoogleLongrunningOperation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleLongrunningOperation(o[0]);
+  checkGoogleLongrunningOperation(o[1]);
+}
+
+core.int buildCounterGoogleLongrunningListOperationsResponse = 0;
+api.GoogleLongrunningListOperationsResponse
+    buildGoogleLongrunningListOperationsResponse() {
+  final o = api.GoogleLongrunningListOperationsResponse();
+  buildCounterGoogleLongrunningListOperationsResponse++;
+  if (buildCounterGoogleLongrunningListOperationsResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.operations = buildUnnamed50();
+  }
+  buildCounterGoogleLongrunningListOperationsResponse--;
+  return o;
+}
+
+void checkGoogleLongrunningListOperationsResponse(
+    api.GoogleLongrunningListOperationsResponse o) {
+  buildCounterGoogleLongrunningListOperationsResponse++;
+  if (buildCounterGoogleLongrunningListOperationsResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed50(o.operations!);
+  }
+  buildCounterGoogleLongrunningListOperationsResponse--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed51() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed51(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o['x']!) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(
+    casted3['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted3['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted3['string'],
+    unittest.equals('foo'),
+  );
+  var casted4 = (o['y']!) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(
+    casted4['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted4['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted4['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed52() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed52(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o['x']!) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(
+    casted5['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted5['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted5['string'],
+    unittest.equals('foo'),
+  );
+  var casted6 = (o['y']!) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(
+    casted6['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted6['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted6['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterGoogleLongrunningOperation = 0;
+api.GoogleLongrunningOperation buildGoogleLongrunningOperation() {
+  final o = api.GoogleLongrunningOperation();
+  buildCounterGoogleLongrunningOperation++;
+  if (buildCounterGoogleLongrunningOperation < 3) {
+    o.done = true;
+    o.error = buildGoogleRpcStatus();
+    o.metadata = buildUnnamed51();
+    o.name = 'foo';
+    o.response = buildUnnamed52();
+  }
+  buildCounterGoogleLongrunningOperation--;
+  return o;
+}
+
+void checkGoogleLongrunningOperation(api.GoogleLongrunningOperation o) {
+  buildCounterGoogleLongrunningOperation++;
+  if (buildCounterGoogleLongrunningOperation < 3) {
+    unittest.expect(o.done!, unittest.isTrue);
+    checkGoogleRpcStatus(o.error!);
+    checkUnnamed51(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed52(o.response!);
+  }
+  buildCounterGoogleLongrunningOperation--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed53() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed53(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted7 = (o['x']!) as core.Map;
+  unittest.expect(casted7, unittest.hasLength(3));
+  unittest.expect(
+    casted7['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted7['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted7['string'],
+    unittest.equals('foo'),
+  );
+  var casted8 = (o['y']!) as core.Map;
+  unittest.expect(casted8, unittest.hasLength(3));
+  unittest.expect(
+    casted8['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted8['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted8['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.Map<core.String, core.Object?>> buildUnnamed54() => [
+      buildUnnamed53(),
+      buildUnnamed53(),
+    ];
+
+void checkUnnamed54(core.List<core.Map<core.String, core.Object?>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed53(o[0]);
+  checkUnnamed53(o[1]);
+}
+
+core.int buildCounterGoogleRpcStatus = 0;
+api.GoogleRpcStatus buildGoogleRpcStatus() {
+  final o = api.GoogleRpcStatus();
+  buildCounterGoogleRpcStatus++;
+  if (buildCounterGoogleRpcStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed54();
+    o.message = 'foo';
+  }
+  buildCounterGoogleRpcStatus--;
+  return o;
+}
+
+void checkGoogleRpcStatus(api.GoogleRpcStatus o) {
+  buildCounterGoogleRpcStatus++;
+  if (buildCounterGoogleRpcStatus < 3) {
+    unittest.expect(
+      o.code!,
+      unittest.equals(42),
+    );
+    checkUnnamed54(o.details!);
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleRpcStatus--;
+}
+
+core.int buildCounterGoogleTypeExpr = 0;
+api.GoogleTypeExpr buildGoogleTypeExpr() {
+  final o = api.GoogleTypeExpr();
+  buildCounterGoogleTypeExpr++;
+  if (buildCounterGoogleTypeExpr < 3) {
+    o.description = 'foo';
+    o.expression = 'foo';
+    o.location = 'foo';
+    o.title = 'foo';
+  }
+  buildCounterGoogleTypeExpr--;
+  return o;
+}
+
+void checkGoogleTypeExpr(api.GoogleTypeExpr o) {
+  buildCounterGoogleTypeExpr++;
+  if (buildCounterGoogleTypeExpr < 3) {
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.expression!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.location!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.title!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleTypeExpr--;
+}
+
+void main() {
+  unittest.group('obj-schema-Empty', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildEmpty();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Empty.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Action', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Action();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Action.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Action(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1ActionFailedSecurityPolicyApply', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ActionFailedSecurityPolicyApply();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDataplexV1ActionFailedSecurityPolicyApply.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ActionFailedSecurityPolicyApply(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ActionIncompatibleDataSchema',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ActionIncompatibleDataSchema();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ActionIncompatibleDataSchema.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ActionIncompatibleDataSchema(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ActionInvalidDataFormat', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ActionInvalidDataFormat();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ActionInvalidDataFormat.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ActionInvalidDataFormat(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1ActionInvalidDataOrganization', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ActionInvalidDataOrganization();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDataplexV1ActionInvalidDataOrganization.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ActionInvalidDataOrganization(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ActionInvalidDataPartition',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ActionInvalidDataPartition();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ActionInvalidDataPartition.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ActionInvalidDataPartition(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ActionMissingData', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ActionMissingData();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ActionMissingData.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ActionMissingData(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ActionMissingResource', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ActionMissingResource();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ActionMissingResource.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ActionMissingResource(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ActionUnauthorizedResource',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ActionUnauthorizedResource();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ActionUnauthorizedResource.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ActionUnauthorizedResource(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Asset', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Asset();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Asset.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Asset(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1AssetDiscoverySpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1AssetDiscoverySpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1AssetDiscoverySpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1AssetDiscoverySpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1AssetDiscoverySpecCsvOptions(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1AssetDiscoverySpecJsonOptions(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1AssetDiscoveryStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1AssetDiscoveryStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1AssetDiscoveryStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1AssetDiscoveryStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1AssetDiscoveryStatusStats',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1AssetDiscoveryStatusStats();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1AssetDiscoveryStatusStats.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1AssetDiscoveryStatusStats(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1AssetResourceSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1AssetResourceSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1AssetResourceSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1AssetResourceSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1AssetResourceStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1AssetResourceStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1AssetResourceStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1AssetResourceStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1AssetSecurityStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1AssetSecurityStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1AssetSecurityStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1AssetSecurityStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1AssetStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1AssetStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1AssetStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1AssetStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1CancelJobRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1CancelJobRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1CancelJobRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1CancelJobRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Content', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Content();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Content.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Content(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ContentNotebook', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ContentNotebook();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ContentNotebook.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ContentNotebook(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ContentSqlScript', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ContentSqlScript();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ContentSqlScript.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ContentSqlScript(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Entity', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Entity();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Entity.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Entity(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1EntityCompatibilityStatus',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1EntityCompatibilityStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1EntityCompatibilityStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1EntityCompatibilityStatus(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o =
+          buildGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1EntityCompatibilityStatusCompatibility
+          .fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1EntityCompatibilityStatusCompatibility(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Environment', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Environment();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Environment.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Environment(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1EnvironmentEndpoints', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1EnvironmentEndpoints();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1EnvironmentEndpoints.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1EnvironmentEndpoints(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1EnvironmentInfrastructureSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1EnvironmentInfrastructureSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDataplexV1EnvironmentInfrastructureSpec.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1EnvironmentInfrastructureSpec(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o =
+          buildGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources
+              .fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources(
+          od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o =
+          buildGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime
+              .fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1EnvironmentSessionSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1EnvironmentSessionSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1EnvironmentSessionSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1EnvironmentSessionSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1EnvironmentSessionStatus',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1EnvironmentSessionStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1EnvironmentSessionStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1EnvironmentSessionStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Job', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Job();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Job.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Job(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Lake', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Lake();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Lake.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Lake(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1LakeMetastore', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1LakeMetastore();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1LakeMetastore.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1LakeMetastore(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1LakeMetastoreStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1LakeMetastoreStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1LakeMetastoreStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1LakeMetastoreStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListActionsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListActionsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListActionsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListActionsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListAssetsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListAssetsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListAssetsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListAssetsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListContentResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListContentResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListContentResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListContentResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListEntitiesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListEntitiesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListEntitiesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListEntitiesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListEnvironmentsResponse',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListEnvironmentsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListEnvironmentsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListEnvironmentsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListJobsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListJobsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListJobsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListJobsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListLakesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListLakesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListLakesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListLakesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListPartitionsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListPartitionsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListPartitionsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListPartitionsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListSessionsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListSessionsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListSessionsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListSessionsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListTasksResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListTasksResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListTasksResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListTasksResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ListZonesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ListZonesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ListZonesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ListZonesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Partition', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Partition();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Partition.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Partition(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Schema', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Schema();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Schema.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Schema(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1SchemaPartitionField', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1SchemaPartitionField();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1SchemaPartitionField.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1SchemaPartitionField(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1SchemaSchemaField', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1SchemaSchemaField();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1SchemaSchemaField.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1SchemaSchemaField(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Session', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Session();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Session.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Session(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1StorageFormat', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1StorageFormat();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1StorageFormat.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1StorageFormat(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1StorageFormatCsvOptions', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1StorageFormatCsvOptions();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1StorageFormatCsvOptions.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1StorageFormatCsvOptions(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1StorageFormatJsonOptions',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1StorageFormatJsonOptions();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1StorageFormatJsonOptions.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1StorageFormatJsonOptions(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Task', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Task();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Task.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Task(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1TaskExecutionSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1TaskExecutionSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1TaskExecutionSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1TaskExecutionSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1TaskInfrastructureSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1TaskInfrastructureSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1TaskInfrastructureSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1TaskInfrastructureSpec(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o =
+          buildGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources
+              .fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o =
+          buildGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime
+              .fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime(od);
+    });
+  });
+
+  unittest.group(
+      'obj-schema-GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1TaskSparkTaskConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1TaskSparkTaskConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1TaskSparkTaskConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1TaskSparkTaskConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1TaskTriggerSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1TaskTriggerSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1TaskTriggerSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1TaskTriggerSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1Zone', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1Zone();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1Zone.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1Zone(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ZoneDiscoverySpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ZoneDiscoverySpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ZoneDiscoverySpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ZoneDiscoverySpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions',
+      () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudDataplexV1ZoneResourceSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudDataplexV1ZoneResourceSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudDataplexV1ZoneResourceSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudDataplexV1ZoneResourceSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudLocationListLocationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudLocationListLocationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudLocationListLocationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudLocationListLocationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudLocationLocation', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudLocationLocation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudLocationLocation.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudLocationLocation(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleIamV1AuditConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleIamV1AuditConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleIamV1AuditConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleIamV1AuditConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleIamV1AuditLogConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleIamV1AuditLogConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleIamV1AuditLogConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleIamV1AuditLogConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleIamV1Binding', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleIamV1Binding();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleIamV1Binding.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleIamV1Binding(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleIamV1Policy', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleIamV1Policy();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleIamV1Policy.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleIamV1Policy(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleIamV1SetIamPolicyRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleIamV1SetIamPolicyRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleIamV1SetIamPolicyRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleIamV1SetIamPolicyRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleIamV1TestIamPermissionsRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleIamV1TestIamPermissionsRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleIamV1TestIamPermissionsRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleIamV1TestIamPermissionsRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleIamV1TestIamPermissionsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleIamV1TestIamPermissionsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleIamV1TestIamPermissionsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleIamV1TestIamPermissionsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleLongrunningCancelOperationRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleLongrunningCancelOperationRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleLongrunningCancelOperationRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleLongrunningCancelOperationRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleLongrunningListOperationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleLongrunningListOperationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleLongrunningListOperationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleLongrunningListOperationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleLongrunningOperation', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleLongrunningOperation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleLongrunningOperation.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleLongrunningOperation(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleRpcStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleRpcStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleRpcStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleRpcStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleTypeExpr', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleTypeExpr();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleTypeExpr.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleTypeExpr(od);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudLocationLocation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleCloudLocationLocation(
+          response as api.GoogleCloudLocationLocation);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudLocationListLocationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudLocationListLocationsResponse(
+          response as api.GoogleCloudLocationListLocationsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes;
+      final arg_request = buildGoogleCloudDataplexV1Lake();
+      final arg_parent = 'foo';
+      final arg_lakeId = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Lake.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Lake(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['lakeId']!.first,
+          unittest.equals(arg_lakeId),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          lakeId: arg_lakeId,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Lake());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Lake(response as api.GoogleCloudDataplexV1Lake);
+    });
+
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleCloudDataplexV1ListLakesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListLakesResponse(
+          response as api.GoogleCloudDataplexV1ListLakesResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes;
+      final arg_request = buildGoogleCloudDataplexV1Lake();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Lake.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Lake(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes;
+      final arg_request = buildGoogleIamV1SetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1SetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes;
+      final arg_request = buildGoogleIamV1TestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1TestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleIamV1TestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1TestIamPermissionsResponse(
+          response as api.GoogleIamV1TestIamPermissionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesActionsResource', () {
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.actions;
+      final arg_parent = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudDataplexV1ListActionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListActionsResponse(
+          response as api.GoogleCloudDataplexV1ListActionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesContentResource', () {
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.content;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.content;
+      final arg_request = buildGoogleIamV1SetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1SetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.content;
+      final arg_request = buildGoogleIamV1TestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1TestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleIamV1TestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1TestIamPermissionsResponse(
+          response as api.GoogleIamV1TestIamPermissionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesContentitemsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.contentitems;
+      final arg_request = buildGoogleCloudDataplexV1Content();
+      final arg_parent = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Content.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Content(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Content());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          validateOnly: arg_validateOnly, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Content(
+          response as api.GoogleCloudDataplexV1Content);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.contentitems;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.contentitems;
+      final arg_name = 'foo';
+      final arg_view = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['view']!.first,
+          unittest.equals(arg_view),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Content());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.get(arg_name, view: arg_view, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Content(
+          response as api.GoogleCloudDataplexV1Content);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.contentitems;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudDataplexV1ListContentResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListContentResponse(
+          response as api.GoogleCloudDataplexV1ListContentResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.contentitems;
+      final arg_request = buildGoogleCloudDataplexV1Content();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Content.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Content(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Content());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Content(
+          response as api.GoogleCloudDataplexV1Content);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesEnvironmentsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.environments;
+      final arg_request = buildGoogleCloudDataplexV1Environment();
+      final arg_parent = 'foo';
+      final arg_environmentId = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Environment.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Environment(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['environmentId']!.first,
+          unittest.equals(arg_environmentId),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          environmentId: arg_environmentId,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.environments;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.environments;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleCloudDataplexV1Environment());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Environment(
+          response as api.GoogleCloudDataplexV1Environment);
+    });
+
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.environments;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.environments;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudDataplexV1ListEnvironmentsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListEnvironmentsResponse(
+          response as api.GoogleCloudDataplexV1ListEnvironmentsResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.environments;
+      final arg_request = buildGoogleCloudDataplexV1Environment();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Environment.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Environment(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.environments;
+      final arg_request = buildGoogleIamV1SetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1SetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.environments;
+      final arg_request = buildGoogleIamV1TestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1TestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleIamV1TestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1TestIamPermissionsResponse(
+          response as api.GoogleIamV1TestIamPermissionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesEnvironmentsSessionsResource',
+      () {
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock)
+          .projects
+          .locations
+          .lakes
+          .environments
+          .sessions;
+      final arg_parent = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudDataplexV1ListSessionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListSessionsResponse(
+          response as api.GoogleCloudDataplexV1ListSessionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesTasksResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.tasks;
+      final arg_request = buildGoogleCloudDataplexV1Task();
+      final arg_parent = 'foo';
+      final arg_taskId = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Task.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Task(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['taskId']!.first,
+          unittest.equals(arg_taskId),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          taskId: arg_taskId,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.tasks;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.tasks;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Task());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Task(response as api.GoogleCloudDataplexV1Task);
+    });
+
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.tasks;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.tasks;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleCloudDataplexV1ListTasksResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListTasksResponse(
+          response as api.GoogleCloudDataplexV1ListTasksResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.tasks;
+      final arg_request = buildGoogleCloudDataplexV1Task();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Task.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Task(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.tasks;
+      final arg_request = buildGoogleIamV1SetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1SetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.tasks;
+      final arg_request = buildGoogleIamV1TestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1TestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleIamV1TestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1TestIamPermissionsResponse(
+          response as api.GoogleIamV1TestIamPermissionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesTasksJobsResource', () {
+    unittest.test('method--cancel', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.tasks.jobs;
+      final arg_request = buildGoogleCloudDataplexV1CancelJobRequest();
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1CancelJobRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1CancelJobRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.cancel(arg_request, arg_name, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.tasks.jobs;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Job());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Job(response as api.GoogleCloudDataplexV1Job);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.tasks.jobs;
+      final arg_parent = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleCloudDataplexV1ListJobsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListJobsResponse(
+          response as api.GoogleCloudDataplexV1ListJobsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesZonesResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.zones;
+      final arg_request = buildGoogleCloudDataplexV1Zone();
+      final arg_parent = 'foo';
+      final arg_validateOnly = true;
+      final arg_zoneId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Zone.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Zone(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['zoneId']!.first,
+          unittest.equals(arg_zoneId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          validateOnly: arg_validateOnly,
+          zoneId: arg_zoneId,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.zones;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.zones;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Zone());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Zone(response as api.GoogleCloudDataplexV1Zone);
+    });
+
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.zones;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.zones;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleCloudDataplexV1ListZonesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListZonesResponse(
+          response as api.GoogleCloudDataplexV1ListZonesResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.zones;
+      final arg_request = buildGoogleCloudDataplexV1Zone();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Zone.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Zone(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.zones;
+      final arg_request = buildGoogleIamV1SetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1SetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.lakes.zones;
+      final arg_request = buildGoogleIamV1TestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1TestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleIamV1TestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1TestIamPermissionsResponse(
+          response as api.GoogleIamV1TestIamPermissionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesZonesActionsResource', () {
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.actions;
+      final arg_parent = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudDataplexV1ListActionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListActionsResponse(
+          response as api.GoogleCloudDataplexV1ListActionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesZonesAssetsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.assets;
+      final arg_request = buildGoogleCloudDataplexV1Asset();
+      final arg_parent = 'foo';
+      final arg_assetId = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Asset.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Asset(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['assetId']!.first,
+          unittest.equals(arg_assetId),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          assetId: arg_assetId,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.assets;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.assets;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Asset());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Asset(
+          response as api.GoogleCloudDataplexV1Asset);
+    });
+
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.assets;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.assets;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleCloudDataplexV1ListAssetsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListAssetsResponse(
+          response as api.GoogleCloudDataplexV1ListAssetsResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.assets;
+      final arg_request = buildGoogleCloudDataplexV1Asset();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Asset.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Asset(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask,
+          validateOnly: arg_validateOnly,
+          $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.assets;
+      final arg_request = buildGoogleIamV1SetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1SetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleIamV1Policy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1Policy(response as api.GoogleIamV1Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.assets;
+      final arg_request = buildGoogleIamV1TestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleIamV1TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleIamV1TestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleIamV1TestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkGoogleIamV1TestIamPermissionsResponse(
+          response as api.GoogleIamV1TestIamPermissionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesZonesAssetsActionsResource',
+      () {
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock)
+          .projects
+          .locations
+          .lakes
+          .zones
+          .assets
+          .actions;
+      final arg_parent = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudDataplexV1ListActionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListActionsResponse(
+          response as api.GoogleCloudDataplexV1ListActionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsLakesZonesEntitiesResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.entities;
+      final arg_request = buildGoogleCloudDataplexV1Entity();
+      final arg_parent = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Entity.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Entity(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Entity());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          validateOnly: arg_validateOnly, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Entity(
+          response as api.GoogleCloudDataplexV1Entity);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.entities;
+      final arg_name = 'foo';
+      final arg_etag = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['etag']!.first,
+          unittest.equals(arg_etag),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.delete(arg_name, etag: arg_etag, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.entities;
+      final arg_name = 'foo';
+      final arg_view = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['view']!.first,
+          unittest.equals(arg_view),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Entity());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.get(arg_name, view: arg_view, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Entity(
+          response as api.GoogleCloudDataplexV1Entity);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.entities;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_view = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['view']!.first,
+          unittest.equals(arg_view),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudDataplexV1ListEntitiesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          view: arg_view,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListEntitiesResponse(
+          response as api.GoogleCloudDataplexV1ListEntitiesResponse);
+    });
+
+    unittest.test('method--update', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.CloudDataplexApi(mock).projects.locations.lakes.zones.entities;
+      final arg_request = buildGoogleCloudDataplexV1Entity();
+      final arg_name = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Entity.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Entity(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Entity());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.update(arg_request, arg_name,
+          validateOnly: arg_validateOnly, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Entity(
+          response as api.GoogleCloudDataplexV1Entity);
+    });
+  });
+
+  unittest.group(
+      'resource-ProjectsLocationsLakesZonesEntitiesPartitionsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock)
+          .projects
+          .locations
+          .lakes
+          .zones
+          .entities
+          .partitions;
+      final arg_request = buildGoogleCloudDataplexV1Partition();
+      final arg_parent = 'foo';
+      final arg_validateOnly = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleCloudDataplexV1Partition.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleCloudDataplexV1Partition(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['validateOnly']!.first,
+          unittest.equals('$arg_validateOnly'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Partition());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          validateOnly: arg_validateOnly, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Partition(
+          response as api.GoogleCloudDataplexV1Partition);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock)
+          .projects
+          .locations
+          .lakes
+          .zones
+          .entities
+          .partitions;
+      final arg_name = 'foo';
+      final arg_etag = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['etag']!.first,
+          unittest.equals(arg_etag),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.delete(arg_name, etag: arg_etag, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock)
+          .projects
+          .locations
+          .lakes
+          .zones
+          .entities
+          .partitions;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleCloudDataplexV1Partition());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleCloudDataplexV1Partition(
+          response as api.GoogleCloudDataplexV1Partition);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock)
+          .projects
+          .locations
+          .lakes
+          .zones
+          .entities
+          .partitions;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleCloudDataplexV1ListPartitionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleCloudDataplexV1ListPartitionsResponse(
+          response as api.GoogleCloudDataplexV1ListPartitionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsOperationsResource', () {
+    unittest.test('method--cancel', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.operations;
+      final arg_request = buildGoogleLongrunningCancelOperationRequest();
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GoogleLongrunningCancelOperationRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGoogleLongrunningCancelOperationRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.cancel(arg_request, arg_name, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudDataplexApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleLongrunningListOperationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleLongrunningListOperationsResponse(
+          response as api.GoogleLongrunningListOperationsResponse);
+    });
+  });
+}
diff --git a/generated/googleapis/test/dataproc/v1_test.dart b/generated/googleapis/test/dataproc/v1_test.dart
index 881f3b9..2c6c4e0 100644
--- a/generated/googleapis/test/dataproc/v1_test.dart
+++ b/generated/googleapis/test/dataproc/v1_test.dart
@@ -444,6 +444,7 @@
   if (buildCounterClusterConfig < 3) {
     o.autoscalingConfig = buildAutoscalingConfig();
     o.configBucket = 'foo';
+    o.dataprocMetricConfig = buildDataprocMetricConfig();
     o.encryptionConfig = buildEncryptionConfig();
     o.endpointConfig = buildEndpointConfig();
     o.gceClusterConfig = buildGceClusterConfig();
@@ -470,6 +471,7 @@
       o.configBucket!,
       unittest.equals('foo'),
     );
+    checkDataprocMetricConfig(o.dataprocMetricConfig!);
     checkEncryptionConfig(o.encryptionConfig!);
     checkEndpointConfig(o.endpointConfig!);
     checkGceClusterConfig(o.gceClusterConfig!);
@@ -642,6 +644,36 @@
   buildCounterConfidentialInstanceConfig--;
 }
 
+core.List<api.Metric> buildUnnamed10() => [
+      buildMetric(),
+      buildMetric(),
+    ];
+
+void checkUnnamed10(core.List<api.Metric> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMetric(o[0]);
+  checkMetric(o[1]);
+}
+
+core.int buildCounterDataprocMetricConfig = 0;
+api.DataprocMetricConfig buildDataprocMetricConfig() {
+  final o = api.DataprocMetricConfig();
+  buildCounterDataprocMetricConfig++;
+  if (buildCounterDataprocMetricConfig < 3) {
+    o.metrics = buildUnnamed10();
+  }
+  buildCounterDataprocMetricConfig--;
+  return o;
+}
+
+void checkDataprocMetricConfig(api.DataprocMetricConfig o) {
+  buildCounterDataprocMetricConfig++;
+  if (buildCounterDataprocMetricConfig < 3) {
+    checkUnnamed10(o.metrics!);
+  }
+  buildCounterDataprocMetricConfig--;
+}
+
 core.int buildCounterDiagnoseClusterRequest = 0;
 api.DiagnoseClusterRequest buildDiagnoseClusterRequest() {
   final o = api.DiagnoseClusterRequest();
@@ -731,12 +763,12 @@
   buildCounterEncryptionConfig--;
 }
 
-core.Map<core.String, core.String> buildUnnamed10() => {
+core.Map<core.String, core.String> buildUnnamed11() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed10(core.Map<core.String, core.String> o) {
+void checkUnnamed11(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -754,7 +786,7 @@
   buildCounterEndpointConfig++;
   if (buildCounterEndpointConfig < 3) {
     o.enableHttpPortAccess = true;
-    o.httpPorts = buildUnnamed10();
+    o.httpPorts = buildUnnamed11();
   }
   buildCounterEndpointConfig--;
   return o;
@@ -764,7 +796,7 @@
   buildCounterEndpointConfig++;
   if (buildCounterEndpointConfig < 3) {
     unittest.expect(o.enableHttpPortAccess!, unittest.isTrue);
-    checkUnnamed10(o.httpPorts!);
+    checkUnnamed11(o.httpPorts!);
   }
   buildCounterEndpointConfig--;
 }
@@ -790,12 +822,12 @@
   buildCounterEnvironmentConfig--;
 }
 
-core.List<core.String> buildUnnamed11() => [
+core.List<core.String> buildUnnamed12() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed11(core.List<core.String> o) {
+void checkUnnamed12(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -813,7 +845,7 @@
   buildCounterExecutionConfig++;
   if (buildCounterExecutionConfig < 3) {
     o.kmsKey = 'foo';
-    o.networkTags = buildUnnamed11();
+    o.networkTags = buildUnnamed12();
     o.networkUri = 'foo';
     o.serviceAccount = 'foo';
     o.subnetworkUri = 'foo';
@@ -829,7 +861,7 @@
       o.kmsKey!,
       unittest.equals('foo'),
     );
-    checkUnnamed11(o.networkTags!);
+    checkUnnamed12(o.networkTags!);
     unittest.expect(
       o.networkUri!,
       unittest.equals('foo'),
@@ -883,12 +915,12 @@
   buildCounterExpr--;
 }
 
-core.Map<core.String, core.String> buildUnnamed12() => {
+core.Map<core.String, core.String> buildUnnamed13() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed12(core.Map<core.String, core.String> o) {
+void checkUnnamed13(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -900,23 +932,6 @@
   );
 }
 
-core.List<core.String> buildUnnamed13() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed13(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed14() => [
       'foo',
       'foo',
@@ -934,6 +949,23 @@
   );
 }
 
+core.List<core.String> buildUnnamed15() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed15(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterGceClusterConfig = 0;
 api.GceClusterConfig buildGceClusterConfig() {
   final o = api.GceClusterConfig();
@@ -941,16 +973,16 @@
   if (buildCounterGceClusterConfig < 3) {
     o.confidentialInstanceConfig = buildConfidentialInstanceConfig();
     o.internalIpOnly = true;
-    o.metadata = buildUnnamed12();
+    o.metadata = buildUnnamed13();
     o.networkUri = 'foo';
     o.nodeGroupAffinity = buildNodeGroupAffinity();
     o.privateIpv6GoogleAccess = 'foo';
     o.reservationAffinity = buildReservationAffinity();
     o.serviceAccount = 'foo';
-    o.serviceAccountScopes = buildUnnamed13();
+    o.serviceAccountScopes = buildUnnamed14();
     o.shieldedInstanceConfig = buildShieldedInstanceConfig();
     o.subnetworkUri = 'foo';
-    o.tags = buildUnnamed14();
+    o.tags = buildUnnamed15();
     o.zoneUri = 'foo';
   }
   buildCounterGceClusterConfig--;
@@ -962,7 +994,7 @@
   if (buildCounterGceClusterConfig < 3) {
     checkConfidentialInstanceConfig(o.confidentialInstanceConfig!);
     unittest.expect(o.internalIpOnly!, unittest.isTrue);
-    checkUnnamed12(o.metadata!);
+    checkUnnamed13(o.metadata!);
     unittest.expect(
       o.networkUri!,
       unittest.equals('foo'),
@@ -977,13 +1009,13 @@
       o.serviceAccount!,
       unittest.equals('foo'),
     );
-    checkUnnamed13(o.serviceAccountScopes!);
+    checkUnnamed14(o.serviceAccountScopes!);
     checkShieldedInstanceConfig(o.shieldedInstanceConfig!);
     unittest.expect(
       o.subnetworkUri!,
       unittest.equals('foo'),
     );
-    checkUnnamed14(o.tags!);
+    checkUnnamed15(o.tags!);
     unittest.expect(
       o.zoneUri!,
       unittest.equals('foo'),
@@ -1052,23 +1084,6 @@
   buildCounterGkeClusterConfig--;
 }
 
-core.List<core.String> buildUnnamed15() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed15(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed16() => [
       'foo',
       'foo',
@@ -1120,12 +1135,29 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed19() => {
+core.List<core.String> buildUnnamed19() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed19(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.String> buildUnnamed20() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed19(core.Map<core.String, core.String> o) {
+void checkUnnamed20(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1142,14 +1174,14 @@
   final o = api.HadoopJob();
   buildCounterHadoopJob++;
   if (buildCounterHadoopJob < 3) {
-    o.archiveUris = buildUnnamed15();
-    o.args = buildUnnamed16();
-    o.fileUris = buildUnnamed17();
-    o.jarFileUris = buildUnnamed18();
+    o.archiveUris = buildUnnamed16();
+    o.args = buildUnnamed17();
+    o.fileUris = buildUnnamed18();
+    o.jarFileUris = buildUnnamed19();
     o.loggingConfig = buildLoggingConfig();
     o.mainClass = 'foo';
     o.mainJarFileUri = 'foo';
-    o.properties = buildUnnamed19();
+    o.properties = buildUnnamed20();
   }
   buildCounterHadoopJob--;
   return o;
@@ -1158,10 +1190,10 @@
 void checkHadoopJob(api.HadoopJob o) {
   buildCounterHadoopJob++;
   if (buildCounterHadoopJob < 3) {
-    checkUnnamed15(o.archiveUris!);
-    checkUnnamed16(o.args!);
-    checkUnnamed17(o.fileUris!);
-    checkUnnamed18(o.jarFileUris!);
+    checkUnnamed16(o.archiveUris!);
+    checkUnnamed17(o.args!);
+    checkUnnamed18(o.fileUris!);
+    checkUnnamed19(o.jarFileUris!);
     checkLoggingConfig(o.loggingConfig!);
     unittest.expect(
       o.mainClass!,
@@ -1171,17 +1203,17 @@
       o.mainJarFileUri!,
       unittest.equals('foo'),
     );
-    checkUnnamed19(o.properties!);
+    checkUnnamed20(o.properties!);
   }
   buildCounterHadoopJob--;
 }
 
-core.List<core.String> buildUnnamed20() => [
+core.List<core.String> buildUnnamed21() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed20(core.List<core.String> o) {
+void checkUnnamed21(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1193,23 +1225,6 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed21() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
-
-void checkUnnamed21(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o['x']!,
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o['y']!,
-    unittest.equals('foo'),
-  );
-}
-
 core.Map<core.String, core.String> buildUnnamed22() => {
       'x': 'foo',
       'y': 'foo',
@@ -1227,38 +1242,6 @@
   );
 }
 
-core.int buildCounterHiveJob = 0;
-api.HiveJob buildHiveJob() {
-  final o = api.HiveJob();
-  buildCounterHiveJob++;
-  if (buildCounterHiveJob < 3) {
-    o.continueOnFailure = true;
-    o.jarFileUris = buildUnnamed20();
-    o.properties = buildUnnamed21();
-    o.queryFileUri = 'foo';
-    o.queryList = buildQueryList();
-    o.scriptVariables = buildUnnamed22();
-  }
-  buildCounterHiveJob--;
-  return o;
-}
-
-void checkHiveJob(api.HiveJob o) {
-  buildCounterHiveJob++;
-  if (buildCounterHiveJob < 3) {
-    unittest.expect(o.continueOnFailure!, unittest.isTrue);
-    checkUnnamed20(o.jarFileUris!);
-    checkUnnamed21(o.properties!);
-    unittest.expect(
-      o.queryFileUri!,
-      unittest.equals('foo'),
-    );
-    checkQueryList(o.queryList!);
-    checkUnnamed22(o.scriptVariables!);
-  }
-  buildCounterHiveJob--;
-}
-
 core.Map<core.String, core.String> buildUnnamed23() => {
       'x': 'foo',
       'y': 'foo',
@@ -1276,12 +1259,61 @@
   );
 }
 
+core.int buildCounterHiveJob = 0;
+api.HiveJob buildHiveJob() {
+  final o = api.HiveJob();
+  buildCounterHiveJob++;
+  if (buildCounterHiveJob < 3) {
+    o.continueOnFailure = true;
+    o.jarFileUris = buildUnnamed21();
+    o.properties = buildUnnamed22();
+    o.queryFileUri = 'foo';
+    o.queryList = buildQueryList();
+    o.scriptVariables = buildUnnamed23();
+  }
+  buildCounterHiveJob--;
+  return o;
+}
+
+void checkHiveJob(api.HiveJob o) {
+  buildCounterHiveJob++;
+  if (buildCounterHiveJob < 3) {
+    unittest.expect(o.continueOnFailure!, unittest.isTrue);
+    checkUnnamed21(o.jarFileUris!);
+    checkUnnamed22(o.properties!);
+    unittest.expect(
+      o.queryFileUri!,
+      unittest.equals('foo'),
+    );
+    checkQueryList(o.queryList!);
+    checkUnnamed23(o.scriptVariables!);
+  }
+  buildCounterHiveJob--;
+}
+
+core.Map<core.String, core.String> buildUnnamed24() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed24(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterIdentityConfig = 0;
 api.IdentityConfig buildIdentityConfig() {
   final o = api.IdentityConfig();
   buildCounterIdentityConfig++;
   if (buildCounterIdentityConfig < 3) {
-    o.userServiceAccountMapping = buildUnnamed23();
+    o.userServiceAccountMapping = buildUnnamed24();
   }
   buildCounterIdentityConfig--;
   return o;
@@ -1290,7 +1322,7 @@
 void checkIdentityConfig(api.IdentityConfig o) {
   buildCounterIdentityConfig++;
   if (buildCounterIdentityConfig < 3) {
-    checkUnnamed23(o.userServiceAccountMapping!);
+    checkUnnamed24(o.userServiceAccountMapping!);
   }
   buildCounterIdentityConfig--;
 }
@@ -1356,23 +1388,23 @@
   buildCounterInstanceGroupAutoscalingPolicyConfig--;
 }
 
-core.List<api.AcceleratorConfig> buildUnnamed24() => [
+core.List<api.AcceleratorConfig> buildUnnamed25() => [
       buildAcceleratorConfig(),
       buildAcceleratorConfig(),
     ];
 
-void checkUnnamed24(core.List<api.AcceleratorConfig> o) {
+void checkUnnamed25(core.List<api.AcceleratorConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAcceleratorConfig(o[0]);
   checkAcceleratorConfig(o[1]);
 }
 
-core.List<core.String> buildUnnamed25() => [
+core.List<core.String> buildUnnamed26() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed25(core.List<core.String> o) {
+void checkUnnamed26(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1384,12 +1416,12 @@
   );
 }
 
-core.List<api.InstanceReference> buildUnnamed26() => [
+core.List<api.InstanceReference> buildUnnamed27() => [
       buildInstanceReference(),
       buildInstanceReference(),
     ];
 
-void checkUnnamed26(core.List<api.InstanceReference> o) {
+void checkUnnamed27(core.List<api.InstanceReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstanceReference(o[0]);
   checkInstanceReference(o[1]);
@@ -1400,11 +1432,11 @@
   final o = api.InstanceGroupConfig();
   buildCounterInstanceGroupConfig++;
   if (buildCounterInstanceGroupConfig < 3) {
-    o.accelerators = buildUnnamed24();
+    o.accelerators = buildUnnamed25();
     o.diskConfig = buildDiskConfig();
     o.imageUri = 'foo';
-    o.instanceNames = buildUnnamed25();
-    o.instanceReferences = buildUnnamed26();
+    o.instanceNames = buildUnnamed26();
+    o.instanceReferences = buildUnnamed27();
     o.isPreemptible = true;
     o.machineTypeUri = 'foo';
     o.managedGroupConfig = buildManagedGroupConfig();
@@ -1419,14 +1451,14 @@
 void checkInstanceGroupConfig(api.InstanceGroupConfig o) {
   buildCounterInstanceGroupConfig++;
   if (buildCounterInstanceGroupConfig < 3) {
-    checkUnnamed24(o.accelerators!);
+    checkUnnamed25(o.accelerators!);
     checkDiskConfig(o.diskConfig!);
     unittest.expect(
       o.imageUri!,
       unittest.equals('foo'),
     );
-    checkUnnamed25(o.instanceNames!);
-    checkUnnamed26(o.instanceReferences!);
+    checkUnnamed26(o.instanceNames!);
+    checkUnnamed27(o.instanceReferences!);
     unittest.expect(o.isPreemptible!, unittest.isTrue);
     unittest.expect(
       o.machineTypeUri!,
@@ -1486,54 +1518,6 @@
   buildCounterInstanceReference--;
 }
 
-core.Map<core.String, core.String> buildUnnamed27() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
-
-void checkUnnamed27(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o['x']!,
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o['y']!,
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterInstantiateWorkflowTemplateRequest = 0;
-api.InstantiateWorkflowTemplateRequest
-    buildInstantiateWorkflowTemplateRequest() {
-  final o = api.InstantiateWorkflowTemplateRequest();
-  buildCounterInstantiateWorkflowTemplateRequest++;
-  if (buildCounterInstantiateWorkflowTemplateRequest < 3) {
-    o.parameters = buildUnnamed27();
-    o.requestId = 'foo';
-    o.version = 42;
-  }
-  buildCounterInstantiateWorkflowTemplateRequest--;
-  return o;
-}
-
-void checkInstantiateWorkflowTemplateRequest(
-    api.InstantiateWorkflowTemplateRequest o) {
-  buildCounterInstantiateWorkflowTemplateRequest++;
-  if (buildCounterInstantiateWorkflowTemplateRequest < 3) {
-    checkUnnamed27(o.parameters!);
-    unittest.expect(
-      o.requestId!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.version!,
-      unittest.equals(42),
-    );
-  }
-  buildCounterInstantiateWorkflowTemplateRequest--;
-}
-
 core.Map<core.String, core.String> buildUnnamed28() => {
       'x': 'foo',
       'y': 'foo',
@@ -1551,23 +1535,71 @@
   );
 }
 
-core.List<api.JobStatus> buildUnnamed29() => [
+core.int buildCounterInstantiateWorkflowTemplateRequest = 0;
+api.InstantiateWorkflowTemplateRequest
+    buildInstantiateWorkflowTemplateRequest() {
+  final o = api.InstantiateWorkflowTemplateRequest();
+  buildCounterInstantiateWorkflowTemplateRequest++;
+  if (buildCounterInstantiateWorkflowTemplateRequest < 3) {
+    o.parameters = buildUnnamed28();
+    o.requestId = 'foo';
+    o.version = 42;
+  }
+  buildCounterInstantiateWorkflowTemplateRequest--;
+  return o;
+}
+
+void checkInstantiateWorkflowTemplateRequest(
+    api.InstantiateWorkflowTemplateRequest o) {
+  buildCounterInstantiateWorkflowTemplateRequest++;
+  if (buildCounterInstantiateWorkflowTemplateRequest < 3) {
+    checkUnnamed28(o.parameters!);
+    unittest.expect(
+      o.requestId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.version!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterInstantiateWorkflowTemplateRequest--;
+}
+
+core.Map<core.String, core.String> buildUnnamed29() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed29(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.List<api.JobStatus> buildUnnamed30() => [
       buildJobStatus(),
       buildJobStatus(),
     ];
 
-void checkUnnamed29(core.List<api.JobStatus> o) {
+void checkUnnamed30(core.List<api.JobStatus> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJobStatus(o[0]);
   checkJobStatus(o[1]);
 }
 
-core.List<api.YarnApplication> buildUnnamed30() => [
+core.List<api.YarnApplication> buildUnnamed31() => [
       buildYarnApplication(),
       buildYarnApplication(),
     ];
 
-void checkUnnamed30(core.List<api.YarnApplication> o) {
+void checkUnnamed31(core.List<api.YarnApplication> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkYarnApplication(o[0]);
   checkYarnApplication(o[1]);
@@ -1584,7 +1616,7 @@
     o.hadoopJob = buildHadoopJob();
     o.hiveJob = buildHiveJob();
     o.jobUuid = 'foo';
-    o.labels = buildUnnamed28();
+    o.labels = buildUnnamed29();
     o.pigJob = buildPigJob();
     o.placement = buildJobPlacement();
     o.prestoJob = buildPrestoJob();
@@ -1595,8 +1627,8 @@
     o.sparkRJob = buildSparkRJob();
     o.sparkSqlJob = buildSparkSqlJob();
     o.status = buildJobStatus();
-    o.statusHistory = buildUnnamed29();
-    o.yarnApplications = buildUnnamed30();
+    o.statusHistory = buildUnnamed30();
+    o.yarnApplications = buildUnnamed31();
   }
   buildCounterJob--;
   return o;
@@ -1620,7 +1652,7 @@
       o.jobUuid!,
       unittest.equals('foo'),
     );
-    checkUnnamed28(o.labels!);
+    checkUnnamed29(o.labels!);
     checkPigJob(o.pigJob!);
     checkJobPlacement(o.placement!);
     checkPrestoJob(o.prestoJob!);
@@ -1631,18 +1663,18 @@
     checkSparkRJob(o.sparkRJob!);
     checkSparkSqlJob(o.sparkSqlJob!);
     checkJobStatus(o.status!);
-    checkUnnamed29(o.statusHistory!);
-    checkUnnamed30(o.yarnApplications!);
+    checkUnnamed30(o.statusHistory!);
+    checkUnnamed31(o.yarnApplications!);
   }
   buildCounterJob--;
 }
 
-core.Map<core.String, core.String> buildUnnamed31() => {
+core.Map<core.String, core.String> buildUnnamed32() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed31(core.Map<core.String, core.String> o) {
+void checkUnnamed32(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1659,7 +1691,7 @@
   final o = api.JobPlacement();
   buildCounterJobPlacement++;
   if (buildCounterJobPlacement < 3) {
-    o.clusterLabels = buildUnnamed31();
+    o.clusterLabels = buildUnnamed32();
     o.clusterName = 'foo';
     o.clusterUuid = 'foo';
   }
@@ -1670,7 +1702,7 @@
 void checkJobPlacement(api.JobPlacement o) {
   buildCounterJobPlacement++;
   if (buildCounterJobPlacement < 3) {
-    checkUnnamed31(o.clusterLabels!);
+    checkUnnamed32(o.clusterLabels!);
     unittest.expect(
       o.clusterName!,
       unittest.equals('foo'),
@@ -1900,12 +1932,12 @@
   buildCounterLifecycleConfig--;
 }
 
-core.List<api.AutoscalingPolicy> buildUnnamed32() => [
+core.List<api.AutoscalingPolicy> buildUnnamed33() => [
       buildAutoscalingPolicy(),
       buildAutoscalingPolicy(),
     ];
 
-void checkUnnamed32(core.List<api.AutoscalingPolicy> o) {
+void checkUnnamed33(core.List<api.AutoscalingPolicy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAutoscalingPolicy(o[0]);
   checkAutoscalingPolicy(o[1]);
@@ -1917,7 +1949,7 @@
   buildCounterListAutoscalingPoliciesResponse++;
   if (buildCounterListAutoscalingPoliciesResponse < 3) {
     o.nextPageToken = 'foo';
-    o.policies = buildUnnamed32();
+    o.policies = buildUnnamed33();
   }
   buildCounterListAutoscalingPoliciesResponse--;
   return o;
@@ -1931,17 +1963,17 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed32(o.policies!);
+    checkUnnamed33(o.policies!);
   }
   buildCounterListAutoscalingPoliciesResponse--;
 }
 
-core.List<api.Batch> buildUnnamed33() => [
+core.List<api.Batch> buildUnnamed34() => [
       buildBatch(),
       buildBatch(),
     ];
 
-void checkUnnamed33(core.List<api.Batch> o) {
+void checkUnnamed34(core.List<api.Batch> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBatch(o[0]);
   checkBatch(o[1]);
@@ -1952,7 +1984,7 @@
   final o = api.ListBatchesResponse();
   buildCounterListBatchesResponse++;
   if (buildCounterListBatchesResponse < 3) {
-    o.batches = buildUnnamed33();
+    o.batches = buildUnnamed34();
     o.nextPageToken = 'foo';
   }
   buildCounterListBatchesResponse--;
@@ -1962,7 +1994,7 @@
 void checkListBatchesResponse(api.ListBatchesResponse o) {
   buildCounterListBatchesResponse++;
   if (buildCounterListBatchesResponse < 3) {
-    checkUnnamed33(o.batches!);
+    checkUnnamed34(o.batches!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1971,12 +2003,12 @@
   buildCounterListBatchesResponse--;
 }
 
-core.List<api.Cluster> buildUnnamed34() => [
+core.List<api.Cluster> buildUnnamed35() => [
       buildCluster(),
       buildCluster(),
     ];
 
-void checkUnnamed34(core.List<api.Cluster> o) {
+void checkUnnamed35(core.List<api.Cluster> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCluster(o[0]);
   checkCluster(o[1]);
@@ -1987,7 +2019,7 @@
   final o = api.ListClustersResponse();
   buildCounterListClustersResponse++;
   if (buildCounterListClustersResponse < 3) {
-    o.clusters = buildUnnamed34();
+    o.clusters = buildUnnamed35();
     o.nextPageToken = 'foo';
   }
   buildCounterListClustersResponse--;
@@ -1997,7 +2029,7 @@
 void checkListClustersResponse(api.ListClustersResponse o) {
   buildCounterListClustersResponse++;
   if (buildCounterListClustersResponse < 3) {
-    checkUnnamed34(o.clusters!);
+    checkUnnamed35(o.clusters!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -2006,12 +2038,12 @@
   buildCounterListClustersResponse--;
 }
 
-core.List<api.Job> buildUnnamed35() => [
+core.List<api.Job> buildUnnamed36() => [
       buildJob(),
       buildJob(),
     ];
 
-void checkUnnamed35(core.List<api.Job> o) {
+void checkUnnamed36(core.List<api.Job> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkJob(o[0]);
   checkJob(o[1]);
@@ -2022,7 +2054,7 @@
   final o = api.ListJobsResponse();
   buildCounterListJobsResponse++;
   if (buildCounterListJobsResponse < 3) {
-    o.jobs = buildUnnamed35();
+    o.jobs = buildUnnamed36();
     o.nextPageToken = 'foo';
   }
   buildCounterListJobsResponse--;
@@ -2032,7 +2064,7 @@
 void checkListJobsResponse(api.ListJobsResponse o) {
   buildCounterListJobsResponse++;
   if (buildCounterListJobsResponse < 3) {
-    checkUnnamed35(o.jobs!);
+    checkUnnamed36(o.jobs!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -2041,12 +2073,12 @@
   buildCounterListJobsResponse--;
 }
 
-core.List<api.Operation> buildUnnamed36() => [
+core.List<api.Operation> buildUnnamed37() => [
       buildOperation(),
       buildOperation(),
     ];
 
-void checkUnnamed36(core.List<api.Operation> o) {
+void checkUnnamed37(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -2058,7 +2090,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.operations = buildUnnamed36();
+    o.operations = buildUnnamed37();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -2071,17 +2103,17 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed36(o.operations!);
+    checkUnnamed37(o.operations!);
   }
   buildCounterListOperationsResponse--;
 }
 
-core.List<api.WorkflowTemplate> buildUnnamed37() => [
+core.List<api.WorkflowTemplate> buildUnnamed38() => [
       buildWorkflowTemplate(),
       buildWorkflowTemplate(),
     ];
 
-void checkUnnamed37(core.List<api.WorkflowTemplate> o) {
+void checkUnnamed38(core.List<api.WorkflowTemplate> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWorkflowTemplate(o[0]);
   checkWorkflowTemplate(o[1]);
@@ -2093,7 +2125,7 @@
   buildCounterListWorkflowTemplatesResponse++;
   if (buildCounterListWorkflowTemplatesResponse < 3) {
     o.nextPageToken = 'foo';
-    o.templates = buildUnnamed37();
+    o.templates = buildUnnamed38();
   }
   buildCounterListWorkflowTemplatesResponse--;
   return o;
@@ -2106,47 +2138,11 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed37(o.templates!);
+    checkUnnamed38(o.templates!);
   }
   buildCounterListWorkflowTemplatesResponse--;
 }
 
-core.Map<core.String, core.String> buildUnnamed38() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
-
-void checkUnnamed38(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o['x']!,
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o['y']!,
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterLoggingConfig = 0;
-api.LoggingConfig buildLoggingConfig() {
-  final o = api.LoggingConfig();
-  buildCounterLoggingConfig++;
-  if (buildCounterLoggingConfig < 3) {
-    o.driverLogLevels = buildUnnamed38();
-  }
-  buildCounterLoggingConfig--;
-  return o;
-}
-
-void checkLoggingConfig(api.LoggingConfig o) {
-  buildCounterLoggingConfig++;
-  if (buildCounterLoggingConfig < 3) {
-    checkUnnamed38(o.driverLogLevels!);
-  }
-  buildCounterLoggingConfig--;
-}
-
 core.Map<core.String, core.String> buildUnnamed39() => {
       'x': 'foo',
       'y': 'foo',
@@ -2164,6 +2160,42 @@
   );
 }
 
+core.int buildCounterLoggingConfig = 0;
+api.LoggingConfig buildLoggingConfig() {
+  final o = api.LoggingConfig();
+  buildCounterLoggingConfig++;
+  if (buildCounterLoggingConfig < 3) {
+    o.driverLogLevels = buildUnnamed39();
+  }
+  buildCounterLoggingConfig--;
+  return o;
+}
+
+void checkLoggingConfig(api.LoggingConfig o) {
+  buildCounterLoggingConfig++;
+  if (buildCounterLoggingConfig < 3) {
+    checkUnnamed39(o.driverLogLevels!);
+  }
+  buildCounterLoggingConfig--;
+}
+
+core.Map<core.String, core.String> buildUnnamed40() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed40(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterManagedCluster = 0;
 api.ManagedCluster buildManagedCluster() {
   final o = api.ManagedCluster();
@@ -2171,7 +2203,7 @@
   if (buildCounterManagedCluster < 3) {
     o.clusterName = 'foo';
     o.config = buildClusterConfig();
-    o.labels = buildUnnamed39();
+    o.labels = buildUnnamed40();
   }
   buildCounterManagedCluster--;
   return o;
@@ -2185,7 +2217,7 @@
       unittest.equals('foo'),
     );
     checkClusterConfig(o.config!);
-    checkUnnamed39(o.labels!);
+    checkUnnamed40(o.labels!);
   }
   buildCounterManagedCluster--;
 }
@@ -2239,6 +2271,47 @@
   buildCounterMetastoreConfig--;
 }
 
+core.List<core.String> buildUnnamed41() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed41(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterMetric = 0;
+api.Metric buildMetric() {
+  final o = api.Metric();
+  buildCounterMetric++;
+  if (buildCounterMetric < 3) {
+    o.metricOverrides = buildUnnamed41();
+    o.metricSource = 'foo';
+  }
+  buildCounterMetric--;
+  return o;
+}
+
+void checkMetric(api.Metric o) {
+  buildCounterMetric++;
+  if (buildCounterMetric < 3) {
+    checkUnnamed41(o.metricOverrides!);
+    unittest.expect(
+      o.metricSource!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterMetric--;
+}
+
 core.int buildCounterNamespacedGkeDeploymentTarget = 0;
 api.NamespacedGkeDeploymentTarget buildNamespacedGkeDeploymentTarget() {
   final o = api.NamespacedGkeDeploymentTarget();
@@ -2315,7 +2388,7 @@
   buildCounterNodeInitializationAction--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed40() => {
+core.Map<core.String, core.Object?> buildUnnamed42() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -2328,7 +2401,7 @@
       },
     };
 
-void checkUnnamed40(core.Map<core.String, core.Object?> o) {
+void checkUnnamed42(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o['x']!) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -2360,7 +2433,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed41() => {
+core.Map<core.String, core.Object?> buildUnnamed43() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -2373,7 +2446,7 @@
       },
     };
 
-void checkUnnamed41(core.Map<core.String, core.Object?> o) {
+void checkUnnamed43(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o['x']!) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -2412,9 +2485,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed40();
+    o.metadata = buildUnnamed42();
     o.name = 'foo';
-    o.response = buildUnnamed41();
+    o.response = buildUnnamed43();
   }
   buildCounterOperation--;
   return o;
@@ -2425,22 +2498,22 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done!, unittest.isTrue);
     checkStatus(o.error!);
-    checkUnnamed40(o.metadata!);
+    checkUnnamed42(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed41(o.response!);
+    checkUnnamed43(o.response!);
   }
   buildCounterOperation--;
 }
 
-core.Map<core.String, core.String> buildUnnamed42() => {
+core.Map<core.String, core.String> buildUnnamed44() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed42(core.Map<core.String, core.String> o) {
+void checkUnnamed44(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2452,12 +2525,12 @@
   );
 }
 
-core.List<core.String> buildUnnamed43() => [
+core.List<core.String> buildUnnamed45() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed43(core.List<core.String> o) {
+void checkUnnamed45(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2476,9 +2549,9 @@
   if (buildCounterOrderedJob < 3) {
     o.hadoopJob = buildHadoopJob();
     o.hiveJob = buildHiveJob();
-    o.labels = buildUnnamed42();
+    o.labels = buildUnnamed44();
     o.pigJob = buildPigJob();
-    o.prerequisiteStepIds = buildUnnamed43();
+    o.prerequisiteStepIds = buildUnnamed45();
     o.prestoJob = buildPrestoJob();
     o.pysparkJob = buildPySparkJob();
     o.scheduling = buildJobScheduling();
@@ -2496,9 +2569,9 @@
   if (buildCounterOrderedJob < 3) {
     checkHadoopJob(o.hadoopJob!);
     checkHiveJob(o.hiveJob!);
-    checkUnnamed42(o.labels!);
+    checkUnnamed44(o.labels!);
     checkPigJob(o.pigJob!);
-    checkUnnamed43(o.prerequisiteStepIds!);
+    checkUnnamed45(o.prerequisiteStepIds!);
     checkPrestoJob(o.prestoJob!);
     checkPySparkJob(o.pysparkJob!);
     checkJobScheduling(o.scheduling!);
@@ -2558,12 +2631,12 @@
   buildCounterPeripheralsConfig--;
 }
 
-core.List<core.String> buildUnnamed44() => [
+core.List<core.String> buildUnnamed46() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed44(core.List<core.String> o) {
+void checkUnnamed46(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2575,12 +2648,12 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed45() => {
+core.Map<core.String, core.String> buildUnnamed47() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed45(core.Map<core.String, core.String> o) {
+void checkUnnamed47(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2592,12 +2665,12 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed46() => {
+core.Map<core.String, core.String> buildUnnamed48() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed46(core.Map<core.String, core.String> o) {
+void checkUnnamed48(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2615,12 +2688,12 @@
   buildCounterPigJob++;
   if (buildCounterPigJob < 3) {
     o.continueOnFailure = true;
-    o.jarFileUris = buildUnnamed44();
+    o.jarFileUris = buildUnnamed46();
     o.loggingConfig = buildLoggingConfig();
-    o.properties = buildUnnamed45();
+    o.properties = buildUnnamed47();
     o.queryFileUri = 'foo';
     o.queryList = buildQueryList();
-    o.scriptVariables = buildUnnamed46();
+    o.scriptVariables = buildUnnamed48();
   }
   buildCounterPigJob--;
   return o;
@@ -2630,25 +2703,25 @@
   buildCounterPigJob++;
   if (buildCounterPigJob < 3) {
     unittest.expect(o.continueOnFailure!, unittest.isTrue);
-    checkUnnamed44(o.jarFileUris!);
+    checkUnnamed46(o.jarFileUris!);
     checkLoggingConfig(o.loggingConfig!);
-    checkUnnamed45(o.properties!);
+    checkUnnamed47(o.properties!);
     unittest.expect(
       o.queryFileUri!,
       unittest.equals('foo'),
     );
     checkQueryList(o.queryList!);
-    checkUnnamed46(o.scriptVariables!);
+    checkUnnamed48(o.scriptVariables!);
   }
   buildCounterPigJob--;
 }
 
-core.List<api.Binding> buildUnnamed47() => [
+core.List<api.Binding> buildUnnamed49() => [
       buildBinding(),
       buildBinding(),
     ];
 
-void checkUnnamed47(core.List<api.Binding> o) {
+void checkUnnamed49(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -2659,7 +2732,7 @@
   final o = api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.bindings = buildUnnamed47();
+    o.bindings = buildUnnamed49();
     o.etag = 'foo';
     o.version = 42;
   }
@@ -2670,7 +2743,7 @@
 void checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed47(o.bindings!);
+    checkUnnamed49(o.bindings!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -2683,77 +2756,6 @@
   buildCounterPolicy--;
 }
 
-core.List<core.String> buildUnnamed48() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed48(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.Map<core.String, core.String> buildUnnamed49() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
-
-void checkUnnamed49(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o['x']!,
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o['y']!,
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterPrestoJob = 0;
-api.PrestoJob buildPrestoJob() {
-  final o = api.PrestoJob();
-  buildCounterPrestoJob++;
-  if (buildCounterPrestoJob < 3) {
-    o.clientTags = buildUnnamed48();
-    o.continueOnFailure = true;
-    o.loggingConfig = buildLoggingConfig();
-    o.outputFormat = 'foo';
-    o.properties = buildUnnamed49();
-    o.queryFileUri = 'foo';
-    o.queryList = buildQueryList();
-  }
-  buildCounterPrestoJob--;
-  return o;
-}
-
-void checkPrestoJob(api.PrestoJob o) {
-  buildCounterPrestoJob++;
-  if (buildCounterPrestoJob < 3) {
-    checkUnnamed48(o.clientTags!);
-    unittest.expect(o.continueOnFailure!, unittest.isTrue);
-    checkLoggingConfig(o.loggingConfig!);
-    unittest.expect(
-      o.outputFormat!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed49(o.properties!);
-    unittest.expect(
-      o.queryFileUri!,
-      unittest.equals('foo'),
-    );
-    checkQueryList(o.queryList!);
-  }
-  buildCounterPrestoJob--;
-}
-
 core.List<core.String> buildUnnamed50() => [
       'foo',
       'foo',
@@ -2771,23 +2773,60 @@
   );
 }
 
-core.List<core.String> buildUnnamed51() => [
-      'foo',
-      'foo',
-    ];
+core.Map<core.String, core.String> buildUnnamed51() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
 
-void checkUnnamed51(core.List<core.String> o) {
+void checkUnnamed51(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
-    o[0],
+    o['x']!,
     unittest.equals('foo'),
   );
   unittest.expect(
-    o[1],
+    o['y']!,
     unittest.equals('foo'),
   );
 }
 
+core.int buildCounterPrestoJob = 0;
+api.PrestoJob buildPrestoJob() {
+  final o = api.PrestoJob();
+  buildCounterPrestoJob++;
+  if (buildCounterPrestoJob < 3) {
+    o.clientTags = buildUnnamed50();
+    o.continueOnFailure = true;
+    o.loggingConfig = buildLoggingConfig();
+    o.outputFormat = 'foo';
+    o.properties = buildUnnamed51();
+    o.queryFileUri = 'foo';
+    o.queryList = buildQueryList();
+  }
+  buildCounterPrestoJob--;
+  return o;
+}
+
+void checkPrestoJob(api.PrestoJob o) {
+  buildCounterPrestoJob++;
+  if (buildCounterPrestoJob < 3) {
+    checkUnnamed50(o.clientTags!);
+    unittest.expect(o.continueOnFailure!, unittest.isTrue);
+    checkLoggingConfig(o.loggingConfig!);
+    unittest.expect(
+      o.outputFormat!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed51(o.properties!);
+    unittest.expect(
+      o.queryFileUri!,
+      unittest.equals('foo'),
+    );
+    checkQueryList(o.queryList!);
+  }
+  buildCounterPrestoJob--;
+}
+
 core.List<core.String> buildUnnamed52() => [
       'foo',
       'foo',
@@ -2839,38 +2878,6 @@
   );
 }
 
-core.int buildCounterPySparkBatch = 0;
-api.PySparkBatch buildPySparkBatch() {
-  final o = api.PySparkBatch();
-  buildCounterPySparkBatch++;
-  if (buildCounterPySparkBatch < 3) {
-    o.archiveUris = buildUnnamed50();
-    o.args = buildUnnamed51();
-    o.fileUris = buildUnnamed52();
-    o.jarFileUris = buildUnnamed53();
-    o.mainPythonFileUri = 'foo';
-    o.pythonFileUris = buildUnnamed54();
-  }
-  buildCounterPySparkBatch--;
-  return o;
-}
-
-void checkPySparkBatch(api.PySparkBatch o) {
-  buildCounterPySparkBatch++;
-  if (buildCounterPySparkBatch < 3) {
-    checkUnnamed50(o.archiveUris!);
-    checkUnnamed51(o.args!);
-    checkUnnamed52(o.fileUris!);
-    checkUnnamed53(o.jarFileUris!);
-    unittest.expect(
-      o.mainPythonFileUri!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed54(o.pythonFileUris!);
-  }
-  buildCounterPySparkBatch--;
-}
-
 core.List<core.String> buildUnnamed55() => [
       'foo',
       'foo',
@@ -2905,6 +2912,38 @@
   );
 }
 
+core.int buildCounterPySparkBatch = 0;
+api.PySparkBatch buildPySparkBatch() {
+  final o = api.PySparkBatch();
+  buildCounterPySparkBatch++;
+  if (buildCounterPySparkBatch < 3) {
+    o.archiveUris = buildUnnamed52();
+    o.args = buildUnnamed53();
+    o.fileUris = buildUnnamed54();
+    o.jarFileUris = buildUnnamed55();
+    o.mainPythonFileUri = 'foo';
+    o.pythonFileUris = buildUnnamed56();
+  }
+  buildCounterPySparkBatch--;
+  return o;
+}
+
+void checkPySparkBatch(api.PySparkBatch o) {
+  buildCounterPySparkBatch++;
+  if (buildCounterPySparkBatch < 3) {
+    checkUnnamed52(o.archiveUris!);
+    checkUnnamed53(o.args!);
+    checkUnnamed54(o.fileUris!);
+    checkUnnamed55(o.jarFileUris!);
+    unittest.expect(
+      o.mainPythonFileUri!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed56(o.pythonFileUris!);
+  }
+  buildCounterPySparkBatch--;
+}
+
 core.List<core.String> buildUnnamed57() => [
       'foo',
       'foo',
@@ -2939,19 +2978,19 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed59() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
+core.List<core.String> buildUnnamed59() => [
+      'foo',
+      'foo',
+    ];
 
-void checkUnnamed59(core.Map<core.String, core.String> o) {
+void checkUnnamed59(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
-    o['x']!,
+    o[0],
     unittest.equals('foo'),
   );
   unittest.expect(
-    o['y']!,
+    o[1],
     unittest.equals('foo'),
   );
 }
@@ -2973,78 +3012,23 @@
   );
 }
 
-core.int buildCounterPySparkJob = 0;
-api.PySparkJob buildPySparkJob() {
-  final o = api.PySparkJob();
-  buildCounterPySparkJob++;
-  if (buildCounterPySparkJob < 3) {
-    o.archiveUris = buildUnnamed55();
-    o.args = buildUnnamed56();
-    o.fileUris = buildUnnamed57();
-    o.jarFileUris = buildUnnamed58();
-    o.loggingConfig = buildLoggingConfig();
-    o.mainPythonFileUri = 'foo';
-    o.properties = buildUnnamed59();
-    o.pythonFileUris = buildUnnamed60();
-  }
-  buildCounterPySparkJob--;
-  return o;
-}
+core.Map<core.String, core.String> buildUnnamed61() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
 
-void checkPySparkJob(api.PySparkJob o) {
-  buildCounterPySparkJob++;
-  if (buildCounterPySparkJob < 3) {
-    checkUnnamed55(o.archiveUris!);
-    checkUnnamed56(o.args!);
-    checkUnnamed57(o.fileUris!);
-    checkUnnamed58(o.jarFileUris!);
-    checkLoggingConfig(o.loggingConfig!);
-    unittest.expect(
-      o.mainPythonFileUri!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed59(o.properties!);
-    checkUnnamed60(o.pythonFileUris!);
-  }
-  buildCounterPySparkJob--;
-}
-
-core.List<core.String> buildUnnamed61() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed61(core.List<core.String> o) {
+void checkUnnamed61(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
-    o[0],
+    o['x']!,
     unittest.equals('foo'),
   );
   unittest.expect(
-    o[1],
+    o['y']!,
     unittest.equals('foo'),
   );
 }
 
-core.int buildCounterQueryList = 0;
-api.QueryList buildQueryList() {
-  final o = api.QueryList();
-  buildCounterQueryList++;
-  if (buildCounterQueryList < 3) {
-    o.queries = buildUnnamed61();
-  }
-  buildCounterQueryList--;
-  return o;
-}
-
-void checkQueryList(api.QueryList o) {
-  buildCounterQueryList++;
-  if (buildCounterQueryList < 3) {
-    checkUnnamed61(o.queries!);
-  }
-  buildCounterQueryList--;
-}
-
 core.List<core.String> buildUnnamed62() => [
       'foo',
       'foo',
@@ -3062,12 +3046,101 @@
   );
 }
 
+core.int buildCounterPySparkJob = 0;
+api.PySparkJob buildPySparkJob() {
+  final o = api.PySparkJob();
+  buildCounterPySparkJob++;
+  if (buildCounterPySparkJob < 3) {
+    o.archiveUris = buildUnnamed57();
+    o.args = buildUnnamed58();
+    o.fileUris = buildUnnamed59();
+    o.jarFileUris = buildUnnamed60();
+    o.loggingConfig = buildLoggingConfig();
+    o.mainPythonFileUri = 'foo';
+    o.properties = buildUnnamed61();
+    o.pythonFileUris = buildUnnamed62();
+  }
+  buildCounterPySparkJob--;
+  return o;
+}
+
+void checkPySparkJob(api.PySparkJob o) {
+  buildCounterPySparkJob++;
+  if (buildCounterPySparkJob < 3) {
+    checkUnnamed57(o.archiveUris!);
+    checkUnnamed58(o.args!);
+    checkUnnamed59(o.fileUris!);
+    checkUnnamed60(o.jarFileUris!);
+    checkLoggingConfig(o.loggingConfig!);
+    unittest.expect(
+      o.mainPythonFileUri!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed61(o.properties!);
+    checkUnnamed62(o.pythonFileUris!);
+  }
+  buildCounterPySparkJob--;
+}
+
+core.List<core.String> buildUnnamed63() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed63(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterQueryList = 0;
+api.QueryList buildQueryList() {
+  final o = api.QueryList();
+  buildCounterQueryList++;
+  if (buildCounterQueryList < 3) {
+    o.queries = buildUnnamed63();
+  }
+  buildCounterQueryList--;
+  return o;
+}
+
+void checkQueryList(api.QueryList o) {
+  buildCounterQueryList++;
+  if (buildCounterQueryList < 3) {
+    checkUnnamed63(o.queries!);
+  }
+  buildCounterQueryList--;
+}
+
+core.List<core.String> buildUnnamed64() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed64(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterRegexValidation = 0;
 api.RegexValidation buildRegexValidation() {
   final o = api.RegexValidation();
   buildCounterRegexValidation++;
   if (buildCounterRegexValidation < 3) {
-    o.regexes = buildUnnamed62();
+    o.regexes = buildUnnamed64();
   }
   buildCounterRegexValidation--;
   return o;
@@ -3076,7 +3149,7 @@
 void checkRegexValidation(api.RegexValidation o) {
   buildCounterRegexValidation++;
   if (buildCounterRegexValidation < 3) {
-    checkUnnamed62(o.regexes!);
+    checkUnnamed64(o.regexes!);
   }
   buildCounterRegexValidation--;
 }
@@ -3108,12 +3181,12 @@
   buildCounterRepairClusterRequest--;
 }
 
-core.List<core.String> buildUnnamed63() => [
+core.List<core.String> buildUnnamed65() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed63(core.List<core.String> o) {
+void checkUnnamed65(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -3132,7 +3205,7 @@
   if (buildCounterReservationAffinity < 3) {
     o.consumeReservationType = 'foo';
     o.key = 'foo';
-    o.values = buildUnnamed63();
+    o.values = buildUnnamed65();
   }
   buildCounterReservationAffinity--;
   return o;
@@ -3149,17 +3222,17 @@
       o.key!,
       unittest.equals('foo'),
     );
-    checkUnnamed63(o.values!);
+    checkUnnamed65(o.values!);
   }
   buildCounterReservationAffinity--;
 }
 
-core.Map<core.String, core.String> buildUnnamed64() => {
+core.Map<core.String, core.String> buildUnnamed66() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed64(core.Map<core.String, core.String> o) {
+void checkUnnamed66(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -3177,7 +3250,7 @@
   buildCounterRuntimeConfig++;
   if (buildCounterRuntimeConfig < 3) {
     o.containerImage = 'foo';
-    o.properties = buildUnnamed64();
+    o.properties = buildUnnamed66();
     o.version = 'foo';
   }
   buildCounterRuntimeConfig--;
@@ -3191,7 +3264,7 @@
       o.containerImage!,
       unittest.equals('foo'),
     );
-    checkUnnamed64(o.properties!);
+    checkUnnamed66(o.properties!);
     unittest.expect(
       o.version!,
       unittest.equals('foo'),
@@ -3200,12 +3273,12 @@
   buildCounterRuntimeConfig--;
 }
 
-core.Map<core.String, core.String> buildUnnamed65() => {
+core.Map<core.String, core.String> buildUnnamed67() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed65(core.Map<core.String, core.String> o) {
+void checkUnnamed67(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -3223,7 +3296,7 @@
   buildCounterRuntimeInfo++;
   if (buildCounterRuntimeInfo < 3) {
     o.diagnosticOutputUri = 'foo';
-    o.endpoints = buildUnnamed65();
+    o.endpoints = buildUnnamed67();
     o.outputUri = 'foo';
   }
   buildCounterRuntimeInfo--;
@@ -3237,7 +3310,7 @@
       o.diagnosticOutputUri!,
       unittest.equals('foo'),
     );
-    checkUnnamed65(o.endpoints!);
+    checkUnnamed67(o.endpoints!);
     unittest.expect(
       o.outputUri!,
       unittest.equals('foo'),
@@ -3309,66 +3382,6 @@
   buildCounterShieldedInstanceConfig--;
 }
 
-core.List<core.String> buildUnnamed66() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed66(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.Map<core.String, core.String> buildUnnamed67() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
-
-void checkUnnamed67(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o['x']!,
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o['y']!,
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterSoftwareConfig = 0;
-api.SoftwareConfig buildSoftwareConfig() {
-  final o = api.SoftwareConfig();
-  buildCounterSoftwareConfig++;
-  if (buildCounterSoftwareConfig < 3) {
-    o.imageVersion = 'foo';
-    o.optionalComponents = buildUnnamed66();
-    o.properties = buildUnnamed67();
-  }
-  buildCounterSoftwareConfig--;
-  return o;
-}
-
-void checkSoftwareConfig(api.SoftwareConfig o) {
-  buildCounterSoftwareConfig++;
-  if (buildCounterSoftwareConfig < 3) {
-    unittest.expect(
-      o.imageVersion!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed66(o.optionalComponents!);
-    checkUnnamed67(o.properties!);
-  }
-  buildCounterSoftwareConfig--;
-}
-
 core.List<core.String> buildUnnamed68() => [
       'foo',
       'foo',
@@ -3386,23 +3399,49 @@
   );
 }
 
-core.List<core.String> buildUnnamed69() => [
-      'foo',
-      'foo',
-    ];
+core.Map<core.String, core.String> buildUnnamed69() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
 
-void checkUnnamed69(core.List<core.String> o) {
+void checkUnnamed69(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
-    o[0],
+    o['x']!,
     unittest.equals('foo'),
   );
   unittest.expect(
-    o[1],
+    o['y']!,
     unittest.equals('foo'),
   );
 }
 
+core.int buildCounterSoftwareConfig = 0;
+api.SoftwareConfig buildSoftwareConfig() {
+  final o = api.SoftwareConfig();
+  buildCounterSoftwareConfig++;
+  if (buildCounterSoftwareConfig < 3) {
+    o.imageVersion = 'foo';
+    o.optionalComponents = buildUnnamed68();
+    o.properties = buildUnnamed69();
+  }
+  buildCounterSoftwareConfig--;
+  return o;
+}
+
+void checkSoftwareConfig(api.SoftwareConfig o) {
+  buildCounterSoftwareConfig++;
+  if (buildCounterSoftwareConfig < 3) {
+    unittest.expect(
+      o.imageVersion!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed68(o.optionalComponents!);
+    checkUnnamed69(o.properties!);
+  }
+  buildCounterSoftwareConfig--;
+}
+
 core.List<core.String> buildUnnamed70() => [
       'foo',
       'foo',
@@ -3437,63 +3476,6 @@
   );
 }
 
-core.int buildCounterSparkBatch = 0;
-api.SparkBatch buildSparkBatch() {
-  final o = api.SparkBatch();
-  buildCounterSparkBatch++;
-  if (buildCounterSparkBatch < 3) {
-    o.archiveUris = buildUnnamed68();
-    o.args = buildUnnamed69();
-    o.fileUris = buildUnnamed70();
-    o.jarFileUris = buildUnnamed71();
-    o.mainClass = 'foo';
-    o.mainJarFileUri = 'foo';
-  }
-  buildCounterSparkBatch--;
-  return o;
-}
-
-void checkSparkBatch(api.SparkBatch o) {
-  buildCounterSparkBatch++;
-  if (buildCounterSparkBatch < 3) {
-    checkUnnamed68(o.archiveUris!);
-    checkUnnamed69(o.args!);
-    checkUnnamed70(o.fileUris!);
-    checkUnnamed71(o.jarFileUris!);
-    unittest.expect(
-      o.mainClass!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.mainJarFileUri!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterSparkBatch--;
-}
-
-core.int buildCounterSparkHistoryServerConfig = 0;
-api.SparkHistoryServerConfig buildSparkHistoryServerConfig() {
-  final o = api.SparkHistoryServerConfig();
-  buildCounterSparkHistoryServerConfig++;
-  if (buildCounterSparkHistoryServerConfig < 3) {
-    o.dataprocCluster = 'foo';
-  }
-  buildCounterSparkHistoryServerConfig--;
-  return o;
-}
-
-void checkSparkHistoryServerConfig(api.SparkHistoryServerConfig o) {
-  buildCounterSparkHistoryServerConfig++;
-  if (buildCounterSparkHistoryServerConfig < 3) {
-    unittest.expect(
-      o.dataprocCluster!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterSparkHistoryServerConfig--;
-}
-
 core.List<core.String> buildUnnamed72() => [
       'foo',
       'foo',
@@ -3528,6 +3510,63 @@
   );
 }
 
+core.int buildCounterSparkBatch = 0;
+api.SparkBatch buildSparkBatch() {
+  final o = api.SparkBatch();
+  buildCounterSparkBatch++;
+  if (buildCounterSparkBatch < 3) {
+    o.archiveUris = buildUnnamed70();
+    o.args = buildUnnamed71();
+    o.fileUris = buildUnnamed72();
+    o.jarFileUris = buildUnnamed73();
+    o.mainClass = 'foo';
+    o.mainJarFileUri = 'foo';
+  }
+  buildCounterSparkBatch--;
+  return o;
+}
+
+void checkSparkBatch(api.SparkBatch o) {
+  buildCounterSparkBatch++;
+  if (buildCounterSparkBatch < 3) {
+    checkUnnamed70(o.archiveUris!);
+    checkUnnamed71(o.args!);
+    checkUnnamed72(o.fileUris!);
+    checkUnnamed73(o.jarFileUris!);
+    unittest.expect(
+      o.mainClass!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.mainJarFileUri!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterSparkBatch--;
+}
+
+core.int buildCounterSparkHistoryServerConfig = 0;
+api.SparkHistoryServerConfig buildSparkHistoryServerConfig() {
+  final o = api.SparkHistoryServerConfig();
+  buildCounterSparkHistoryServerConfig++;
+  if (buildCounterSparkHistoryServerConfig < 3) {
+    o.dataprocCluster = 'foo';
+  }
+  buildCounterSparkHistoryServerConfig--;
+  return o;
+}
+
+void checkSparkHistoryServerConfig(api.SparkHistoryServerConfig o) {
+  buildCounterSparkHistoryServerConfig++;
+  if (buildCounterSparkHistoryServerConfig < 3) {
+    unittest.expect(
+      o.dataprocCluster!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterSparkHistoryServerConfig--;
+}
+
 core.List<core.String> buildUnnamed74() => [
       'foo',
       'foo',
@@ -3562,62 +3601,23 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed76() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
+core.List<core.String> buildUnnamed76() => [
+      'foo',
+      'foo',
+    ];
 
-void checkUnnamed76(core.Map<core.String, core.String> o) {
+void checkUnnamed76(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
-    o['x']!,
+    o[0],
     unittest.equals('foo'),
   );
   unittest.expect(
-    o['y']!,
+    o[1],
     unittest.equals('foo'),
   );
 }
 
-core.int buildCounterSparkJob = 0;
-api.SparkJob buildSparkJob() {
-  final o = api.SparkJob();
-  buildCounterSparkJob++;
-  if (buildCounterSparkJob < 3) {
-    o.archiveUris = buildUnnamed72();
-    o.args = buildUnnamed73();
-    o.fileUris = buildUnnamed74();
-    o.jarFileUris = buildUnnamed75();
-    o.loggingConfig = buildLoggingConfig();
-    o.mainClass = 'foo';
-    o.mainJarFileUri = 'foo';
-    o.properties = buildUnnamed76();
-  }
-  buildCounterSparkJob--;
-  return o;
-}
-
-void checkSparkJob(api.SparkJob o) {
-  buildCounterSparkJob++;
-  if (buildCounterSparkJob < 3) {
-    checkUnnamed72(o.archiveUris!);
-    checkUnnamed73(o.args!);
-    checkUnnamed74(o.fileUris!);
-    checkUnnamed75(o.jarFileUris!);
-    checkLoggingConfig(o.loggingConfig!);
-    unittest.expect(
-      o.mainClass!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.mainJarFileUri!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed76(o.properties!);
-  }
-  buildCounterSparkJob--;
-}
-
 core.List<core.String> buildUnnamed77() => [
       'foo',
       'foo',
@@ -3635,23 +3635,62 @@
   );
 }
 
-core.List<core.String> buildUnnamed78() => [
-      'foo',
-      'foo',
-    ];
+core.Map<core.String, core.String> buildUnnamed78() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
 
-void checkUnnamed78(core.List<core.String> o) {
+void checkUnnamed78(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
-    o[0],
+    o['x']!,
     unittest.equals('foo'),
   );
   unittest.expect(
-    o[1],
+    o['y']!,
     unittest.equals('foo'),
   );
 }
 
+core.int buildCounterSparkJob = 0;
+api.SparkJob buildSparkJob() {
+  final o = api.SparkJob();
+  buildCounterSparkJob++;
+  if (buildCounterSparkJob < 3) {
+    o.archiveUris = buildUnnamed74();
+    o.args = buildUnnamed75();
+    o.fileUris = buildUnnamed76();
+    o.jarFileUris = buildUnnamed77();
+    o.loggingConfig = buildLoggingConfig();
+    o.mainClass = 'foo';
+    o.mainJarFileUri = 'foo';
+    o.properties = buildUnnamed78();
+  }
+  buildCounterSparkJob--;
+  return o;
+}
+
+void checkSparkJob(api.SparkJob o) {
+  buildCounterSparkJob++;
+  if (buildCounterSparkJob < 3) {
+    checkUnnamed74(o.archiveUris!);
+    checkUnnamed75(o.args!);
+    checkUnnamed76(o.fileUris!);
+    checkUnnamed77(o.jarFileUris!);
+    checkLoggingConfig(o.loggingConfig!);
+    unittest.expect(
+      o.mainClass!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.mainJarFileUri!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed78(o.properties!);
+  }
+  buildCounterSparkJob--;
+}
+
 core.List<core.String> buildUnnamed79() => [
       'foo',
       'foo',
@@ -3669,34 +3708,6 @@
   );
 }
 
-core.int buildCounterSparkRBatch = 0;
-api.SparkRBatch buildSparkRBatch() {
-  final o = api.SparkRBatch();
-  buildCounterSparkRBatch++;
-  if (buildCounterSparkRBatch < 3) {
-    o.archiveUris = buildUnnamed77();
-    o.args = buildUnnamed78();
-    o.fileUris = buildUnnamed79();
-    o.mainRFileUri = 'foo';
-  }
-  buildCounterSparkRBatch--;
-  return o;
-}
-
-void checkSparkRBatch(api.SparkRBatch o) {
-  buildCounterSparkRBatch++;
-  if (buildCounterSparkRBatch < 3) {
-    checkUnnamed77(o.archiveUris!);
-    checkUnnamed78(o.args!);
-    checkUnnamed79(o.fileUris!);
-    unittest.expect(
-      o.mainRFileUri!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterSparkRBatch--;
-}
-
 core.List<core.String> buildUnnamed80() => [
       'foo',
       'foo',
@@ -3731,6 +3742,34 @@
   );
 }
 
+core.int buildCounterSparkRBatch = 0;
+api.SparkRBatch buildSparkRBatch() {
+  final o = api.SparkRBatch();
+  buildCounterSparkRBatch++;
+  if (buildCounterSparkRBatch < 3) {
+    o.archiveUris = buildUnnamed79();
+    o.args = buildUnnamed80();
+    o.fileUris = buildUnnamed81();
+    o.mainRFileUri = 'foo';
+  }
+  buildCounterSparkRBatch--;
+  return o;
+}
+
+void checkSparkRBatch(api.SparkRBatch o) {
+  buildCounterSparkRBatch++;
+  if (buildCounterSparkRBatch < 3) {
+    checkUnnamed79(o.archiveUris!);
+    checkUnnamed80(o.args!);
+    checkUnnamed81(o.fileUris!);
+    unittest.expect(
+      o.mainRFileUri!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterSparkRBatch--;
+}
+
 core.List<core.String> buildUnnamed82() => [
       'foo',
       'foo',
@@ -3748,55 +3787,23 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed83() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
+core.List<core.String> buildUnnamed83() => [
+      'foo',
+      'foo',
+    ];
 
-void checkUnnamed83(core.Map<core.String, core.String> o) {
+void checkUnnamed83(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
-    o['x']!,
+    o[0],
     unittest.equals('foo'),
   );
   unittest.expect(
-    o['y']!,
+    o[1],
     unittest.equals('foo'),
   );
 }
 
-core.int buildCounterSparkRJob = 0;
-api.SparkRJob buildSparkRJob() {
-  final o = api.SparkRJob();
-  buildCounterSparkRJob++;
-  if (buildCounterSparkRJob < 3) {
-    o.archiveUris = buildUnnamed80();
-    o.args = buildUnnamed81();
-    o.fileUris = buildUnnamed82();
-    o.loggingConfig = buildLoggingConfig();
-    o.mainRFileUri = 'foo';
-    o.properties = buildUnnamed83();
-  }
-  buildCounterSparkRJob--;
-  return o;
-}
-
-void checkSparkRJob(api.SparkRJob o) {
-  buildCounterSparkRJob++;
-  if (buildCounterSparkRJob < 3) {
-    checkUnnamed80(o.archiveUris!);
-    checkUnnamed81(o.args!);
-    checkUnnamed82(o.fileUris!);
-    checkLoggingConfig(o.loggingConfig!);
-    unittest.expect(
-      o.mainRFileUri!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed83(o.properties!);
-  }
-  buildCounterSparkRJob--;
-}
-
 core.List<core.String> buildUnnamed84() => [
       'foo',
       'foo',
@@ -3831,30 +3838,36 @@
   );
 }
 
-core.int buildCounterSparkSqlBatch = 0;
-api.SparkSqlBatch buildSparkSqlBatch() {
-  final o = api.SparkSqlBatch();
-  buildCounterSparkSqlBatch++;
-  if (buildCounterSparkSqlBatch < 3) {
-    o.jarFileUris = buildUnnamed84();
-    o.queryFileUri = 'foo';
-    o.queryVariables = buildUnnamed85();
+core.int buildCounterSparkRJob = 0;
+api.SparkRJob buildSparkRJob() {
+  final o = api.SparkRJob();
+  buildCounterSparkRJob++;
+  if (buildCounterSparkRJob < 3) {
+    o.archiveUris = buildUnnamed82();
+    o.args = buildUnnamed83();
+    o.fileUris = buildUnnamed84();
+    o.loggingConfig = buildLoggingConfig();
+    o.mainRFileUri = 'foo';
+    o.properties = buildUnnamed85();
   }
-  buildCounterSparkSqlBatch--;
+  buildCounterSparkRJob--;
   return o;
 }
 
-void checkSparkSqlBatch(api.SparkSqlBatch o) {
-  buildCounterSparkSqlBatch++;
-  if (buildCounterSparkSqlBatch < 3) {
-    checkUnnamed84(o.jarFileUris!);
+void checkSparkRJob(api.SparkRJob o) {
+  buildCounterSparkRJob++;
+  if (buildCounterSparkRJob < 3) {
+    checkUnnamed82(o.archiveUris!);
+    checkUnnamed83(o.args!);
+    checkUnnamed84(o.fileUris!);
+    checkLoggingConfig(o.loggingConfig!);
     unittest.expect(
-      o.queryFileUri!,
+      o.mainRFileUri!,
       unittest.equals('foo'),
     );
-    checkUnnamed85(o.queryVariables!);
+    checkUnnamed85(o.properties!);
   }
-  buildCounterSparkSqlBatch--;
+  buildCounterSparkRJob--;
 }
 
 core.List<core.String> buildUnnamed86() => [
@@ -3891,12 +3904,72 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed88() => {
+core.int buildCounterSparkSqlBatch = 0;
+api.SparkSqlBatch buildSparkSqlBatch() {
+  final o = api.SparkSqlBatch();
+  buildCounterSparkSqlBatch++;
+  if (buildCounterSparkSqlBatch < 3) {
+    o.jarFileUris = buildUnnamed86();
+    o.queryFileUri = 'foo';
+    o.queryVariables = buildUnnamed87();
+  }
+  buildCounterSparkSqlBatch--;
+  return o;
+}
+
+void checkSparkSqlBatch(api.SparkSqlBatch o) {
+  buildCounterSparkSqlBatch++;
+  if (buildCounterSparkSqlBatch < 3) {
+    checkUnnamed86(o.jarFileUris!);
+    unittest.expect(
+      o.queryFileUri!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed87(o.queryVariables!);
+  }
+  buildCounterSparkSqlBatch--;
+}
+
+core.List<core.String> buildUnnamed88() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed88(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.String> buildUnnamed89() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed88(core.Map<core.String, core.String> o) {
+void checkUnnamed89(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.String> buildUnnamed90() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed90(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -3913,12 +3986,12 @@
   final o = api.SparkSqlJob();
   buildCounterSparkSqlJob++;
   if (buildCounterSparkSqlJob < 3) {
-    o.jarFileUris = buildUnnamed86();
+    o.jarFileUris = buildUnnamed88();
     o.loggingConfig = buildLoggingConfig();
-    o.properties = buildUnnamed87();
+    o.properties = buildUnnamed89();
     o.queryFileUri = 'foo';
     o.queryList = buildQueryList();
-    o.scriptVariables = buildUnnamed88();
+    o.scriptVariables = buildUnnamed90();
   }
   buildCounterSparkSqlJob--;
   return o;
@@ -3927,15 +4000,15 @@
 void checkSparkSqlJob(api.SparkSqlJob o) {
   buildCounterSparkSqlJob++;
   if (buildCounterSparkSqlJob < 3) {
-    checkUnnamed86(o.jarFileUris!);
+    checkUnnamed88(o.jarFileUris!);
     checkLoggingConfig(o.loggingConfig!);
-    checkUnnamed87(o.properties!);
+    checkUnnamed89(o.properties!);
     unittest.expect(
       o.queryFileUri!,
       unittest.equals('foo'),
     );
     checkQueryList(o.queryList!);
-    checkUnnamed88(o.scriptVariables!);
+    checkUnnamed90(o.scriptVariables!);
   }
   buildCounterSparkSqlJob--;
 }
@@ -4042,7 +4115,7 @@
   buildCounterStateHistory--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed89() => {
+core.Map<core.String, core.Object?> buildUnnamed91() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -4055,7 +4128,7 @@
       },
     };
 
-void checkUnnamed89(core.Map<core.String, core.Object?> o) {
+void checkUnnamed91(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o['x']!) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -4087,15 +4160,15 @@
   );
 }
 
-core.List<core.Map<core.String, core.Object?>> buildUnnamed90() => [
-      buildUnnamed89(),
-      buildUnnamed89(),
+core.List<core.Map<core.String, core.Object?>> buildUnnamed92() => [
+      buildUnnamed91(),
+      buildUnnamed91(),
     ];
 
-void checkUnnamed90(core.List<core.Map<core.String, core.Object?>> o) {
+void checkUnnamed92(core.List<core.Map<core.String, core.Object?>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed89(o[0]);
-  checkUnnamed89(o[1]);
+  checkUnnamed91(o[0]);
+  checkUnnamed91(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -4104,7 +4177,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed90();
+    o.details = buildUnnamed92();
     o.message = 'foo';
   }
   buildCounterStatus--;
@@ -4118,7 +4191,7 @@
       o.code!,
       unittest.equals(42),
     );
-    checkUnnamed90(o.details!);
+    checkUnnamed92(o.details!);
     unittest.expect(
       o.message!,
       unittest.equals('foo'),
@@ -4178,90 +4251,6 @@
   buildCounterSubmitJobRequest--;
 }
 
-core.List<core.String> buildUnnamed91() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed91(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterTemplateParameter = 0;
-api.TemplateParameter buildTemplateParameter() {
-  final o = api.TemplateParameter();
-  buildCounterTemplateParameter++;
-  if (buildCounterTemplateParameter < 3) {
-    o.description = 'foo';
-    o.fields = buildUnnamed91();
-    o.name = 'foo';
-    o.validation = buildParameterValidation();
-  }
-  buildCounterTemplateParameter--;
-  return o;
-}
-
-void checkTemplateParameter(api.TemplateParameter o) {
-  buildCounterTemplateParameter++;
-  if (buildCounterTemplateParameter < 3) {
-    unittest.expect(
-      o.description!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed91(o.fields!);
-    unittest.expect(
-      o.name!,
-      unittest.equals('foo'),
-    );
-    checkParameterValidation(o.validation!);
-  }
-  buildCounterTemplateParameter--;
-}
-
-core.List<core.String> buildUnnamed92() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed92(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterTestIamPermissionsRequest = 0;
-api.TestIamPermissionsRequest buildTestIamPermissionsRequest() {
-  final o = api.TestIamPermissionsRequest();
-  buildCounterTestIamPermissionsRequest++;
-  if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed92();
-  }
-  buildCounterTestIamPermissionsRequest--;
-  return o;
-}
-
-void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
-  buildCounterTestIamPermissionsRequest++;
-  if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed92(o.permissions!);
-  }
-  buildCounterTestIamPermissionsRequest--;
-}
-
 core.List<core.String> buildUnnamed93() => [
       'foo',
       'foo',
@@ -4279,23 +4268,35 @@
   );
 }
 
-core.int buildCounterTestIamPermissionsResponse = 0;
-api.TestIamPermissionsResponse buildTestIamPermissionsResponse() {
-  final o = api.TestIamPermissionsResponse();
-  buildCounterTestIamPermissionsResponse++;
-  if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed93();
+core.int buildCounterTemplateParameter = 0;
+api.TemplateParameter buildTemplateParameter() {
+  final o = api.TemplateParameter();
+  buildCounterTemplateParameter++;
+  if (buildCounterTemplateParameter < 3) {
+    o.description = 'foo';
+    o.fields = buildUnnamed93();
+    o.name = 'foo';
+    o.validation = buildParameterValidation();
   }
-  buildCounterTestIamPermissionsResponse--;
+  buildCounterTemplateParameter--;
   return o;
 }
 
-void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
-  buildCounterTestIamPermissionsResponse++;
-  if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed93(o.permissions!);
+void checkTemplateParameter(api.TemplateParameter o) {
+  buildCounterTemplateParameter++;
+  if (buildCounterTemplateParameter < 3) {
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed93(o.fields!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkParameterValidation(o.validation!);
   }
-  buildCounterTestIamPermissionsResponse--;
+  buildCounterTemplateParameter--;
 }
 
 core.List<core.String> buildUnnamed94() => [
@@ -4315,12 +4316,84 @@
   );
 }
 
+core.int buildCounterTestIamPermissionsRequest = 0;
+api.TestIamPermissionsRequest buildTestIamPermissionsRequest() {
+  final o = api.TestIamPermissionsRequest();
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    o.permissions = buildUnnamed94();
+  }
+  buildCounterTestIamPermissionsRequest--;
+  return o;
+}
+
+void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    checkUnnamed94(o.permissions!);
+  }
+  buildCounterTestIamPermissionsRequest--;
+}
+
+core.List<core.String> buildUnnamed95() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed95(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterTestIamPermissionsResponse = 0;
+api.TestIamPermissionsResponse buildTestIamPermissionsResponse() {
+  final o = api.TestIamPermissionsResponse();
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    o.permissions = buildUnnamed95();
+  }
+  buildCounterTestIamPermissionsResponse--;
+  return o;
+}
+
+void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    checkUnnamed95(o.permissions!);
+  }
+  buildCounterTestIamPermissionsResponse--;
+}
+
+core.List<core.String> buildUnnamed96() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed96(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterValueValidation = 0;
 api.ValueValidation buildValueValidation() {
   final o = api.ValueValidation();
   buildCounterValueValidation++;
   if (buildCounterValueValidation < 3) {
-    o.values = buildUnnamed94();
+    o.values = buildUnnamed96();
   }
   buildCounterValueValidation--;
   return o;
@@ -4329,28 +4402,28 @@
 void checkValueValidation(api.ValueValidation o) {
   buildCounterValueValidation++;
   if (buildCounterValueValidation < 3) {
-    checkUnnamed94(o.values!);
+    checkUnnamed96(o.values!);
   }
   buildCounterValueValidation--;
 }
 
-core.List<api.OrderedJob> buildUnnamed95() => [
+core.List<api.OrderedJob> buildUnnamed97() => [
       buildOrderedJob(),
       buildOrderedJob(),
     ];
 
-void checkUnnamed95(core.List<api.OrderedJob> o) {
+void checkUnnamed97(core.List<api.OrderedJob> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOrderedJob(o[0]);
   checkOrderedJob(o[1]);
 }
 
-core.Map<core.String, core.String> buildUnnamed96() => {
+core.Map<core.String, core.String> buildUnnamed98() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed96(core.Map<core.String, core.String> o) {
+void checkUnnamed98(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -4362,12 +4435,12 @@
   );
 }
 
-core.List<api.TemplateParameter> buildUnnamed97() => [
+core.List<api.TemplateParameter> buildUnnamed99() => [
       buildTemplateParameter(),
       buildTemplateParameter(),
     ];
 
-void checkUnnamed97(core.List<api.TemplateParameter> o) {
+void checkUnnamed99(core.List<api.TemplateParameter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTemplateParameter(o[0]);
   checkTemplateParameter(o[1]);
@@ -4381,10 +4454,10 @@
     o.createTime = 'foo';
     o.dagTimeout = 'foo';
     o.id = 'foo';
-    o.jobs = buildUnnamed95();
-    o.labels = buildUnnamed96();
+    o.jobs = buildUnnamed97();
+    o.labels = buildUnnamed98();
     o.name = 'foo';
-    o.parameters = buildUnnamed97();
+    o.parameters = buildUnnamed99();
     o.placement = buildWorkflowTemplatePlacement();
     o.updateTime = 'foo';
     o.version = 42;
@@ -4408,13 +4481,13 @@
       o.id!,
       unittest.equals('foo'),
     );
-    checkUnnamed95(o.jobs!);
-    checkUnnamed96(o.labels!);
+    checkUnnamed97(o.jobs!);
+    checkUnnamed98(o.labels!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed97(o.parameters!);
+    checkUnnamed99(o.parameters!);
     checkWorkflowTemplatePlacement(o.placement!);
     unittest.expect(
       o.updateTime!,
@@ -4627,6 +4700,16 @@
     });
   });
 
+  unittest.group('obj-schema-DataprocMetricConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildDataprocMetricConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.DataprocMetricConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkDataprocMetricConfig(od);
+    });
+  });
+
   unittest.group('obj-schema-DiagnoseClusterRequest', () {
     unittest.test('to-json--from-json', () async {
       final o = buildDiagnoseClusterRequest();
@@ -4996,6 +5079,16 @@
     });
   });
 
+  unittest.group('obj-schema-Metric', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildMetric();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Metric.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkMetric(od);
+    });
+  });
+
   unittest.group('obj-schema-NamespacedGkeDeploymentTarget', () {
     unittest.test('to-json--from-json', () async {
       final o = buildNamespacedGkeDeploymentTarget();
diff --git a/generated/googleapis/test/digitalassetlinks/v1_test.dart b/generated/googleapis/test/digitalassetlinks/v1_test.dart
index 812bbcf..e81ea8b 100644
--- a/generated/googleapis/test/digitalassetlinks/v1_test.dart
+++ b/generated/googleapis/test/digitalassetlinks/v1_test.dart
@@ -71,6 +71,84 @@
   buildCounterAsset--;
 }
 
+core.List<api.StatementTemplate> buildUnnamed0() => [
+      buildStatementTemplate(),
+      buildStatementTemplate(),
+    ];
+
+void checkUnnamed0(core.List<api.StatementTemplate> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkStatementTemplate(o[0]);
+  checkStatementTemplate(o[1]);
+}
+
+core.int buildCounterBulkCheckRequest = 0;
+api.BulkCheckRequest buildBulkCheckRequest() {
+  final o = api.BulkCheckRequest();
+  buildCounterBulkCheckRequest++;
+  if (buildCounterBulkCheckRequest < 3) {
+    o.allowGoogleInternalDataSources = true;
+    o.defaultRelation = 'foo';
+    o.defaultSource = buildAsset();
+    o.defaultTarget = buildAsset();
+    o.skipCacheLookup = true;
+    o.statements = buildUnnamed0();
+  }
+  buildCounterBulkCheckRequest--;
+  return o;
+}
+
+void checkBulkCheckRequest(api.BulkCheckRequest o) {
+  buildCounterBulkCheckRequest++;
+  if (buildCounterBulkCheckRequest < 3) {
+    unittest.expect(o.allowGoogleInternalDataSources!, unittest.isTrue);
+    unittest.expect(
+      o.defaultRelation!,
+      unittest.equals('foo'),
+    );
+    checkAsset(o.defaultSource!);
+    checkAsset(o.defaultTarget!);
+    unittest.expect(o.skipCacheLookup!, unittest.isTrue);
+    checkUnnamed0(o.statements!);
+  }
+  buildCounterBulkCheckRequest--;
+}
+
+core.List<api.CheckResponse> buildUnnamed1() => [
+      buildCheckResponse(),
+      buildCheckResponse(),
+    ];
+
+void checkUnnamed1(core.List<api.CheckResponse> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkCheckResponse(o[0]);
+  checkCheckResponse(o[1]);
+}
+
+core.int buildCounterBulkCheckResponse = 0;
+api.BulkCheckResponse buildBulkCheckResponse() {
+  final o = api.BulkCheckResponse();
+  buildCounterBulkCheckResponse++;
+  if (buildCounterBulkCheckResponse < 3) {
+    o.bulkErrorCode = 'foo';
+    o.checkResults = buildUnnamed1();
+  }
+  buildCounterBulkCheckResponse--;
+  return o;
+}
+
+void checkBulkCheckResponse(api.BulkCheckResponse o) {
+  buildCounterBulkCheckResponse++;
+  if (buildCounterBulkCheckResponse < 3) {
+    unittest.expect(
+      o.bulkErrorCode!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed1(o.checkResults!);
+  }
+  buildCounterBulkCheckResponse--;
+}
+
 core.int buildCounterCertificateInfo = 0;
 api.CertificateInfo buildCertificateInfo() {
   final o = api.CertificateInfo();
@@ -93,12 +171,12 @@
   buildCounterCertificateInfo--;
 }
 
-core.List<core.String> buildUnnamed0() => [
+core.List<core.String> buildUnnamed2() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed0(core.List<core.String> o) {
+void checkUnnamed2(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -116,7 +194,7 @@
   buildCounterCheckResponse++;
   if (buildCounterCheckResponse < 3) {
     o.debugString = 'foo';
-    o.errorCode = buildUnnamed0();
+    o.errorCode = buildUnnamed2();
     o.linked = true;
     o.maxAge = 'foo';
   }
@@ -131,7 +209,7 @@
       o.debugString!,
       unittest.equals('foo'),
     );
-    checkUnnamed0(o.errorCode!);
+    checkUnnamed2(o.errorCode!);
     unittest.expect(o.linked!, unittest.isTrue);
     unittest.expect(
       o.maxAge!,
@@ -141,12 +219,12 @@
   buildCounterCheckResponse--;
 }
 
-core.List<core.String> buildUnnamed1() => [
+core.List<core.String> buildUnnamed3() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed1(core.List<core.String> o) {
+void checkUnnamed3(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -158,12 +236,12 @@
   );
 }
 
-core.List<api.Statement> buildUnnamed2() => [
+core.List<api.Statement> buildUnnamed4() => [
       buildStatement(),
       buildStatement(),
     ];
 
-void checkUnnamed2(core.List<api.Statement> o) {
+void checkUnnamed4(core.List<api.Statement> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStatement(o[0]);
   checkStatement(o[1]);
@@ -175,9 +253,9 @@
   buildCounterListResponse++;
   if (buildCounterListResponse < 3) {
     o.debugString = 'foo';
-    o.errorCode = buildUnnamed1();
+    o.errorCode = buildUnnamed3();
     o.maxAge = 'foo';
-    o.statements = buildUnnamed2();
+    o.statements = buildUnnamed4();
   }
   buildCounterListResponse--;
   return o;
@@ -190,12 +268,12 @@
       o.debugString!,
       unittest.equals('foo'),
     );
-    checkUnnamed1(o.errorCode!);
+    checkUnnamed3(o.errorCode!);
     unittest.expect(
       o.maxAge!,
       unittest.equals('foo'),
     );
-    checkUnnamed2(o.statements!);
+    checkUnnamed4(o.statements!);
   }
   buildCounterListResponse--;
 }
@@ -226,6 +304,32 @@
   buildCounterStatement--;
 }
 
+core.int buildCounterStatementTemplate = 0;
+api.StatementTemplate buildStatementTemplate() {
+  final o = api.StatementTemplate();
+  buildCounterStatementTemplate++;
+  if (buildCounterStatementTemplate < 3) {
+    o.relation = 'foo';
+    o.source = buildAsset();
+    o.target = buildAsset();
+  }
+  buildCounterStatementTemplate--;
+  return o;
+}
+
+void checkStatementTemplate(api.StatementTemplate o) {
+  buildCounterStatementTemplate++;
+  if (buildCounterStatementTemplate < 3) {
+    unittest.expect(
+      o.relation!,
+      unittest.equals('foo'),
+    );
+    checkAsset(o.source!);
+    checkAsset(o.target!);
+  }
+  buildCounterStatementTemplate--;
+}
+
 core.int buildCounterWebAsset = 0;
 api.WebAsset buildWebAsset() {
   final o = api.WebAsset();
@@ -269,6 +373,26 @@
     });
   });
 
+  unittest.group('obj-schema-BulkCheckRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildBulkCheckRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.BulkCheckRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkBulkCheckRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-BulkCheckResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildBulkCheckResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.BulkCheckResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkBulkCheckResponse(od);
+    });
+  });
+
   unittest.group('obj-schema-CertificateInfo', () {
     unittest.test('to-json--from-json', () async {
       final o = buildCertificateInfo();
@@ -309,6 +433,16 @@
     });
   });
 
+  unittest.group('obj-schema-StatementTemplate', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildStatementTemplate();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.StatementTemplate.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkStatementTemplate(od);
+    });
+  });
+
   unittest.group('obj-schema-WebAsset', () {
     unittest.test('to-json--from-json', () async {
       final o = buildWebAsset();
@@ -320,6 +454,61 @@
   });
 
   unittest.group('resource-AssetlinksResource', () {
+    unittest.test('method--bulkCheck', () async {
+      final mock = HttpServerMock();
+      final res = api.DigitalassetlinksApi(mock).assetlinks;
+      final arg_request = buildBulkCheckRequest();
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.BulkCheckRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkBulkCheckRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 23),
+          unittest.equals('v1/assetlinks:bulkCheck'),
+        );
+        pathOffset += 23;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildBulkCheckResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.bulkCheck(arg_request, $fields: arg_$fields);
+      checkBulkCheckResponse(response as api.BulkCheckResponse);
+    });
+
     unittest.test('method--check', () async {
       final mock = HttpServerMock();
       final res = api.DigitalassetlinksApi(mock).assetlinks;
diff --git a/generated/googleapis/test/displayvideo/v1_test.dart b/generated/googleapis/test/displayvideo/v1_test.dart
index ae6d6d4..90d1477 100644
--- a/generated/googleapis/test/displayvideo/v1_test.dart
+++ b/generated/googleapis/test/displayvideo/v1_test.dart
@@ -4401,8 +4401,10 @@
   buildCounterFirstAndThirdPartyAudience++;
   if (buildCounterFirstAndThirdPartyAudience < 3) {
     o.activeDisplayAudienceSize = 'foo';
+    o.appId = 'foo';
     o.audienceSource = 'foo';
     o.audienceType = 'foo';
+    o.contactInfoList = buildContactInfoList();
     o.description = 'foo';
     o.displayAudienceSize = 'foo';
     o.displayDesktopAudienceSize = 'foo';
@@ -4413,6 +4415,7 @@
     o.firstAndThirdPartyAudienceType = 'foo';
     o.gmailAudienceSize = 'foo';
     o.membershipDurationDays = 'foo';
+    o.mobileDeviceIdList = buildMobileDeviceIdList();
     o.name = 'foo';
     o.youtubeAudienceSize = 'foo';
   }
@@ -4428,6 +4431,10 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.appId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.audienceSource!,
       unittest.equals('foo'),
     );
@@ -4435,6 +4442,7 @@
       o.audienceType!,
       unittest.equals('foo'),
     );
+    checkContactInfoList(o.contactInfoList!);
     unittest.expect(
       o.description!,
       unittest.equals('foo'),
@@ -4475,6 +4483,7 @@
       o.membershipDurationDays!,
       unittest.equals('foo'),
     );
+    checkMobileDeviceIdList(o.mobileDeviceIdList!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
diff --git a/generated/googleapis/test/dns/v1_test.dart b/generated/googleapis/test/dns/v1_test.dart
index cd0ce59..cb74101 100644
--- a/generated/googleapis/test/dns/v1_test.dart
+++ b/generated/googleapis/test/dns/v1_test.dart
@@ -1244,6 +1244,7 @@
     o.managedZonesPerNetwork = 42;
     o.networksPerManagedZone = 42;
     o.networksPerPolicy = 42;
+    o.peeringZonesPerTargetNetwork = 42;
     o.policies = 42;
     o.resourceRecordsPerRrset = 42;
     o.rrsetAdditionsPerChange = 42;
@@ -1290,6 +1291,10 @@
       unittest.equals(42),
     );
     unittest.expect(
+      o.peeringZonesPerTargetNetwork!,
+      unittest.equals(42),
+    );
+    unittest.expect(
       o.policies!,
       unittest.equals(42),
     );
diff --git a/generated/googleapis/test/eventarc/v1_test.dart b/generated/googleapis/test/eventarc/v1_test.dart
index 11a7d4d..fa37d88 100644
--- a/generated/googleapis/test/eventarc/v1_test.dart
+++ b/generated/googleapis/test/eventarc/v1_test.dart
@@ -224,6 +224,7 @@
   buildCounterEventFilter++;
   if (buildCounterEventFilter < 3) {
     o.attribute = 'foo';
+    o.operator = 'foo';
     o.value = 'foo';
   }
   buildCounterEventFilter--;
@@ -238,6 +239,10 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.operator!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.value!,
       unittest.equals('foo'),
     );
@@ -245,6 +250,51 @@
   buildCounterEventFilter--;
 }
 
+core.List<api.FilteringAttribute> buildUnnamed3() => [
+      buildFilteringAttribute(),
+      buildFilteringAttribute(),
+    ];
+
+void checkUnnamed3(core.List<api.FilteringAttribute> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFilteringAttribute(o[0]);
+  checkFilteringAttribute(o[1]);
+}
+
+core.int buildCounterEventType = 0;
+api.EventType buildEventType() {
+  final o = api.EventType();
+  buildCounterEventType++;
+  if (buildCounterEventType < 3) {
+    o.description = 'foo';
+    o.eventSchemaUri = 'foo';
+    o.filteringAttributes = buildUnnamed3();
+    o.type = 'foo';
+  }
+  buildCounterEventType--;
+  return o;
+}
+
+void checkEventType(api.EventType o) {
+  buildCounterEventType++;
+  if (buildCounterEventType < 3) {
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.eventSchemaUri!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed3(o.filteringAttributes!);
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterEventType--;
+}
+
 core.int buildCounterExpr = 0;
 api.Expr buildExpr() {
   final o = api.Expr();
@@ -282,6 +332,37 @@
   buildCounterExpr--;
 }
 
+core.int buildCounterFilteringAttribute = 0;
+api.FilteringAttribute buildFilteringAttribute() {
+  final o = api.FilteringAttribute();
+  buildCounterFilteringAttribute++;
+  if (buildCounterFilteringAttribute < 3) {
+    o.attribute = 'foo';
+    o.description = 'foo';
+    o.pathPatternSupported = true;
+    o.required = true;
+  }
+  buildCounterFilteringAttribute--;
+  return o;
+}
+
+void checkFilteringAttribute(api.FilteringAttribute o) {
+  buildCounterFilteringAttribute++;
+  if (buildCounterFilteringAttribute < 3) {
+    unittest.expect(
+      o.attribute!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.pathPatternSupported!, unittest.isTrue);
+    unittest.expect(o.required!, unittest.isTrue);
+  }
+  buildCounterFilteringAttribute--;
+}
+
 core.int buildCounterGKE = 0;
 api.GKE buildGKE() {
   final o = api.GKE();
@@ -341,12 +422,12 @@
   buildCounterGoogleLongrunningCancelOperationRequest--;
 }
 
-core.List<api.GoogleLongrunningOperation> buildUnnamed3() => [
+core.List<api.GoogleLongrunningOperation> buildUnnamed4() => [
       buildGoogleLongrunningOperation(),
       buildGoogleLongrunningOperation(),
     ];
 
-void checkUnnamed3(core.List<api.GoogleLongrunningOperation> o) {
+void checkUnnamed4(core.List<api.GoogleLongrunningOperation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleLongrunningOperation(o[0]);
   checkGoogleLongrunningOperation(o[1]);
@@ -359,7 +440,7 @@
   buildCounterGoogleLongrunningListOperationsResponse++;
   if (buildCounterGoogleLongrunningListOperationsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.operations = buildUnnamed3();
+    o.operations = buildUnnamed4();
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
   return o;
@@ -373,12 +454,12 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed3(o.operations!);
+    checkUnnamed4(o.operations!);
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed4() => {
+core.Map<core.String, core.Object?> buildUnnamed5() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -391,7 +472,7 @@
       },
     };
 
-void checkUnnamed4(core.Map<core.String, core.Object?> o) {
+void checkUnnamed5(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o['x']!) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -423,7 +504,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed5() => {
+core.Map<core.String, core.Object?> buildUnnamed6() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -436,7 +517,7 @@
       },
     };
 
-void checkUnnamed5(core.Map<core.String, core.Object?> o) {
+void checkUnnamed6(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o['x']!) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -475,9 +556,9 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     o.done = true;
     o.error = buildGoogleRpcStatus();
-    o.metadata = buildUnnamed4();
+    o.metadata = buildUnnamed5();
     o.name = 'foo';
-    o.response = buildUnnamed5();
+    o.response = buildUnnamed6();
   }
   buildCounterGoogleLongrunningOperation--;
   return o;
@@ -488,17 +569,17 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     unittest.expect(o.done!, unittest.isTrue);
     checkGoogleRpcStatus(o.error!);
-    checkUnnamed4(o.metadata!);
+    checkUnnamed5(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed5(o.response!);
+    checkUnnamed6(o.response!);
   }
   buildCounterGoogleLongrunningOperation--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed6() => {
+core.Map<core.String, core.Object?> buildUnnamed7() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -511,7 +592,7 @@
       },
     };
 
-void checkUnnamed6(core.Map<core.String, core.Object?> o) {
+void checkUnnamed7(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o['x']!) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -543,15 +624,15 @@
   );
 }
 
-core.List<core.Map<core.String, core.Object?>> buildUnnamed7() => [
-      buildUnnamed6(),
-      buildUnnamed6(),
+core.List<core.Map<core.String, core.Object?>> buildUnnamed8() => [
+      buildUnnamed7(),
+      buildUnnamed7(),
     ];
 
-void checkUnnamed7(core.List<core.Map<core.String, core.Object?>> o) {
+void checkUnnamed8(core.List<core.Map<core.String, core.Object?>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed6(o[0]);
-  checkUnnamed6(o[1]);
+  checkUnnamed7(o[0]);
+  checkUnnamed7(o[1]);
 }
 
 core.int buildCounterGoogleRpcStatus = 0;
@@ -560,7 +641,7 @@
   buildCounterGoogleRpcStatus++;
   if (buildCounterGoogleRpcStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed7();
+    o.details = buildUnnamed8();
     o.message = 'foo';
   }
   buildCounterGoogleRpcStatus--;
@@ -574,7 +655,7 @@
       o.code!,
       unittest.equals(42),
     );
-    checkUnnamed7(o.details!);
+    checkUnnamed8(o.details!);
     unittest.expect(
       o.message!,
       unittest.equals('foo'),
@@ -583,12 +664,12 @@
   buildCounterGoogleRpcStatus--;
 }
 
-core.List<api.Location> buildUnnamed8() => [
+core.List<api.Location> buildUnnamed9() => [
       buildLocation(),
       buildLocation(),
     ];
 
-void checkUnnamed8(core.List<api.Location> o) {
+void checkUnnamed9(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -599,7 +680,7 @@
   final o = api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed8();
+    o.locations = buildUnnamed9();
     o.nextPageToken = 'foo';
   }
   buildCounterListLocationsResponse--;
@@ -609,7 +690,7 @@
 void checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed8(o.locations!);
+    checkUnnamed9(o.locations!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -618,23 +699,77 @@
   buildCounterListLocationsResponse--;
 }
 
-core.List<api.Trigger> buildUnnamed9() => [
+core.List<api.Provider> buildUnnamed10() => [
+      buildProvider(),
+      buildProvider(),
+    ];
+
+void checkUnnamed10(core.List<api.Provider> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkProvider(o[0]);
+  checkProvider(o[1]);
+}
+
+core.List<core.String> buildUnnamed11() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed11(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListProvidersResponse = 0;
+api.ListProvidersResponse buildListProvidersResponse() {
+  final o = api.ListProvidersResponse();
+  buildCounterListProvidersResponse++;
+  if (buildCounterListProvidersResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.providers = buildUnnamed10();
+    o.unreachable = buildUnnamed11();
+  }
+  buildCounterListProvidersResponse--;
+  return o;
+}
+
+void checkListProvidersResponse(api.ListProvidersResponse o) {
+  buildCounterListProvidersResponse++;
+  if (buildCounterListProvidersResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed10(o.providers!);
+    checkUnnamed11(o.unreachable!);
+  }
+  buildCounterListProvidersResponse--;
+}
+
+core.List<api.Trigger> buildUnnamed12() => [
       buildTrigger(),
       buildTrigger(),
     ];
 
-void checkUnnamed9(core.List<api.Trigger> o) {
+void checkUnnamed12(core.List<api.Trigger> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTrigger(o[0]);
   checkTrigger(o[1]);
 }
 
-core.List<core.String> buildUnnamed10() => [
+core.List<core.String> buildUnnamed13() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed10(core.List<core.String> o) {
+void checkUnnamed13(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -652,8 +787,8 @@
   buildCounterListTriggersResponse++;
   if (buildCounterListTriggersResponse < 3) {
     o.nextPageToken = 'foo';
-    o.triggers = buildUnnamed9();
-    o.unreachable = buildUnnamed10();
+    o.triggers = buildUnnamed12();
+    o.unreachable = buildUnnamed13();
   }
   buildCounterListTriggersResponse--;
   return o;
@@ -666,18 +801,18 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed9(o.triggers!);
-    checkUnnamed10(o.unreachable!);
+    checkUnnamed12(o.triggers!);
+    checkUnnamed13(o.unreachable!);
   }
   buildCounterListTriggersResponse--;
 }
 
-core.Map<core.String, core.String> buildUnnamed11() => {
+core.Map<core.String, core.String> buildUnnamed14() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed11(core.Map<core.String, core.String> o) {
+void checkUnnamed14(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -689,7 +824,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed12() => {
+core.Map<core.String, core.Object?> buildUnnamed15() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -702,7 +837,7 @@
       },
     };
 
-void checkUnnamed12(core.Map<core.String, core.Object?> o) {
+void checkUnnamed15(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o['x']!) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -740,9 +875,9 @@
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
     o.displayName = 'foo';
-    o.labels = buildUnnamed11();
+    o.labels = buildUnnamed14();
     o.locationId = 'foo';
-    o.metadata = buildUnnamed12();
+    o.metadata = buildUnnamed15();
     o.name = 'foo';
   }
   buildCounterLocation--;
@@ -756,12 +891,12 @@
       o.displayName!,
       unittest.equals('foo'),
     );
-    checkUnnamed11(o.labels!);
+    checkUnnamed14(o.labels!);
     unittest.expect(
       o.locationId!,
       unittest.equals('foo'),
     );
-    checkUnnamed12(o.metadata!);
+    checkUnnamed15(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -770,23 +905,23 @@
   buildCounterLocation--;
 }
 
-core.List<api.AuditConfig> buildUnnamed13() => [
+core.List<api.AuditConfig> buildUnnamed16() => [
       buildAuditConfig(),
       buildAuditConfig(),
     ];
 
-void checkUnnamed13(core.List<api.AuditConfig> o) {
+void checkUnnamed16(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-core.List<api.Binding> buildUnnamed14() => [
+core.List<api.Binding> buildUnnamed17() => [
       buildBinding(),
       buildBinding(),
     ];
 
-void checkUnnamed14(core.List<api.Binding> o) {
+void checkUnnamed17(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -797,8 +932,8 @@
   final o = api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed13();
-    o.bindings = buildUnnamed14();
+    o.auditConfigs = buildUnnamed16();
+    o.bindings = buildUnnamed17();
     o.etag = 'foo';
     o.version = 42;
   }
@@ -809,8 +944,8 @@
 void checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed13(o.auditConfigs!);
-    checkUnnamed14(o.bindings!);
+    checkUnnamed16(o.auditConfigs!);
+    checkUnnamed17(o.bindings!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -823,6 +958,46 @@
   buildCounterPolicy--;
 }
 
+core.List<api.EventType> buildUnnamed18() => [
+      buildEventType(),
+      buildEventType(),
+    ];
+
+void checkUnnamed18(core.List<api.EventType> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventType(o[0]);
+  checkEventType(o[1]);
+}
+
+core.int buildCounterProvider = 0;
+api.Provider buildProvider() {
+  final o = api.Provider();
+  buildCounterProvider++;
+  if (buildCounterProvider < 3) {
+    o.displayName = 'foo';
+    o.eventTypes = buildUnnamed18();
+    o.name = 'foo';
+  }
+  buildCounterProvider--;
+  return o;
+}
+
+void checkProvider(api.Provider o) {
+  buildCounterProvider++;
+  if (buildCounterProvider < 3) {
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed18(o.eventTypes!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterProvider--;
+}
+
 core.int buildCounterPubsub = 0;
 api.Pubsub buildPubsub() {
   final o = api.Pubsub();
@@ -874,12 +1049,12 @@
   buildCounterSetIamPolicyRequest--;
 }
 
-core.List<core.String> buildUnnamed15() => [
+core.List<core.String> buildUnnamed19() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed15(core.List<core.String> o) {
+void checkUnnamed19(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -896,7 +1071,7 @@
   final o = api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed15();
+    o.permissions = buildUnnamed19();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -905,17 +1080,17 @@
 void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed15(o.permissions!);
+    checkUnnamed19(o.permissions!);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-core.List<core.String> buildUnnamed16() => [
+core.List<core.String> buildUnnamed20() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed16(core.List<core.String> o) {
+void checkUnnamed20(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -932,7 +1107,7 @@
   final o = api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed16();
+    o.permissions = buildUnnamed20();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -941,7 +1116,7 @@
 void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed16(o.permissions!);
+    checkUnnamed20(o.permissions!);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -965,23 +1140,23 @@
   buildCounterTransport--;
 }
 
-core.List<api.EventFilter> buildUnnamed17() => [
+core.List<api.EventFilter> buildUnnamed21() => [
       buildEventFilter(),
       buildEventFilter(),
     ];
 
-void checkUnnamed17(core.List<api.EventFilter> o) {
+void checkUnnamed21(core.List<api.EventFilter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEventFilter(o[0]);
   checkEventFilter(o[1]);
 }
 
-core.Map<core.String, core.String> buildUnnamed18() => {
+core.Map<core.String, core.String> buildUnnamed22() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed18(core.Map<core.String, core.String> o) {
+void checkUnnamed22(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1001,8 +1176,8 @@
     o.createTime = 'foo';
     o.destination = buildDestination();
     o.etag = 'foo';
-    o.eventFilters = buildUnnamed17();
-    o.labels = buildUnnamed18();
+    o.eventFilters = buildUnnamed21();
+    o.labels = buildUnnamed22();
     o.name = 'foo';
     o.serviceAccount = 'foo';
     o.transport = buildTransport();
@@ -1025,8 +1200,8 @@
       o.etag!,
       unittest.equals('foo'),
     );
-    checkUnnamed17(o.eventFilters!);
-    checkUnnamed18(o.labels!);
+    checkUnnamed21(o.eventFilters!);
+    checkUnnamed22(o.labels!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -1119,6 +1294,16 @@
     });
   });
 
+  unittest.group('obj-schema-EventType', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildEventType();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.EventType.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkEventType(od);
+    });
+  });
+
   unittest.group('obj-schema-Expr', () {
     unittest.test('to-json--from-json', () async {
       final o = buildExpr();
@@ -1129,6 +1314,16 @@
     });
   });
 
+  unittest.group('obj-schema-FilteringAttribute', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildFilteringAttribute();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.FilteringAttribute.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkFilteringAttribute(od);
+    });
+  });
+
   unittest.group('obj-schema-GKE', () {
     unittest.test('to-json--from-json', () async {
       final o = buildGKE();
@@ -1188,6 +1383,16 @@
     });
   });
 
+  unittest.group('obj-schema-ListProvidersResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListProvidersResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListProvidersResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListProvidersResponse(od);
+    });
+  });
+
   unittest.group('obj-schema-ListTriggersResponse', () {
     unittest.test('to-json--from-json', () async {
       final o = buildListTriggersResponse();
@@ -1218,6 +1423,16 @@
     });
   });
 
+  unittest.group('obj-schema-Provider', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildProvider();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Provider.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkProvider(od);
+    });
+  });
+
   unittest.group('obj-schema-Pubsub', () {
     unittest.test('to-json--from-json', () async {
       final o = buildPubsub();
@@ -1997,6 +2212,137 @@
     });
   });
 
+  unittest.group('resource-ProjectsLocationsProvidersResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.EventarcApi(mock).projects.locations.providers;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildProvider());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkProvider(response as api.Provider);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.EventarcApi(mock).projects.locations.providers;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListProvidersResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListProvidersResponse(response as api.ListProvidersResponse);
+    });
+  });
+
   unittest.group('resource-ProjectsLocationsTriggersResource', () {
     unittest.test('method--create', () async {
       final mock = HttpServerMock();
diff --git a/generated/googleapis/test/gameservices/v1_test.dart b/generated/googleapis/test/gameservices/v1_test.dart
index 0133520..9c49bfe 100644
--- a/generated/googleapis/test/gameservices/v1_test.dart
+++ b/generated/googleapis/test/gameservices/v1_test.dart
@@ -37,6 +37,30 @@
   checkAuditLogConfig(o[1]);
 }
 
+core.int buildCounterAuditConfig = 0;
+api.AuditConfig buildAuditConfig() {
+  final o = api.AuditConfig();
+  buildCounterAuditConfig++;
+  if (buildCounterAuditConfig < 3) {
+    o.auditLogConfigs = buildUnnamed0();
+    o.service = 'foo';
+  }
+  buildCounterAuditConfig--;
+  return o;
+}
+
+void checkAuditConfig(api.AuditConfig o) {
+  buildCounterAuditConfig++;
+  if (buildCounterAuditConfig < 3) {
+    checkUnnamed0(o.auditLogConfigs!);
+    unittest.expect(
+      o.service!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAuditConfig--;
+}
+
 core.List<core.String> buildUnnamed1() => [
       'foo',
       'foo',
@@ -54,55 +78,12 @@
   );
 }
 
-core.int buildCounterAuditConfig = 0;
-api.AuditConfig buildAuditConfig() {
-  final o = api.AuditConfig();
-  buildCounterAuditConfig++;
-  if (buildCounterAuditConfig < 3) {
-    o.auditLogConfigs = buildUnnamed0();
-    o.exemptedMembers = buildUnnamed1();
-    o.service = 'foo';
-  }
-  buildCounterAuditConfig--;
-  return o;
-}
-
-void checkAuditConfig(api.AuditConfig o) {
-  buildCounterAuditConfig++;
-  if (buildCounterAuditConfig < 3) {
-    checkUnnamed0(o.auditLogConfigs!);
-    checkUnnamed1(o.exemptedMembers!);
-    unittest.expect(
-      o.service!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterAuditConfig--;
-}
-
-core.List<core.String> buildUnnamed2() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed2(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.int buildCounterAuditLogConfig = 0;
 api.AuditLogConfig buildAuditLogConfig() {
   final o = api.AuditLogConfig();
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    o.exemptedMembers = buildUnnamed2();
+    o.exemptedMembers = buildUnnamed1();
     o.ignoreChildExemptions = true;
     o.logType = 'foo';
   }
@@ -113,7 +94,7 @@
 void checkAuditLogConfig(api.AuditLogConfig o) {
   buildCounterAuditLogConfig++;
   if (buildCounterAuditLogConfig < 3) {
-    checkUnnamed2(o.exemptedMembers!);
+    checkUnnamed1(o.exemptedMembers!);
     unittest.expect(o.ignoreChildExemptions!, unittest.isTrue);
     unittest.expect(
       o.logType!,
@@ -145,12 +126,12 @@
   buildCounterAuthorizationLoggingOptions--;
 }
 
-core.List<core.String> buildUnnamed3() => [
+core.List<core.String> buildUnnamed2() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed3(core.List<core.String> o) {
+void checkUnnamed2(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -169,7 +150,7 @@
   if (buildCounterBinding < 3) {
     o.bindingId = 'foo';
     o.condition = buildExpr();
-    o.members = buildUnnamed3();
+    o.members = buildUnnamed2();
     o.role = 'foo';
   }
   buildCounterBinding--;
@@ -184,7 +165,7 @@
       unittest.equals('foo'),
     );
     checkExpr(o.condition!);
-    checkUnnamed3(o.members!);
+    checkUnnamed2(o.members!);
     unittest.expect(
       o.role!,
       unittest.equals('foo'),
@@ -232,12 +213,12 @@
   buildCounterCloudAuditOptions--;
 }
 
-core.List<core.String> buildUnnamed4() => [
+core.List<core.String> buildUnnamed3() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed4(core.List<core.String> o) {
+void checkUnnamed3(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -258,7 +239,7 @@
     o.op = 'foo';
     o.svc = 'foo';
     o.sys = 'foo';
-    o.values = buildUnnamed4();
+    o.values = buildUnnamed3();
   }
   buildCounterCondition--;
   return o;
@@ -283,17 +264,17 @@
       o.sys!,
       unittest.equals('foo'),
     );
-    checkUnnamed4(o.values!);
+    checkUnnamed3(o.values!);
   }
   buildCounterCondition--;
 }
 
-core.List<api.CustomField> buildUnnamed5() => [
+core.List<api.CustomField> buildUnnamed4() => [
       buildCustomField(),
       buildCustomField(),
     ];
 
-void checkUnnamed5(core.List<api.CustomField> o) {
+void checkUnnamed4(core.List<api.CustomField> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCustomField(o[0]);
   checkCustomField(o[1]);
@@ -304,7 +285,7 @@
   final o = api.CounterOptions();
   buildCounterCounterOptions++;
   if (buildCounterCounterOptions < 3) {
-    o.customFields = buildUnnamed5();
+    o.customFields = buildUnnamed4();
     o.field = 'foo';
     o.metric = 'foo';
   }
@@ -315,7 +296,7 @@
 void checkCounterOptions(api.CounterOptions o) {
   buildCounterCounterOptions++;
   if (buildCounterCounterOptions < 3) {
-    checkUnnamed5(o.customFields!);
+    checkUnnamed4(o.customFields!);
     unittest.expect(
       o.field!,
       unittest.equals('foo'),
@@ -377,12 +358,12 @@
   buildCounterDataAccessOptions--;
 }
 
-core.List<api.DeployedFleetDetails> buildUnnamed6() => [
+core.List<api.DeployedFleetDetails> buildUnnamed5() => [
       buildDeployedFleetDetails(),
       buildDeployedFleetDetails(),
     ];
 
-void checkUnnamed6(core.List<api.DeployedFleetDetails> o) {
+void checkUnnamed5(core.List<api.DeployedFleetDetails> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDeployedFleetDetails(o[0]);
   checkDeployedFleetDetails(o[1]);
@@ -394,7 +375,7 @@
   buildCounterDeployedClusterState++;
   if (buildCounterDeployedClusterState < 3) {
     o.cluster = 'foo';
-    o.fleetDetails = buildUnnamed6();
+    o.fleetDetails = buildUnnamed5();
   }
   buildCounterDeployedClusterState--;
   return o;
@@ -407,7 +388,7 @@
       o.cluster!,
       unittest.equals('foo'),
     );
-    checkUnnamed6(o.fleetDetails!);
+    checkUnnamed5(o.fleetDetails!);
   }
   buildCounterDeployedClusterState--;
 }
@@ -597,23 +578,23 @@
   buildCounterFetchDeploymentStateRequest--;
 }
 
-core.List<api.DeployedClusterState> buildUnnamed7() => [
+core.List<api.DeployedClusterState> buildUnnamed6() => [
       buildDeployedClusterState(),
       buildDeployedClusterState(),
     ];
 
-void checkUnnamed7(core.List<api.DeployedClusterState> o) {
+void checkUnnamed6(core.List<api.DeployedClusterState> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDeployedClusterState(o[0]);
   checkDeployedClusterState(o[1]);
 }
 
-core.List<core.String> buildUnnamed8() => [
+core.List<core.String> buildUnnamed7() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed8(core.List<core.String> o) {
+void checkUnnamed7(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -630,8 +611,8 @@
   final o = api.FetchDeploymentStateResponse();
   buildCounterFetchDeploymentStateResponse++;
   if (buildCounterFetchDeploymentStateResponse < 3) {
-    o.clusterState = buildUnnamed7();
-    o.unavailable = buildUnnamed8();
+    o.clusterState = buildUnnamed6();
+    o.unavailable = buildUnnamed7();
   }
   buildCounterFetchDeploymentStateResponse--;
   return o;
@@ -640,8 +621,8 @@
 void checkFetchDeploymentStateResponse(api.FetchDeploymentStateResponse o) {
   buildCounterFetchDeploymentStateResponse++;
   if (buildCounterFetchDeploymentStateResponse < 3) {
-    checkUnnamed7(o.clusterState!);
-    checkUnnamed8(o.unavailable!);
+    checkUnnamed6(o.clusterState!);
+    checkUnnamed7(o.unavailable!);
   }
   buildCounterFetchDeploymentStateResponse--;
 }
@@ -673,12 +654,12 @@
   buildCounterFleetConfig--;
 }
 
-core.Map<core.String, core.String> buildUnnamed9() => {
+core.Map<core.String, core.String> buildUnnamed8() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed9(core.Map<core.String, core.String> o) {
+void checkUnnamed8(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -700,7 +681,7 @@
     o.createTime = 'foo';
     o.description = 'foo';
     o.etag = 'foo';
-    o.labels = buildUnnamed9();
+    o.labels = buildUnnamed8();
     o.name = 'foo';
     o.updateTime = 'foo';
   }
@@ -725,7 +706,7 @@
       o.etag!,
       unittest.equals('foo'),
     );
-    checkUnnamed9(o.labels!);
+    checkUnnamed8(o.labels!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -763,23 +744,23 @@
   buildCounterGameServerClusterConnectionInfo--;
 }
 
-core.List<api.FleetConfig> buildUnnamed10() => [
+core.List<api.FleetConfig> buildUnnamed9() => [
       buildFleetConfig(),
       buildFleetConfig(),
     ];
 
-void checkUnnamed10(core.List<api.FleetConfig> o) {
+void checkUnnamed9(core.List<api.FleetConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFleetConfig(o[0]);
   checkFleetConfig(o[1]);
 }
 
-core.Map<core.String, core.String> buildUnnamed11() => {
+core.Map<core.String, core.String> buildUnnamed10() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed11(core.Map<core.String, core.String> o) {
+void checkUnnamed10(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -791,12 +772,12 @@
   );
 }
 
-core.List<api.ScalingConfig> buildUnnamed12() => [
+core.List<api.ScalingConfig> buildUnnamed11() => [
       buildScalingConfig(),
       buildScalingConfig(),
     ];
 
-void checkUnnamed12(core.List<api.ScalingConfig> o) {
+void checkUnnamed11(core.List<api.ScalingConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkScalingConfig(o[0]);
   checkScalingConfig(o[1]);
@@ -809,10 +790,10 @@
   if (buildCounterGameServerConfig < 3) {
     o.createTime = 'foo';
     o.description = 'foo';
-    o.fleetConfigs = buildUnnamed10();
-    o.labels = buildUnnamed11();
+    o.fleetConfigs = buildUnnamed9();
+    o.labels = buildUnnamed10();
     o.name = 'foo';
-    o.scalingConfigs = buildUnnamed12();
+    o.scalingConfigs = buildUnnamed11();
     o.updateTime = 'foo';
   }
   buildCounterGameServerConfig--;
@@ -830,13 +811,13 @@
       o.description!,
       unittest.equals('foo'),
     );
-    checkUnnamed10(o.fleetConfigs!);
-    checkUnnamed11(o.labels!);
+    checkUnnamed9(o.fleetConfigs!);
+    checkUnnamed10(o.labels!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed12(o.scalingConfigs!);
+    checkUnnamed11(o.scalingConfigs!);
     unittest.expect(
       o.updateTime!,
       unittest.equals('foo'),
@@ -869,12 +850,12 @@
   buildCounterGameServerConfigOverride--;
 }
 
-core.Map<core.String, core.String> buildUnnamed13() => {
+core.Map<core.String, core.String> buildUnnamed12() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed13(core.Map<core.String, core.String> o) {
+void checkUnnamed12(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -894,7 +875,7 @@
     o.createTime = 'foo';
     o.description = 'foo';
     o.etag = 'foo';
-    o.labels = buildUnnamed13();
+    o.labels = buildUnnamed12();
     o.name = 'foo';
     o.updateTime = 'foo';
   }
@@ -917,7 +898,7 @@
       o.etag!,
       unittest.equals('foo'),
     );
-    checkUnnamed13(o.labels!);
+    checkUnnamed12(o.labels!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -930,12 +911,12 @@
   buildCounterGameServerDeployment--;
 }
 
-core.List<api.GameServerConfigOverride> buildUnnamed14() => [
+core.List<api.GameServerConfigOverride> buildUnnamed13() => [
       buildGameServerConfigOverride(),
       buildGameServerConfigOverride(),
     ];
 
-void checkUnnamed14(core.List<api.GameServerConfigOverride> o) {
+void checkUnnamed13(core.List<api.GameServerConfigOverride> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGameServerConfigOverride(o[0]);
   checkGameServerConfigOverride(o[1]);
@@ -949,7 +930,7 @@
     o.createTime = 'foo';
     o.defaultGameServerConfig = 'foo';
     o.etag = 'foo';
-    o.gameServerConfigOverrides = buildUnnamed14();
+    o.gameServerConfigOverrides = buildUnnamed13();
     o.name = 'foo';
     o.updateTime = 'foo';
   }
@@ -972,7 +953,7 @@
       o.etag!,
       unittest.equals('foo'),
     );
-    checkUnnamed14(o.gameServerConfigOverrides!);
+    checkUnnamed13(o.gameServerConfigOverrides!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -1054,12 +1035,12 @@
   buildCounterKubernetesClusterState--;
 }
 
-core.Map<core.String, core.String> buildUnnamed15() => {
+core.Map<core.String, core.String> buildUnnamed14() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed15(core.Map<core.String, core.String> o) {
+void checkUnnamed14(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1076,7 +1057,7 @@
   final o = api.LabelSelector();
   buildCounterLabelSelector++;
   if (buildCounterLabelSelector < 3) {
-    o.labels = buildUnnamed15();
+    o.labels = buildUnnamed14();
   }
   buildCounterLabelSelector--;
   return o;
@@ -1085,28 +1066,28 @@
 void checkLabelSelector(api.LabelSelector o) {
   buildCounterLabelSelector++;
   if (buildCounterLabelSelector < 3) {
-    checkUnnamed15(o.labels!);
+    checkUnnamed14(o.labels!);
   }
   buildCounterLabelSelector--;
 }
 
-core.List<api.GameServerCluster> buildUnnamed16() => [
+core.List<api.GameServerCluster> buildUnnamed15() => [
       buildGameServerCluster(),
       buildGameServerCluster(),
     ];
 
-void checkUnnamed16(core.List<api.GameServerCluster> o) {
+void checkUnnamed15(core.List<api.GameServerCluster> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGameServerCluster(o[0]);
   checkGameServerCluster(o[1]);
 }
 
-core.List<core.String> buildUnnamed17() => [
+core.List<core.String> buildUnnamed16() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed17(core.List<core.String> o) {
+void checkUnnamed16(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1123,9 +1104,9 @@
   final o = api.ListGameServerClustersResponse();
   buildCounterListGameServerClustersResponse++;
   if (buildCounterListGameServerClustersResponse < 3) {
-    o.gameServerClusters = buildUnnamed16();
+    o.gameServerClusters = buildUnnamed15();
     o.nextPageToken = 'foo';
-    o.unreachable = buildUnnamed17();
+    o.unreachable = buildUnnamed16();
   }
   buildCounterListGameServerClustersResponse--;
   return o;
@@ -1134,33 +1115,33 @@
 void checkListGameServerClustersResponse(api.ListGameServerClustersResponse o) {
   buildCounterListGameServerClustersResponse++;
   if (buildCounterListGameServerClustersResponse < 3) {
-    checkUnnamed16(o.gameServerClusters!);
+    checkUnnamed15(o.gameServerClusters!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed17(o.unreachable!);
+    checkUnnamed16(o.unreachable!);
   }
   buildCounterListGameServerClustersResponse--;
 }
 
-core.List<api.GameServerConfig> buildUnnamed18() => [
+core.List<api.GameServerConfig> buildUnnamed17() => [
       buildGameServerConfig(),
       buildGameServerConfig(),
     ];
 
-void checkUnnamed18(core.List<api.GameServerConfig> o) {
+void checkUnnamed17(core.List<api.GameServerConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGameServerConfig(o[0]);
   checkGameServerConfig(o[1]);
 }
 
-core.List<core.String> buildUnnamed19() => [
+core.List<core.String> buildUnnamed18() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed19(core.List<core.String> o) {
+void checkUnnamed18(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1177,9 +1158,9 @@
   final o = api.ListGameServerConfigsResponse();
   buildCounterListGameServerConfigsResponse++;
   if (buildCounterListGameServerConfigsResponse < 3) {
-    o.gameServerConfigs = buildUnnamed18();
+    o.gameServerConfigs = buildUnnamed17();
     o.nextPageToken = 'foo';
-    o.unreachable = buildUnnamed19();
+    o.unreachable = buildUnnamed18();
   }
   buildCounterListGameServerConfigsResponse--;
   return o;
@@ -1188,33 +1169,33 @@
 void checkListGameServerConfigsResponse(api.ListGameServerConfigsResponse o) {
   buildCounterListGameServerConfigsResponse++;
   if (buildCounterListGameServerConfigsResponse < 3) {
-    checkUnnamed18(o.gameServerConfigs!);
+    checkUnnamed17(o.gameServerConfigs!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed19(o.unreachable!);
+    checkUnnamed18(o.unreachable!);
   }
   buildCounterListGameServerConfigsResponse--;
 }
 
-core.List<api.GameServerDeployment> buildUnnamed20() => [
+core.List<api.GameServerDeployment> buildUnnamed19() => [
       buildGameServerDeployment(),
       buildGameServerDeployment(),
     ];
 
-void checkUnnamed20(core.List<api.GameServerDeployment> o) {
+void checkUnnamed19(core.List<api.GameServerDeployment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGameServerDeployment(o[0]);
   checkGameServerDeployment(o[1]);
 }
 
-core.List<core.String> buildUnnamed21() => [
+core.List<core.String> buildUnnamed20() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed21(core.List<core.String> o) {
+void checkUnnamed20(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1231,9 +1212,9 @@
   final o = api.ListGameServerDeploymentsResponse();
   buildCounterListGameServerDeploymentsResponse++;
   if (buildCounterListGameServerDeploymentsResponse < 3) {
-    o.gameServerDeployments = buildUnnamed20();
+    o.gameServerDeployments = buildUnnamed19();
     o.nextPageToken = 'foo';
-    o.unreachable = buildUnnamed21();
+    o.unreachable = buildUnnamed20();
   }
   buildCounterListGameServerDeploymentsResponse--;
   return o;
@@ -1243,22 +1224,22 @@
     api.ListGameServerDeploymentsResponse o) {
   buildCounterListGameServerDeploymentsResponse++;
   if (buildCounterListGameServerDeploymentsResponse < 3) {
-    checkUnnamed20(o.gameServerDeployments!);
+    checkUnnamed19(o.gameServerDeployments!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed21(o.unreachable!);
+    checkUnnamed20(o.unreachable!);
   }
   buildCounterListGameServerDeploymentsResponse--;
 }
 
-core.List<api.Location> buildUnnamed22() => [
+core.List<api.Location> buildUnnamed21() => [
       buildLocation(),
       buildLocation(),
     ];
 
-void checkUnnamed22(core.List<api.Location> o) {
+void checkUnnamed21(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -1269,7 +1250,7 @@
   final o = api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed22();
+    o.locations = buildUnnamed21();
     o.nextPageToken = 'foo';
   }
   buildCounterListLocationsResponse--;
@@ -1279,7 +1260,7 @@
 void checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed22(o.locations!);
+    checkUnnamed21(o.locations!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1288,12 +1269,12 @@
   buildCounterListLocationsResponse--;
 }
 
-core.List<api.Operation> buildUnnamed23() => [
+core.List<api.Operation> buildUnnamed22() => [
       buildOperation(),
       buildOperation(),
     ];
 
-void checkUnnamed23(core.List<api.Operation> o) {
+void checkUnnamed22(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -1305,7 +1286,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.operations = buildUnnamed23();
+    o.operations = buildUnnamed22();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -1318,28 +1299,28 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed23(o.operations!);
+    checkUnnamed22(o.operations!);
   }
   buildCounterListOperationsResponse--;
 }
 
-core.List<api.Realm> buildUnnamed24() => [
+core.List<api.Realm> buildUnnamed23() => [
       buildRealm(),
       buildRealm(),
     ];
 
-void checkUnnamed24(core.List<api.Realm> o) {
+void checkUnnamed23(core.List<api.Realm> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRealm(o[0]);
   checkRealm(o[1]);
 }
 
-core.List<core.String> buildUnnamed25() => [
+core.List<core.String> buildUnnamed24() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed25(core.List<core.String> o) {
+void checkUnnamed24(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1357,8 +1338,8 @@
   buildCounterListRealmsResponse++;
   if (buildCounterListRealmsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.realms = buildUnnamed24();
-    o.unreachable = buildUnnamed25();
+    o.realms = buildUnnamed23();
+    o.unreachable = buildUnnamed24();
   }
   buildCounterListRealmsResponse--;
   return o;
@@ -1371,18 +1352,18 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed24(o.realms!);
-    checkUnnamed25(o.unreachable!);
+    checkUnnamed23(o.realms!);
+    checkUnnamed24(o.unreachable!);
   }
   buildCounterListRealmsResponse--;
 }
 
-core.Map<core.String, core.String> buildUnnamed26() => {
+core.Map<core.String, core.String> buildUnnamed25() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed26(core.Map<core.String, core.String> o) {
+void checkUnnamed25(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1394,7 +1375,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed27() => {
+core.Map<core.String, core.Object?> buildUnnamed26() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -1407,7 +1388,7 @@
       },
     };
 
-void checkUnnamed27(core.Map<core.String, core.Object?> o) {
+void checkUnnamed26(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o['x']!) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1445,9 +1426,9 @@
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
     o.displayName = 'foo';
-    o.labels = buildUnnamed26();
+    o.labels = buildUnnamed25();
     o.locationId = 'foo';
-    o.metadata = buildUnnamed27();
+    o.metadata = buildUnnamed26();
     o.name = 'foo';
   }
   buildCounterLocation--;
@@ -1461,12 +1442,12 @@
       o.displayName!,
       unittest.equals('foo'),
     );
-    checkUnnamed26(o.labels!);
+    checkUnnamed25(o.labels!);
     unittest.expect(
       o.locationId!,
       unittest.equals('foo'),
     );
-    checkUnnamed27(o.metadata!);
+    checkUnnamed26(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -1498,7 +1479,7 @@
   buildCounterLogConfig--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed28() => {
+core.Map<core.String, core.Object?> buildUnnamed27() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -1511,7 +1492,7 @@
       },
     };
 
-void checkUnnamed28(core.Map<core.String, core.Object?> o) {
+void checkUnnamed27(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o['x']!) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -1543,7 +1524,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed29() => {
+core.Map<core.String, core.Object?> buildUnnamed28() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -1556,7 +1537,7 @@
       },
     };
 
-void checkUnnamed29(core.Map<core.String, core.Object?> o) {
+void checkUnnamed28(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o['x']!) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1595,9 +1576,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed28();
+    o.metadata = buildUnnamed27();
     o.name = 'foo';
-    o.response = buildUnnamed29();
+    o.response = buildUnnamed28();
   }
   buildCounterOperation--;
   return o;
@@ -1608,44 +1589,44 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done!, unittest.isTrue);
     checkStatus(o.error!);
-    checkUnnamed28(o.metadata!);
+    checkUnnamed27(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed29(o.response!);
+    checkUnnamed28(o.response!);
   }
   buildCounterOperation--;
 }
 
-core.List<api.AuditConfig> buildUnnamed30() => [
+core.List<api.AuditConfig> buildUnnamed29() => [
       buildAuditConfig(),
       buildAuditConfig(),
     ];
 
-void checkUnnamed30(core.List<api.AuditConfig> o) {
+void checkUnnamed29(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-core.List<api.Binding> buildUnnamed31() => [
+core.List<api.Binding> buildUnnamed30() => [
       buildBinding(),
       buildBinding(),
     ];
 
-void checkUnnamed31(core.List<api.Binding> o) {
+void checkUnnamed30(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
 }
 
-core.List<api.Rule> buildUnnamed32() => [
+core.List<api.Rule> buildUnnamed31() => [
       buildRule(),
       buildRule(),
     ];
 
-void checkUnnamed32(core.List<api.Rule> o) {
+void checkUnnamed31(core.List<api.Rule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRule(o[0]);
   checkRule(o[1]);
@@ -1656,10 +1637,10 @@
   final o = api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed30();
-    o.bindings = buildUnnamed31();
+    o.auditConfigs = buildUnnamed29();
+    o.bindings = buildUnnamed30();
     o.etag = 'foo';
-    o.rules = buildUnnamed32();
+    o.rules = buildUnnamed31();
     o.version = 42;
   }
   buildCounterPolicy--;
@@ -1669,13 +1650,13 @@
 void checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed30(o.auditConfigs!);
-    checkUnnamed31(o.bindings!);
+    checkUnnamed29(o.auditConfigs!);
+    checkUnnamed30(o.bindings!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
     );
-    checkUnnamed32(o.rules!);
+    checkUnnamed31(o.rules!);
     unittest.expect(
       o.version!,
       unittest.equals(42),
@@ -1738,12 +1719,12 @@
   buildCounterPreviewDeleteGameServerClusterResponse--;
 }
 
-core.List<core.String> buildUnnamed33() => [
+core.List<core.String> buildUnnamed32() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed33(core.List<core.String> o) {
+void checkUnnamed32(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1763,7 +1744,7 @@
   if (buildCounterPreviewGameServerDeploymentRolloutResponse < 3) {
     o.etag = 'foo';
     o.targetState = buildTargetState();
-    o.unavailable = buildUnnamed33();
+    o.unavailable = buildUnnamed32();
   }
   buildCounterPreviewGameServerDeploymentRolloutResponse--;
   return o;
@@ -1778,7 +1759,7 @@
       unittest.equals('foo'),
     );
     checkTargetState(o.targetState!);
-    checkUnnamed33(o.unavailable!);
+    checkUnnamed32(o.unavailable!);
   }
   buildCounterPreviewGameServerDeploymentRolloutResponse--;
 }
@@ -1833,12 +1814,12 @@
   buildCounterPreviewUpdateGameServerClusterResponse--;
 }
 
-core.Map<core.String, core.String> buildUnnamed34() => {
+core.Map<core.String, core.String> buildUnnamed33() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed34(core.Map<core.String, core.String> o) {
+void checkUnnamed33(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1858,7 +1839,7 @@
     o.createTime = 'foo';
     o.description = 'foo';
     o.etag = 'foo';
-    o.labels = buildUnnamed34();
+    o.labels = buildUnnamed33();
     o.name = 'foo';
     o.timeZone = 'foo';
     o.updateTime = 'foo';
@@ -1882,7 +1863,7 @@
       o.etag!,
       unittest.equals('foo'),
     );
-    checkUnnamed34(o.labels!);
+    checkUnnamed33(o.labels!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -1899,12 +1880,12 @@
   buildCounterRealm--;
 }
 
-core.List<core.String> buildUnnamed35() => [
+core.List<core.String> buildUnnamed34() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed35(core.List<core.String> o) {
+void checkUnnamed34(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1921,7 +1902,7 @@
   final o = api.RealmSelector();
   buildCounterRealmSelector++;
   if (buildCounterRealmSelector < 3) {
-    o.realms = buildUnnamed35();
+    o.realms = buildUnnamed34();
   }
   buildCounterRealmSelector--;
   return o;
@@ -1930,28 +1911,28 @@
 void checkRealmSelector(api.RealmSelector o) {
   buildCounterRealmSelector++;
   if (buildCounterRealmSelector < 3) {
-    checkUnnamed35(o.realms!);
+    checkUnnamed34(o.realms!);
   }
   buildCounterRealmSelector--;
 }
 
-core.List<api.Condition> buildUnnamed36() => [
+core.List<api.Condition> buildUnnamed35() => [
       buildCondition(),
       buildCondition(),
     ];
 
-void checkUnnamed36(core.List<api.Condition> o) {
+void checkUnnamed35(core.List<api.Condition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkCondition(o[0]);
   checkCondition(o[1]);
 }
 
-core.List<core.String> buildUnnamed37() => [
+core.List<core.String> buildUnnamed36() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed37(core.List<core.String> o) {
+void checkUnnamed36(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1963,17 +1944,34 @@
   );
 }
 
-core.List<api.LogConfig> buildUnnamed38() => [
+core.List<api.LogConfig> buildUnnamed37() => [
       buildLogConfig(),
       buildLogConfig(),
     ];
 
-void checkUnnamed38(core.List<api.LogConfig> o) {
+void checkUnnamed37(core.List<api.LogConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLogConfig(o[0]);
   checkLogConfig(o[1]);
 }
 
+core.List<core.String> buildUnnamed38() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed38(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.List<core.String> buildUnnamed39() => [
       'foo',
       'foo',
@@ -1991,35 +1989,18 @@
   );
 }
 
-core.List<core.String> buildUnnamed40() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed40(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.int buildCounterRule = 0;
 api.Rule buildRule() {
   final o = api.Rule();
   buildCounterRule++;
   if (buildCounterRule < 3) {
     o.action = 'foo';
-    o.conditions = buildUnnamed36();
+    o.conditions = buildUnnamed35();
     o.description = 'foo';
-    o.in_ = buildUnnamed37();
-    o.logConfig = buildUnnamed38();
-    o.notIn = buildUnnamed39();
-    o.permissions = buildUnnamed40();
+    o.in_ = buildUnnamed36();
+    o.logConfig = buildUnnamed37();
+    o.notIn = buildUnnamed38();
+    o.permissions = buildUnnamed39();
   }
   buildCounterRule--;
   return o;
@@ -2032,36 +2013,36 @@
       o.action!,
       unittest.equals('foo'),
     );
-    checkUnnamed36(o.conditions!);
+    checkUnnamed35(o.conditions!);
     unittest.expect(
       o.description!,
       unittest.equals('foo'),
     );
-    checkUnnamed37(o.in_!);
-    checkUnnamed38(o.logConfig!);
-    checkUnnamed39(o.notIn!);
-    checkUnnamed40(o.permissions!);
+    checkUnnamed36(o.in_!);
+    checkUnnamed37(o.logConfig!);
+    checkUnnamed38(o.notIn!);
+    checkUnnamed39(o.permissions!);
   }
   buildCounterRule--;
 }
 
-core.List<api.Schedule> buildUnnamed41() => [
+core.List<api.Schedule> buildUnnamed40() => [
       buildSchedule(),
       buildSchedule(),
     ];
 
-void checkUnnamed41(core.List<api.Schedule> o) {
+void checkUnnamed40(core.List<api.Schedule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSchedule(o[0]);
   checkSchedule(o[1]);
 }
 
-core.List<api.LabelSelector> buildUnnamed42() => [
+core.List<api.LabelSelector> buildUnnamed41() => [
       buildLabelSelector(),
       buildLabelSelector(),
     ];
 
-void checkUnnamed42(core.List<api.LabelSelector> o) {
+void checkUnnamed41(core.List<api.LabelSelector> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLabelSelector(o[0]);
   checkLabelSelector(o[1]);
@@ -2074,8 +2055,8 @@
   if (buildCounterScalingConfig < 3) {
     o.fleetAutoscalerSpec = 'foo';
     o.name = 'foo';
-    o.schedules = buildUnnamed41();
-    o.selectors = buildUnnamed42();
+    o.schedules = buildUnnamed40();
+    o.selectors = buildUnnamed41();
   }
   buildCounterScalingConfig--;
   return o;
@@ -2092,8 +2073,8 @@
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed41(o.schedules!);
-    checkUnnamed42(o.selectors!);
+    checkUnnamed40(o.schedules!);
+    checkUnnamed41(o.selectors!);
   }
   buildCounterScalingConfig--;
 }
@@ -2186,7 +2167,7 @@
   buildCounterSpecSource--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed43() => {
+core.Map<core.String, core.Object?> buildUnnamed42() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -2199,7 +2180,7 @@
       },
     };
 
-void checkUnnamed43(core.Map<core.String, core.Object?> o) {
+void checkUnnamed42(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o['x']!) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -2231,15 +2212,15 @@
   );
 }
 
-core.List<core.Map<core.String, core.Object?>> buildUnnamed44() => [
-      buildUnnamed43(),
-      buildUnnamed43(),
+core.List<core.Map<core.String, core.Object?>> buildUnnamed43() => [
+      buildUnnamed42(),
+      buildUnnamed42(),
     ];
 
-void checkUnnamed44(core.List<core.Map<core.String, core.Object?>> o) {
+void checkUnnamed43(core.List<core.Map<core.String, core.Object?>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed43(o[0]);
-  checkUnnamed43(o[1]);
+  checkUnnamed42(o[0]);
+  checkUnnamed42(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -2248,7 +2229,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed44();
+    o.details = buildUnnamed43();
     o.message = 'foo';
   }
   buildCounterStatus--;
@@ -2262,7 +2243,7 @@
       o.code!,
       unittest.equals(42),
     );
-    checkUnnamed44(o.details!);
+    checkUnnamed43(o.details!);
     unittest.expect(
       o.message!,
       unittest.equals('foo'),
@@ -2271,12 +2252,12 @@
   buildCounterStatus--;
 }
 
-core.List<api.TargetFleetDetails> buildUnnamed45() => [
+core.List<api.TargetFleetDetails> buildUnnamed44() => [
       buildTargetFleetDetails(),
       buildTargetFleetDetails(),
     ];
 
-void checkUnnamed45(core.List<api.TargetFleetDetails> o) {
+void checkUnnamed44(core.List<api.TargetFleetDetails> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetFleetDetails(o[0]);
   checkTargetFleetDetails(o[1]);
@@ -2287,7 +2268,7 @@
   final o = api.TargetDetails();
   buildCounterTargetDetails++;
   if (buildCounterTargetDetails < 3) {
-    o.fleetDetails = buildUnnamed45();
+    o.fleetDetails = buildUnnamed44();
     o.gameServerClusterName = 'foo';
     o.gameServerDeploymentName = 'foo';
   }
@@ -2298,7 +2279,7 @@
 void checkTargetDetails(api.TargetDetails o) {
   buildCounterTargetDetails++;
   if (buildCounterTargetDetails < 3) {
-    checkUnnamed45(o.fleetDetails!);
+    checkUnnamed44(o.fleetDetails!);
     unittest.expect(
       o.gameServerClusterName!,
       unittest.equals('foo'),
@@ -2380,12 +2361,12 @@
   buildCounterTargetFleetDetails--;
 }
 
-core.List<api.TargetDetails> buildUnnamed46() => [
+core.List<api.TargetDetails> buildUnnamed45() => [
       buildTargetDetails(),
       buildTargetDetails(),
     ];
 
-void checkUnnamed46(core.List<api.TargetDetails> o) {
+void checkUnnamed45(core.List<api.TargetDetails> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTargetDetails(o[0]);
   checkTargetDetails(o[1]);
@@ -2396,7 +2377,7 @@
   final o = api.TargetState();
   buildCounterTargetState++;
   if (buildCounterTargetState < 3) {
-    o.details = buildUnnamed46();
+    o.details = buildUnnamed45();
   }
   buildCounterTargetState--;
   return o;
@@ -2405,11 +2386,47 @@
 void checkTargetState(api.TargetState o) {
   buildCounterTargetState++;
   if (buildCounterTargetState < 3) {
-    checkUnnamed46(o.details!);
+    checkUnnamed45(o.details!);
   }
   buildCounterTargetState--;
 }
 
+core.List<core.String> buildUnnamed46() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed46(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterTestIamPermissionsRequest = 0;
+api.TestIamPermissionsRequest buildTestIamPermissionsRequest() {
+  final o = api.TestIamPermissionsRequest();
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    o.permissions = buildUnnamed46();
+  }
+  buildCounterTestIamPermissionsRequest--;
+  return o;
+}
+
+void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    checkUnnamed46(o.permissions!);
+  }
+  buildCounterTestIamPermissionsRequest--;
+}
+
 core.List<core.String> buildUnnamed47() => [
       'foo',
       'foo',
@@ -2427,48 +2444,12 @@
   );
 }
 
-core.int buildCounterTestIamPermissionsRequest = 0;
-api.TestIamPermissionsRequest buildTestIamPermissionsRequest() {
-  final o = api.TestIamPermissionsRequest();
-  buildCounterTestIamPermissionsRequest++;
-  if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed47();
-  }
-  buildCounterTestIamPermissionsRequest--;
-  return o;
-}
-
-void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
-  buildCounterTestIamPermissionsRequest++;
-  if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed47(o.permissions!);
-  }
-  buildCounterTestIamPermissionsRequest--;
-}
-
-core.List<core.String> buildUnnamed48() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed48(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.int buildCounterTestIamPermissionsResponse = 0;
 api.TestIamPermissionsResponse buildTestIamPermissionsResponse() {
   final o = api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed48();
+    o.permissions = buildUnnamed47();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -2477,7 +2458,7 @@
 void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed48(o.permissions!);
+    checkUnnamed47(o.permissions!);
   }
   buildCounterTestIamPermissionsResponse--;
 }
diff --git a/generated/googleapis/test/gkehub/v1_test.dart b/generated/googleapis/test/gkehub/v1_test.dart
index 3d2d028..34e72ef 100644
--- a/generated/googleapis/test/gkehub/v1_test.dart
+++ b/generated/googleapis/test/gkehub/v1_test.dart
@@ -1036,6 +1036,28 @@
   buildCounterConnectAgentResource--;
 }
 
+core.int buildCounterEdgeCluster = 0;
+api.EdgeCluster buildEdgeCluster() {
+  final o = api.EdgeCluster();
+  buildCounterEdgeCluster++;
+  if (buildCounterEdgeCluster < 3) {
+    o.resourceLink = 'foo';
+  }
+  buildCounterEdgeCluster--;
+  return o;
+}
+
+void checkEdgeCluster(api.EdgeCluster o) {
+  buildCounterEdgeCluster++;
+  if (buildCounterEdgeCluster < 3) {
+    unittest.expect(
+      o.resourceLink!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterEdgeCluster--;
+}
+
 core.int buildCounterEmpty = 0;
 api.Empty buildEmpty() {
   final o = api.Empty();
@@ -1811,6 +1833,7 @@
   final o = api.MembershipEndpoint();
   buildCounterMembershipEndpoint++;
   if (buildCounterMembershipEndpoint < 3) {
+    o.edgeCluster = buildEdgeCluster();
     o.gkeCluster = buildGkeCluster();
     o.kubernetesMetadata = buildKubernetesMetadata();
     o.kubernetesResource = buildKubernetesResource();
@@ -1824,6 +1847,7 @@
 void checkMembershipEndpoint(api.MembershipEndpoint o) {
   buildCounterMembershipEndpoint++;
   if (buildCounterMembershipEndpoint < 3) {
+    checkEdgeCluster(o.edgeCluster!);
     checkGkeCluster(o.gkeCluster!);
     checkKubernetesMetadata(o.kubernetesMetadata!);
     checkKubernetesResource(o.kubernetesResource!);
@@ -2658,6 +2682,16 @@
     });
   });
 
+  unittest.group('obj-schema-EdgeCluster', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildEdgeCluster();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.EdgeCluster.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkEdgeCluster(od);
+    });
+  });
+
   unittest.group('obj-schema-Empty', () {
     unittest.test('to-json--from-json', () async {
       final o = buildEmpty();
diff --git a/generated/googleapis/test/iam/v1_test.dart b/generated/googleapis/test/iam/v1_test.dart
index 9622f40..2e2842d 100644
--- a/generated/googleapis/test/iam/v1_test.dart
+++ b/generated/googleapis/test/iam/v1_test.dart
@@ -3798,6 +3798,68 @@
   });
 
   unittest.group(
+      'resource-ProjectsLocationsWorkloadIdentityPoolsProvidersKeysOperationsResource',
+      () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.IamApi(mock)
+          .projects
+          .locations
+          .workloadIdentityPools
+          .providers
+          .keys
+          .operations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group(
       'resource-ProjectsLocationsWorkloadIdentityPoolsProvidersOperationsResource',
       () {
     unittest.test('method--get', () async {
diff --git a/generated/googleapis/test/logging/v2_test.dart b/generated/googleapis/test/logging/v2_test.dart
index 815bd68..8f16149 100644
--- a/generated/googleapis/test/logging/v2_test.dart
+++ b/generated/googleapis/test/logging/v2_test.dart
@@ -1105,6 +1105,7 @@
     o.severity = 'foo';
     o.sourceLocation = buildLogEntrySourceLocation();
     o.spanId = 'foo';
+    o.split = buildLogSplit();
     o.textPayload = 'foo';
     o.timestamp = 'foo';
     o.trace = 'foo';
@@ -1145,6 +1146,7 @@
       o.spanId!,
       unittest.equals('foo'),
     );
+    checkLogSplit(o.split!);
     unittest.expect(
       o.textPayload!,
       unittest.equals('foo'),
@@ -1422,6 +1424,38 @@
   buildCounterLogSink--;
 }
 
+core.int buildCounterLogSplit = 0;
+api.LogSplit buildLogSplit() {
+  final o = api.LogSplit();
+  buildCounterLogSplit++;
+  if (buildCounterLogSplit < 3) {
+    o.index = 42;
+    o.totalSplits = 42;
+    o.uid = 'foo';
+  }
+  buildCounterLogSplit--;
+  return o;
+}
+
+void checkLogSplit(api.LogSplit o) {
+  buildCounterLogSplit++;
+  if (buildCounterLogSplit < 3) {
+    unittest.expect(
+      o.index!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.totalSplits!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.uid!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterLogSplit--;
+}
+
 core.int buildCounterLogView = 0;
 api.LogView buildLogView() {
   final o = api.LogView();
@@ -1886,6 +1920,35 @@
   buildCounterOperation--;
 }
 
+core.int buildCounterSettings = 0;
+api.Settings buildSettings() {
+  final o = api.Settings();
+  buildCounterSettings++;
+  if (buildCounterSettings < 3) {
+    o.disableDefaultSink = true;
+    o.name = 'foo';
+    o.storageLocation = 'foo';
+  }
+  buildCounterSettings--;
+  return o;
+}
+
+void checkSettings(api.Settings o) {
+  buildCounterSettings++;
+  if (buildCounterSettings < 3) {
+    unittest.expect(o.disableDefaultSink!, unittest.isTrue);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.storageLocation!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterSettings--;
+}
+
 core.Map<core.String, core.Object?> buildUnnamed29() => {
       'x': {
         'list': [1, 2, 3],
@@ -2563,6 +2626,16 @@
     });
   });
 
+  unittest.group('obj-schema-LogSplit', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildLogSplit();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.LogSplit.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkLogSplit(od);
+    });
+  });
+
   unittest.group('obj-schema-LogView', () {
     unittest.test('to-json--from-json', () async {
       final o = buildLogView();
@@ -2633,6 +2706,16 @@
     });
   });
 
+  unittest.group('obj-schema-Settings', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSettings();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Settings.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkSettings(od);
+    });
+  });
+
   unittest.group('obj-schema-Status', () {
     unittest.test('to-json--from-json', () async {
       final o = buildStatus();
@@ -2756,6 +2839,58 @@
           await res.getCmekSettings(arg_name, $fields: arg_$fields);
       checkCmekSettings(response as api.CmekSettings);
     });
+
+    unittest.test('method--getSettings', () async {
+      final mock = HttpServerMock();
+      final res = api.LoggingApi(mock).billingAccounts;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getSettings(arg_name, $fields: arg_$fields);
+      checkSettings(response as api.Settings);
+    });
   });
 
   unittest.group('resource-BillingAccountsBucketsResource', () {
@@ -5082,6 +5217,121 @@
           await res.getCmekSettings(arg_name, $fields: arg_$fields);
       checkCmekSettings(response as api.CmekSettings);
     });
+
+    unittest.test('method--getSettings', () async {
+      final mock = HttpServerMock();
+      final res = api.LoggingApi(mock).folders;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getSettings(arg_name, $fields: arg_$fields);
+      checkSettings(response as api.Settings);
+    });
+
+    unittest.test('method--updateSettings', () async {
+      final mock = HttpServerMock();
+      final res = api.LoggingApi(mock).folders;
+      final arg_request = buildSettings();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Settings.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkSettings(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.updateSettings(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkSettings(response as api.Settings);
+    });
   });
 
   unittest.group('resource-FoldersExclusionsResource', () {
@@ -8041,6 +8291,58 @@
       checkCmekSettings(response as api.CmekSettings);
     });
 
+    unittest.test('method--getSettings', () async {
+      final mock = HttpServerMock();
+      final res = api.LoggingApi(mock).organizations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getSettings(arg_name, $fields: arg_$fields);
+      checkSettings(response as api.Settings);
+    });
+
     unittest.test('method--updateCmekSettings', () async {
       final mock = HttpServerMock();
       final res = api.LoggingApi(mock).organizations;
@@ -8103,6 +8405,69 @@
           updateMask: arg_updateMask, $fields: arg_$fields);
       checkCmekSettings(response as api.CmekSettings);
     });
+
+    unittest.test('method--updateSettings', () async {
+      final mock = HttpServerMock();
+      final res = api.LoggingApi(mock).organizations;
+      final arg_request = buildSettings();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Settings.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkSettings(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.updateSettings(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkSettings(response as api.Settings);
+    });
   });
 
   unittest.group('resource-OrganizationsExclusionsResource', () {
@@ -9909,6 +10274,58 @@
           await res.getCmekSettings(arg_name, $fields: arg_$fields);
       checkCmekSettings(response as api.CmekSettings);
     });
+
+    unittest.test('method--getSettings', () async {
+      final mock = HttpServerMock();
+      final res = api.LoggingApi(mock).projects;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getSettings(arg_name, $fields: arg_$fields);
+      checkSettings(response as api.Settings);
+    });
   });
 
   unittest.group('resource-ProjectsExclusionsResource', () {
@@ -12307,6 +12724,58 @@
       checkCmekSettings(response as api.CmekSettings);
     });
 
+    unittest.test('method--getSettings', () async {
+      final mock = HttpServerMock();
+      final res = api.LoggingApi(mock).v2;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getSettings(arg_name, $fields: arg_$fields);
+      checkSettings(response as api.Settings);
+    });
+
     unittest.test('method--updateCmekSettings', () async {
       final mock = HttpServerMock();
       final res = api.LoggingApi(mock).v2;
@@ -12369,5 +12838,68 @@
           updateMask: arg_updateMask, $fields: arg_$fields);
       checkCmekSettings(response as api.CmekSettings);
     });
+
+    unittest.test('method--updateSettings', () async {
+      final mock = HttpServerMock();
+      final res = api.LoggingApi(mock).v2;
+      final arg_request = buildSettings();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Settings.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkSettings(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.updateSettings(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkSettings(response as api.Settings);
+    });
   });
 }
diff --git a/generated/googleapis/test/monitoring/v3_test.dart b/generated/googleapis/test/monitoring/v3_test.dart
index 4cadc02..614336d 100644
--- a/generated/googleapis/test/monitoring/v3_test.dart
+++ b/generated/googleapis/test/monitoring/v3_test.dart
@@ -2295,6 +2295,7 @@
     o.denominatorAggregations = buildUnnamed39();
     o.denominatorFilter = 'foo';
     o.duration = 'foo';
+    o.evaluationMissingData = 'foo';
     o.filter = 'foo';
     o.thresholdValue = 42.0;
     o.trigger = buildTrigger();
@@ -2321,6 +2322,10 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.evaluationMissingData!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.filter!,
       unittest.equals('foo'),
     );
@@ -2518,6 +2523,7 @@
   buildCounterMonitoringQueryLanguageCondition++;
   if (buildCounterMonitoringQueryLanguageCondition < 3) {
     o.duration = 'foo';
+    o.evaluationMissingData = 'foo';
     o.query = 'foo';
     o.trigger = buildTrigger();
   }
@@ -2534,6 +2540,10 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.evaluationMissingData!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.query!,
       unittest.equals('foo'),
     );
diff --git a/generated/googleapis/test/mybusinessbusinesscalls/v1_test.dart b/generated/googleapis/test/mybusinessbusinesscalls/v1_test.dart
new file mode 100644
index 0000000..a443572
--- /dev/null
+++ b/generated/googleapis/test/mybusinessbusinesscalls/v1_test.dart
@@ -0,0 +1,534 @@
+// ignore_for_file: camel_case_types
+// ignore_for_file: cascade_invocations
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_const_declarations
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_final_locals
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_cast
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: unnecessary_string_interpolations
+// ignore_for_file: unused_local_variable
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:googleapis/mybusinessbusinesscalls/v1.dart' as api;
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import '../test_shared.dart';
+
+core.List<api.HourlyMetrics> buildUnnamed0() => [
+      buildHourlyMetrics(),
+      buildHourlyMetrics(),
+    ];
+
+void checkUnnamed0(core.List<api.HourlyMetrics> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkHourlyMetrics(o[0]);
+  checkHourlyMetrics(o[1]);
+}
+
+core.List<api.WeekDayMetrics> buildUnnamed1() => [
+      buildWeekDayMetrics(),
+      buildWeekDayMetrics(),
+    ];
+
+void checkUnnamed1(core.List<api.WeekDayMetrics> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkWeekDayMetrics(o[0]);
+  checkWeekDayMetrics(o[1]);
+}
+
+core.int buildCounterAggregateMetrics = 0;
+api.AggregateMetrics buildAggregateMetrics() {
+  final o = api.AggregateMetrics();
+  buildCounterAggregateMetrics++;
+  if (buildCounterAggregateMetrics < 3) {
+    o.answeredCallsCount = 42;
+    o.endDate = buildDate();
+    o.hourlyMetrics = buildUnnamed0();
+    o.missedCallsCount = 42;
+    o.startDate = buildDate();
+    o.weekdayMetrics = buildUnnamed1();
+  }
+  buildCounterAggregateMetrics--;
+  return o;
+}
+
+void checkAggregateMetrics(api.AggregateMetrics o) {
+  buildCounterAggregateMetrics++;
+  if (buildCounterAggregateMetrics < 3) {
+    unittest.expect(
+      o.answeredCallsCount!,
+      unittest.equals(42),
+    );
+    checkDate(o.endDate!);
+    checkUnnamed0(o.hourlyMetrics!);
+    unittest.expect(
+      o.missedCallsCount!,
+      unittest.equals(42),
+    );
+    checkDate(o.startDate!);
+    checkUnnamed1(o.weekdayMetrics!);
+  }
+  buildCounterAggregateMetrics--;
+}
+
+core.int buildCounterBusinessCallsInsights = 0;
+api.BusinessCallsInsights buildBusinessCallsInsights() {
+  final o = api.BusinessCallsInsights();
+  buildCounterBusinessCallsInsights++;
+  if (buildCounterBusinessCallsInsights < 3) {
+    o.aggregateMetrics = buildAggregateMetrics();
+    o.metricType = 'foo';
+    o.name = 'foo';
+  }
+  buildCounterBusinessCallsInsights--;
+  return o;
+}
+
+void checkBusinessCallsInsights(api.BusinessCallsInsights o) {
+  buildCounterBusinessCallsInsights++;
+  if (buildCounterBusinessCallsInsights < 3) {
+    checkAggregateMetrics(o.aggregateMetrics!);
+    unittest.expect(
+      o.metricType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterBusinessCallsInsights--;
+}
+
+core.int buildCounterBusinessCallsSettings = 0;
+api.BusinessCallsSettings buildBusinessCallsSettings() {
+  final o = api.BusinessCallsSettings();
+  buildCounterBusinessCallsSettings++;
+  if (buildCounterBusinessCallsSettings < 3) {
+    o.callsState = 'foo';
+    o.consentTime = 'foo';
+    o.name = 'foo';
+  }
+  buildCounterBusinessCallsSettings--;
+  return o;
+}
+
+void checkBusinessCallsSettings(api.BusinessCallsSettings o) {
+  buildCounterBusinessCallsSettings++;
+  if (buildCounterBusinessCallsSettings < 3) {
+    unittest.expect(
+      o.callsState!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.consentTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterBusinessCallsSettings--;
+}
+
+core.int buildCounterDate = 0;
+api.Date buildDate() {
+  final o = api.Date();
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    o.day = 42;
+    o.month = 42;
+    o.year = 42;
+  }
+  buildCounterDate--;
+  return o;
+}
+
+void checkDate(api.Date o) {
+  buildCounterDate++;
+  if (buildCounterDate < 3) {
+    unittest.expect(
+      o.day!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.month!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.year!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterDate--;
+}
+
+core.int buildCounterHourlyMetrics = 0;
+api.HourlyMetrics buildHourlyMetrics() {
+  final o = api.HourlyMetrics();
+  buildCounterHourlyMetrics++;
+  if (buildCounterHourlyMetrics < 3) {
+    o.hour = 42;
+    o.missedCallsCount = 42;
+  }
+  buildCounterHourlyMetrics--;
+  return o;
+}
+
+void checkHourlyMetrics(api.HourlyMetrics o) {
+  buildCounterHourlyMetrics++;
+  if (buildCounterHourlyMetrics < 3) {
+    unittest.expect(
+      o.hour!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.missedCallsCount!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterHourlyMetrics--;
+}
+
+core.List<api.BusinessCallsInsights> buildUnnamed2() => [
+      buildBusinessCallsInsights(),
+      buildBusinessCallsInsights(),
+    ];
+
+void checkUnnamed2(core.List<api.BusinessCallsInsights> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBusinessCallsInsights(o[0]);
+  checkBusinessCallsInsights(o[1]);
+}
+
+core.int buildCounterListBusinessCallsInsightsResponse = 0;
+api.ListBusinessCallsInsightsResponse buildListBusinessCallsInsightsResponse() {
+  final o = api.ListBusinessCallsInsightsResponse();
+  buildCounterListBusinessCallsInsightsResponse++;
+  if (buildCounterListBusinessCallsInsightsResponse < 3) {
+    o.businessCallsInsights = buildUnnamed2();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterListBusinessCallsInsightsResponse--;
+  return o;
+}
+
+void checkListBusinessCallsInsightsResponse(
+    api.ListBusinessCallsInsightsResponse o) {
+  buildCounterListBusinessCallsInsightsResponse++;
+  if (buildCounterListBusinessCallsInsightsResponse < 3) {
+    checkUnnamed2(o.businessCallsInsights!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterListBusinessCallsInsightsResponse--;
+}
+
+core.int buildCounterWeekDayMetrics = 0;
+api.WeekDayMetrics buildWeekDayMetrics() {
+  final o = api.WeekDayMetrics();
+  buildCounterWeekDayMetrics++;
+  if (buildCounterWeekDayMetrics < 3) {
+    o.day = 'foo';
+    o.missedCallsCount = 42;
+  }
+  buildCounterWeekDayMetrics--;
+  return o;
+}
+
+void checkWeekDayMetrics(api.WeekDayMetrics o) {
+  buildCounterWeekDayMetrics++;
+  if (buildCounterWeekDayMetrics < 3) {
+    unittest.expect(
+      o.day!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.missedCallsCount!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterWeekDayMetrics--;
+}
+
+void main() {
+  unittest.group('obj-schema-AggregateMetrics', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAggregateMetrics();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AggregateMetrics.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAggregateMetrics(od);
+    });
+  });
+
+  unittest.group('obj-schema-BusinessCallsInsights', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildBusinessCallsInsights();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.BusinessCallsInsights.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkBusinessCallsInsights(od);
+    });
+  });
+
+  unittest.group('obj-schema-BusinessCallsSettings', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildBusinessCallsSettings();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.BusinessCallsSettings.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkBusinessCallsSettings(od);
+    });
+  });
+
+  unittest.group('obj-schema-Date', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildDate();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Date.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkDate(od);
+    });
+  });
+
+  unittest.group('obj-schema-HourlyMetrics', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildHourlyMetrics();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.HourlyMetrics.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkHourlyMetrics(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListBusinessCallsInsightsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListBusinessCallsInsightsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListBusinessCallsInsightsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListBusinessCallsInsightsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-WeekDayMetrics', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildWeekDayMetrics();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.WeekDayMetrics.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkWeekDayMetrics(od);
+    });
+  });
+
+  unittest.group('resource-LocationsResource', () {
+    unittest.test('method--getBusinesscallssettings', () async {
+      final mock = HttpServerMock();
+      final res = api.MyBusinessBusinessCallsApi(mock).locations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildBusinessCallsSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.getBusinesscallssettings(arg_name, $fields: arg_$fields);
+      checkBusinessCallsSettings(response as api.BusinessCallsSettings);
+    });
+
+    unittest.test('method--updateBusinesscallssettings', () async {
+      final mock = HttpServerMock();
+      final res = api.MyBusinessBusinessCallsApi(mock).locations;
+      final arg_request = buildBusinessCallsSettings();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.BusinessCallsSettings.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkBusinessCallsSettings(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildBusinessCallsSettings());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.updateBusinesscallssettings(
+          arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkBusinessCallsSettings(response as api.BusinessCallsSettings);
+    });
+  });
+
+  unittest.group('resource-LocationsBusinesscallsinsightsResource', () {
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.MyBusinessBusinessCallsApi(mock).locations.businesscallsinsights;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildListBusinessCallsInsightsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListBusinessCallsInsightsResponse(
+          response as api.ListBusinessCallsInsightsResponse);
+    });
+  });
+}
diff --git a/generated/googleapis/test/notebooks/v1_test.dart b/generated/googleapis/test/notebooks/v1_test.dart
index 9140756..d003f23 100644
--- a/generated/googleapis/test/notebooks/v1_test.dart
+++ b/generated/googleapis/test/notebooks/v1_test.dart
@@ -336,11 +336,29 @@
   buildCounterEnvironment--;
 }
 
+core.Map<core.String, core.String> buildUnnamed3() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed3(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterEvent = 0;
 api.Event buildEvent() {
   final o = api.Event();
   buildCounterEvent++;
   if (buildCounterEvent < 3) {
+    o.details = buildUnnamed3();
     o.reportTime = 'foo';
     o.type = 'foo';
   }
@@ -351,6 +369,7 @@
 void checkEvent(api.Event o) {
   buildCounterEvent++;
   if (buildCounterEvent < 3) {
+    checkUnnamed3(o.details!);
     unittest.expect(
       o.reportTime!,
       unittest.equals('foo'),
@@ -422,12 +441,12 @@
   buildCounterExecution--;
 }
 
-core.Map<core.String, core.String> buildUnnamed3() => {
+core.Map<core.String, core.String> buildUnnamed4() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed3(core.Map<core.String, core.String> o) {
+void checkUnnamed4(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -450,7 +469,7 @@
     o.inputNotebookFile = 'foo';
     o.jobType = 'foo';
     o.kernelSpec = 'foo';
-    o.labels = buildUnnamed3();
+    o.labels = buildUnnamed4();
     o.masterType = 'foo';
     o.outputNotebookFolder = 'foo';
     o.parameters = 'foo';
@@ -484,7 +503,7 @@
       o.kernelSpec!,
       unittest.equals('foo'),
     );
-    checkUnnamed3(o.labels!);
+    checkUnnamed4(o.labels!);
     unittest.expect(
       o.masterType!,
       unittest.equals('foo'),
@@ -551,12 +570,12 @@
   buildCounterExpr--;
 }
 
-core.Map<core.String, core.String> buildUnnamed4() => {
+core.Map<core.String, core.String> buildUnnamed5() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed4(core.Map<core.String, core.String> o) {
+void checkUnnamed5(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -573,7 +592,7 @@
   final o = api.GetInstanceHealthResponse();
   buildCounterGetInstanceHealthResponse++;
   if (buildCounterGetInstanceHealthResponse < 3) {
-    o.healthInfo = buildUnnamed4();
+    o.healthInfo = buildUnnamed5();
     o.healthState = 'foo';
   }
   buildCounterGetInstanceHealthResponse--;
@@ -583,7 +602,7 @@
 void checkGetInstanceHealthResponse(api.GetInstanceHealthResponse o) {
   buildCounterGetInstanceHealthResponse++;
   if (buildCounterGetInstanceHealthResponse < 3) {
-    checkUnnamed4(o.healthInfo!);
+    checkUnnamed5(o.healthInfo!);
     unittest.expect(
       o.healthState!,
       unittest.equals('foo'),
@@ -614,23 +633,23 @@
   buildCounterGuestOsFeature--;
 }
 
-core.List<api.Disk> buildUnnamed5() => [
+core.List<api.Disk> buildUnnamed6() => [
       buildDisk(),
       buildDisk(),
     ];
 
-void checkUnnamed5(core.List<api.Disk> o) {
+void checkUnnamed6(core.List<api.Disk> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDisk(o[0]);
   checkDisk(o[1]);
 }
 
-core.List<core.String> buildUnnamed6() => [
+core.List<core.String> buildUnnamed7() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed6(core.List<core.String> o) {
+void checkUnnamed7(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -642,23 +661,6 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed7() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
-
-void checkUnnamed7(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o['x']!,
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o['y']!,
-    unittest.equals('foo'),
-  );
-}
-
 core.Map<core.String, core.String> buildUnnamed8() => {
       'x': 'foo',
       'y': 'foo',
@@ -676,19 +678,19 @@
   );
 }
 
-core.List<core.String> buildUnnamed9() => [
-      'foo',
-      'foo',
-    ];
+core.Map<core.String, core.String> buildUnnamed9() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
 
-void checkUnnamed9(core.List<core.String> o) {
+void checkUnnamed9(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
-    o[0],
+    o['x']!,
     unittest.equals('foo'),
   );
   unittest.expect(
-    o[1],
+    o['y']!,
     unittest.equals('foo'),
   );
 }
@@ -710,12 +712,29 @@
   );
 }
 
-core.List<api.UpgradeHistoryEntry> buildUnnamed11() => [
+core.List<core.String> buildUnnamed11() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed11(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<api.UpgradeHistoryEntry> buildUnnamed12() => [
       buildUpgradeHistoryEntry(),
       buildUpgradeHistoryEntry(),
     ];
 
-void checkUnnamed11(core.List<api.UpgradeHistoryEntry> o) {
+void checkUnnamed12(core.List<api.UpgradeHistoryEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUpgradeHistoryEntry(o[0]);
   checkUpgradeHistoryEntry(o[1]);
@@ -731,17 +750,18 @@
     o.bootDiskType = 'foo';
     o.containerImage = buildContainerImage();
     o.createTime = 'foo';
+    o.creator = 'foo';
     o.customGpuDriverPath = 'foo';
     o.dataDiskSizeGb = 'foo';
     o.dataDiskType = 'foo';
     o.diskEncryption = 'foo';
-    o.disks = buildUnnamed5();
+    o.disks = buildUnnamed6();
     o.installGpuDriver = true;
-    o.instanceOwners = buildUnnamed6();
+    o.instanceOwners = buildUnnamed7();
     o.kmsKey = 'foo';
-    o.labels = buildUnnamed7();
+    o.labels = buildUnnamed8();
     o.machineType = 'foo';
-    o.metadata = buildUnnamed8();
+    o.metadata = buildUnnamed9();
     o.name = 'foo';
     o.network = 'foo';
     o.nicType = 'foo';
@@ -752,13 +772,13 @@
     o.proxyUri = 'foo';
     o.reservationAffinity = buildReservationAffinity();
     o.serviceAccount = 'foo';
-    o.serviceAccountScopes = buildUnnamed9();
+    o.serviceAccountScopes = buildUnnamed10();
     o.shieldedInstanceConfig = buildShieldedInstanceConfig();
     o.state = 'foo';
     o.subnet = 'foo';
-    o.tags = buildUnnamed10();
+    o.tags = buildUnnamed11();
     o.updateTime = 'foo';
-    o.upgradeHistory = buildUnnamed11();
+    o.upgradeHistory = buildUnnamed12();
     o.vmImage = buildVmImage();
   }
   buildCounterInstance--;
@@ -783,6 +803,10 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.creator!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.customGpuDriverPath!,
       unittest.equals('foo'),
     );
@@ -798,19 +822,19 @@
       o.diskEncryption!,
       unittest.equals('foo'),
     );
-    checkUnnamed5(o.disks!);
+    checkUnnamed6(o.disks!);
     unittest.expect(o.installGpuDriver!, unittest.isTrue);
-    checkUnnamed6(o.instanceOwners!);
+    checkUnnamed7(o.instanceOwners!);
     unittest.expect(
       o.kmsKey!,
       unittest.equals('foo'),
     );
-    checkUnnamed7(o.labels!);
+    checkUnnamed8(o.labels!);
     unittest.expect(
       o.machineType!,
       unittest.equals('foo'),
     );
-    checkUnnamed8(o.metadata!);
+    checkUnnamed9(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -839,7 +863,7 @@
       o.serviceAccount!,
       unittest.equals('foo'),
     );
-    checkUnnamed9(o.serviceAccountScopes!);
+    checkUnnamed10(o.serviceAccountScopes!);
     checkShieldedInstanceConfig(o.shieldedInstanceConfig!);
     unittest.expect(
       o.state!,
@@ -849,12 +873,12 @@
       o.subnet!,
       unittest.equals('foo'),
     );
-    checkUnnamed10(o.tags!);
+    checkUnnamed11(o.tags!);
     unittest.expect(
       o.updateTime!,
       unittest.equals('foo'),
     );
-    checkUnnamed11(o.upgradeHistory!);
+    checkUnnamed12(o.upgradeHistory!);
     checkVmImage(o.vmImage!);
   }
   buildCounterInstance--;
@@ -918,23 +942,23 @@
   buildCounterIsInstanceUpgradeableResponse--;
 }
 
-core.List<api.Environment> buildUnnamed12() => [
+core.List<api.Environment> buildUnnamed13() => [
       buildEnvironment(),
       buildEnvironment(),
     ];
 
-void checkUnnamed12(core.List<api.Environment> o) {
+void checkUnnamed13(core.List<api.Environment> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkEnvironment(o[0]);
   checkEnvironment(o[1]);
 }
 
-core.List<core.String> buildUnnamed13() => [
+core.List<core.String> buildUnnamed14() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed13(core.List<core.String> o) {
+void checkUnnamed14(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -951,9 +975,9 @@
   final o = api.ListEnvironmentsResponse();
   buildCounterListEnvironmentsResponse++;
   if (buildCounterListEnvironmentsResponse < 3) {
-    o.environments = buildUnnamed12();
+    o.environments = buildUnnamed13();
     o.nextPageToken = 'foo';
-    o.unreachable = buildUnnamed13();
+    o.unreachable = buildUnnamed14();
   }
   buildCounterListEnvironmentsResponse--;
   return o;
@@ -962,33 +986,33 @@
 void checkListEnvironmentsResponse(api.ListEnvironmentsResponse o) {
   buildCounterListEnvironmentsResponse++;
   if (buildCounterListEnvironmentsResponse < 3) {
-    checkUnnamed12(o.environments!);
+    checkUnnamed13(o.environments!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed13(o.unreachable!);
+    checkUnnamed14(o.unreachable!);
   }
   buildCounterListEnvironmentsResponse--;
 }
 
-core.List<api.Execution> buildUnnamed14() => [
+core.List<api.Execution> buildUnnamed15() => [
       buildExecution(),
       buildExecution(),
     ];
 
-void checkUnnamed14(core.List<api.Execution> o) {
+void checkUnnamed15(core.List<api.Execution> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExecution(o[0]);
   checkExecution(o[1]);
 }
 
-core.List<core.String> buildUnnamed15() => [
+core.List<core.String> buildUnnamed16() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed15(core.List<core.String> o) {
+void checkUnnamed16(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1005,9 +1029,9 @@
   final o = api.ListExecutionsResponse();
   buildCounterListExecutionsResponse++;
   if (buildCounterListExecutionsResponse < 3) {
-    o.executions = buildUnnamed14();
+    o.executions = buildUnnamed15();
     o.nextPageToken = 'foo';
-    o.unreachable = buildUnnamed15();
+    o.unreachable = buildUnnamed16();
   }
   buildCounterListExecutionsResponse--;
   return o;
@@ -1016,33 +1040,33 @@
 void checkListExecutionsResponse(api.ListExecutionsResponse o) {
   buildCounterListExecutionsResponse++;
   if (buildCounterListExecutionsResponse < 3) {
-    checkUnnamed14(o.executions!);
+    checkUnnamed15(o.executions!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed15(o.unreachable!);
+    checkUnnamed16(o.unreachable!);
   }
   buildCounterListExecutionsResponse--;
 }
 
-core.List<api.Instance> buildUnnamed16() => [
+core.List<api.Instance> buildUnnamed17() => [
       buildInstance(),
       buildInstance(),
     ];
 
-void checkUnnamed16(core.List<api.Instance> o) {
+void checkUnnamed17(core.List<api.Instance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkInstance(o[0]);
   checkInstance(o[1]);
 }
 
-core.List<core.String> buildUnnamed17() => [
+core.List<core.String> buildUnnamed18() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed17(core.List<core.String> o) {
+void checkUnnamed18(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1059,9 +1083,9 @@
   final o = api.ListInstancesResponse();
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    o.instances = buildUnnamed16();
+    o.instances = buildUnnamed17();
     o.nextPageToken = 'foo';
-    o.unreachable = buildUnnamed17();
+    o.unreachable = buildUnnamed18();
   }
   buildCounterListInstancesResponse--;
   return o;
@@ -1070,22 +1094,22 @@
 void checkListInstancesResponse(api.ListInstancesResponse o) {
   buildCounterListInstancesResponse++;
   if (buildCounterListInstancesResponse < 3) {
-    checkUnnamed16(o.instances!);
+    checkUnnamed17(o.instances!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed17(o.unreachable!);
+    checkUnnamed18(o.unreachable!);
   }
   buildCounterListInstancesResponse--;
 }
 
-core.List<api.Location> buildUnnamed18() => [
+core.List<api.Location> buildUnnamed19() => [
       buildLocation(),
       buildLocation(),
     ];
 
-void checkUnnamed18(core.List<api.Location> o) {
+void checkUnnamed19(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -1096,7 +1120,7 @@
   final o = api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed18();
+    o.locations = buildUnnamed19();
     o.nextPageToken = 'foo';
   }
   buildCounterListLocationsResponse--;
@@ -1106,7 +1130,7 @@
 void checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed18(o.locations!);
+    checkUnnamed19(o.locations!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1115,12 +1139,12 @@
   buildCounterListLocationsResponse--;
 }
 
-core.List<api.Operation> buildUnnamed19() => [
+core.List<api.Operation> buildUnnamed20() => [
       buildOperation(),
       buildOperation(),
     ];
 
-void checkUnnamed19(core.List<api.Operation> o) {
+void checkUnnamed20(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -1132,7 +1156,7 @@
   buildCounterListOperationsResponse++;
   if (buildCounterListOperationsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.operations = buildUnnamed19();
+    o.operations = buildUnnamed20();
   }
   buildCounterListOperationsResponse--;
   return o;
@@ -1145,28 +1169,28 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed19(o.operations!);
+    checkUnnamed20(o.operations!);
   }
   buildCounterListOperationsResponse--;
 }
 
-core.List<api.Runtime> buildUnnamed20() => [
+core.List<api.Runtime> buildUnnamed21() => [
       buildRuntime(),
       buildRuntime(),
     ];
 
-void checkUnnamed20(core.List<api.Runtime> o) {
+void checkUnnamed21(core.List<api.Runtime> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRuntime(o[0]);
   checkRuntime(o[1]);
 }
 
-core.List<core.String> buildUnnamed21() => [
+core.List<core.String> buildUnnamed22() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed21(core.List<core.String> o) {
+void checkUnnamed22(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1184,8 +1208,8 @@
   buildCounterListRuntimesResponse++;
   if (buildCounterListRuntimesResponse < 3) {
     o.nextPageToken = 'foo';
-    o.runtimes = buildUnnamed20();
-    o.unreachable = buildUnnamed21();
+    o.runtimes = buildUnnamed21();
+    o.unreachable = buildUnnamed22();
   }
   buildCounterListRuntimesResponse--;
   return o;
@@ -1198,29 +1222,29 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed20(o.runtimes!);
-    checkUnnamed21(o.unreachable!);
+    checkUnnamed21(o.runtimes!);
+    checkUnnamed22(o.unreachable!);
   }
   buildCounterListRuntimesResponse--;
 }
 
-core.List<api.Schedule> buildUnnamed22() => [
+core.List<api.Schedule> buildUnnamed23() => [
       buildSchedule(),
       buildSchedule(),
     ];
 
-void checkUnnamed22(core.List<api.Schedule> o) {
+void checkUnnamed23(core.List<api.Schedule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSchedule(o[0]);
   checkSchedule(o[1]);
 }
 
-core.List<core.String> buildUnnamed23() => [
+core.List<core.String> buildUnnamed24() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed23(core.List<core.String> o) {
+void checkUnnamed24(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1238,8 +1262,8 @@
   buildCounterListSchedulesResponse++;
   if (buildCounterListSchedulesResponse < 3) {
     o.nextPageToken = 'foo';
-    o.schedules = buildUnnamed22();
-    o.unreachable = buildUnnamed23();
+    o.schedules = buildUnnamed23();
+    o.unreachable = buildUnnamed24();
   }
   buildCounterListSchedulesResponse--;
   return o;
@@ -1252,29 +1276,29 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed22(o.schedules!);
-    checkUnnamed23(o.unreachable!);
+    checkUnnamed23(o.schedules!);
+    checkUnnamed24(o.unreachable!);
   }
   buildCounterListSchedulesResponse--;
 }
 
-core.List<api.RuntimeGuestOsFeature> buildUnnamed24() => [
+core.List<api.RuntimeGuestOsFeature> buildUnnamed25() => [
       buildRuntimeGuestOsFeature(),
       buildRuntimeGuestOsFeature(),
     ];
 
-void checkUnnamed24(core.List<api.RuntimeGuestOsFeature> o) {
+void checkUnnamed25(core.List<api.RuntimeGuestOsFeature> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRuntimeGuestOsFeature(o[0]);
   checkRuntimeGuestOsFeature(o[1]);
 }
 
-core.List<core.String> buildUnnamed25() => [
+core.List<core.String> buildUnnamed26() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed25(core.List<core.String> o) {
+void checkUnnamed26(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1294,12 +1318,12 @@
     o.autoDelete = true;
     o.boot = true;
     o.deviceName = 'foo';
-    o.guestOsFeatures = buildUnnamed24();
+    o.guestOsFeatures = buildUnnamed25();
     o.index = 42;
     o.initializeParams = buildLocalDiskInitializeParams();
     o.interface = 'foo';
     o.kind = 'foo';
-    o.licenses = buildUnnamed25();
+    o.licenses = buildUnnamed26();
     o.mode = 'foo';
     o.source = 'foo';
     o.type = 'foo';
@@ -1317,7 +1341,7 @@
       o.deviceName!,
       unittest.equals('foo'),
     );
-    checkUnnamed24(o.guestOsFeatures!);
+    checkUnnamed25(o.guestOsFeatures!);
     unittest.expect(
       o.index!,
       unittest.equals(42),
@@ -1331,7 +1355,7 @@
       o.kind!,
       unittest.equals('foo'),
     );
-    checkUnnamed25(o.licenses!);
+    checkUnnamed26(o.licenses!);
     unittest.expect(
       o.mode!,
       unittest.equals('foo'),
@@ -1348,12 +1372,12 @@
   buildCounterLocalDisk--;
 }
 
-core.Map<core.String, core.String> buildUnnamed26() => {
+core.Map<core.String, core.String> buildUnnamed27() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed26(core.Map<core.String, core.String> o) {
+void checkUnnamed27(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1374,7 +1398,7 @@
     o.diskName = 'foo';
     o.diskSizeGb = 'foo';
     o.diskType = 'foo';
-    o.labels = buildUnnamed26();
+    o.labels = buildUnnamed27();
   }
   buildCounterLocalDiskInitializeParams--;
   return o;
@@ -1399,17 +1423,17 @@
       o.diskType!,
       unittest.equals('foo'),
     );
-    checkUnnamed26(o.labels!);
+    checkUnnamed27(o.labels!);
   }
   buildCounterLocalDiskInitializeParams--;
 }
 
-core.Map<core.String, core.String> buildUnnamed27() => {
+core.Map<core.String, core.String> buildUnnamed28() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed27(core.Map<core.String, core.String> o) {
+void checkUnnamed28(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1421,7 +1445,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed28() => {
+core.Map<core.String, core.Object?> buildUnnamed29() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -1434,7 +1458,7 @@
       },
     };
 
-void checkUnnamed28(core.Map<core.String, core.Object?> o) {
+void checkUnnamed29(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted1 = (o['x']!) as core.Map;
   unittest.expect(casted1, unittest.hasLength(3));
@@ -1472,9 +1496,9 @@
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
     o.displayName = 'foo';
-    o.labels = buildUnnamed27();
+    o.labels = buildUnnamed28();
     o.locationId = 'foo';
-    o.metadata = buildUnnamed28();
+    o.metadata = buildUnnamed29();
     o.name = 'foo';
   }
   buildCounterLocation--;
@@ -1488,12 +1512,12 @@
       o.displayName!,
       unittest.equals('foo'),
     );
-    checkUnnamed27(o.labels!);
+    checkUnnamed28(o.labels!);
     unittest.expect(
       o.locationId!,
       unittest.equals('foo'),
     );
-    checkUnnamed28(o.metadata!);
+    checkUnnamed29(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -1502,7 +1526,7 @@
   buildCounterLocation--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed29() => {
+core.Map<core.String, core.Object?> buildUnnamed30() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -1515,7 +1539,7 @@
       },
     };
 
-void checkUnnamed29(core.Map<core.String, core.Object?> o) {
+void checkUnnamed30(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted3 = (o['x']!) as core.Map;
   unittest.expect(casted3, unittest.hasLength(3));
@@ -1547,7 +1571,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed30() => {
+core.Map<core.String, core.Object?> buildUnnamed31() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -1560,7 +1584,7 @@
       },
     };
 
-void checkUnnamed30(core.Map<core.String, core.Object?> o) {
+void checkUnnamed31(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted5 = (o['x']!) as core.Map;
   unittest.expect(casted5, unittest.hasLength(3));
@@ -1599,9 +1623,9 @@
   if (buildCounterOperation < 3) {
     o.done = true;
     o.error = buildStatus();
-    o.metadata = buildUnnamed29();
+    o.metadata = buildUnnamed30();
     o.name = 'foo';
-    o.response = buildUnnamed30();
+    o.response = buildUnnamed31();
   }
   buildCounterOperation--;
   return o;
@@ -1612,22 +1636,22 @@
   if (buildCounterOperation < 3) {
     unittest.expect(o.done!, unittest.isTrue);
     checkStatus(o.error!);
-    checkUnnamed29(o.metadata!);
+    checkUnnamed30(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed30(o.response!);
+    checkUnnamed31(o.response!);
   }
   buildCounterOperation--;
 }
 
-core.List<api.Binding> buildUnnamed31() => [
+core.List<api.Binding> buildUnnamed32() => [
       buildBinding(),
       buildBinding(),
     ];
 
-void checkUnnamed31(core.List<api.Binding> o) {
+void checkUnnamed32(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -1638,7 +1662,7 @@
   final o = api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.bindings = buildUnnamed31();
+    o.bindings = buildUnnamed32();
     o.etag = 'foo';
     o.version = 42;
   }
@@ -1649,7 +1673,7 @@
 void checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed31(o.bindings!);
+    checkUnnamed32(o.bindings!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -1684,12 +1708,12 @@
   buildCounterRegisterInstanceRequest--;
 }
 
-core.Map<core.String, core.String> buildUnnamed32() => {
+core.Map<core.String, core.String> buildUnnamed33() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed32(core.Map<core.String, core.String> o) {
+void checkUnnamed33(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1706,7 +1730,7 @@
   final o = api.ReportInstanceInfoRequest();
   buildCounterReportInstanceInfoRequest++;
   if (buildCounterReportInstanceInfoRequest < 3) {
-    o.metadata = buildUnnamed32();
+    o.metadata = buildUnnamed33();
     o.vmId = 'foo';
   }
   buildCounterReportInstanceInfoRequest--;
@@ -1716,7 +1740,7 @@
 void checkReportInstanceInfoRequest(api.ReportInstanceInfoRequest o) {
   buildCounterReportInstanceInfoRequest++;
   if (buildCounterReportInstanceInfoRequest < 3) {
-    checkUnnamed32(o.metadata!);
+    checkUnnamed33(o.metadata!);
     unittest.expect(
       o.vmId!,
       unittest.equals('foo'),
@@ -1749,12 +1773,12 @@
   buildCounterReportRuntimeEventRequest--;
 }
 
-core.List<core.String> buildUnnamed33() => [
+core.List<core.String> buildUnnamed34() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed33(core.List<core.String> o) {
+void checkUnnamed34(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1773,7 +1797,7 @@
   if (buildCounterReservationAffinity < 3) {
     o.consumeReservationType = 'foo';
     o.key = 'foo';
-    o.values = buildUnnamed33();
+    o.values = buildUnnamed34();
   }
   buildCounterReservationAffinity--;
   return o;
@@ -1790,7 +1814,7 @@
       o.key!,
       unittest.equals('foo'),
     );
-    checkUnnamed33(o.values!);
+    checkUnnamed34(o.values!);
   }
   buildCounterReservationAffinity--;
 }
@@ -1978,12 +2002,12 @@
   buildCounterRuntimeGuestOsFeature--;
 }
 
-core.Map<core.String, core.String> buildUnnamed34() => {
+core.Map<core.String, core.String> buildUnnamed35() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed34(core.Map<core.String, core.String> o) {
+void checkUnnamed35(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2000,7 +2024,7 @@
   final o = api.RuntimeMetrics();
   buildCounterRuntimeMetrics++;
   if (buildCounterRuntimeMetrics < 3) {
-    o.systemMetrics = buildUnnamed34();
+    o.systemMetrics = buildUnnamed35();
   }
   buildCounterRuntimeMetrics--;
   return o;
@@ -2009,7 +2033,7 @@
 void checkRuntimeMetrics(api.RuntimeMetrics o) {
   buildCounterRuntimeMetrics++;
   if (buildCounterRuntimeMetrics < 3) {
-    checkUnnamed34(o.systemMetrics!);
+    checkUnnamed35(o.systemMetrics!);
   }
   buildCounterRuntimeMetrics--;
 }
@@ -2037,6 +2061,17 @@
   buildCounterRuntimeShieldedInstanceConfig--;
 }
 
+core.List<api.ContainerImage> buildUnnamed36() => [
+      buildContainerImage(),
+      buildContainerImage(),
+    ];
+
+void checkUnnamed36(core.List<api.ContainerImage> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainerImage(o[0]);
+  checkContainerImage(o[1]);
+}
+
 core.int buildCounterRuntimeSoftwareConfig = 0;
 api.RuntimeSoftwareConfig buildRuntimeSoftwareConfig() {
   final o = api.RuntimeSoftwareConfig();
@@ -2047,8 +2082,10 @@
     o.idleShutdown = true;
     o.idleShutdownTimeout = 42;
     o.installGpuDriver = true;
+    o.kernels = buildUnnamed36();
     o.notebookUpgradeSchedule = 'foo';
     o.postStartupScript = 'foo';
+    o.upgradeable = true;
   }
   buildCounterRuntimeSoftwareConfig--;
   return o;
@@ -2068,6 +2105,7 @@
       unittest.equals(42),
     );
     unittest.expect(o.installGpuDriver!, unittest.isTrue);
+    checkUnnamed36(o.kernels!);
     unittest.expect(
       o.notebookUpgradeSchedule!,
       unittest.equals('foo'),
@@ -2076,16 +2114,17 @@
       o.postStartupScript!,
       unittest.equals('foo'),
     );
+    unittest.expect(o.upgradeable!, unittest.isTrue);
   }
   buildCounterRuntimeSoftwareConfig--;
 }
 
-core.List<api.Execution> buildUnnamed35() => [
+core.List<api.Execution> buildUnnamed37() => [
       buildExecution(),
       buildExecution(),
     ];
 
-void checkUnnamed35(core.List<api.Execution> o) {
+void checkUnnamed37(core.List<api.Execution> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkExecution(o[0]);
   checkExecution(o[1]);
@@ -2102,7 +2141,7 @@
     o.displayName = 'foo';
     o.executionTemplate = buildExecutionTemplate();
     o.name = 'foo';
-    o.recentExecutions = buildUnnamed35();
+    o.recentExecutions = buildUnnamed37();
     o.state = 'foo';
     o.timeZone = 'foo';
     o.updateTime = 'foo';
@@ -2135,7 +2174,7 @@
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed35(o.recentExecutions!);
+    checkUnnamed37(o.recentExecutions!);
     unittest.expect(
       o.state!,
       unittest.equals('foo'),
@@ -2225,12 +2264,12 @@
   buildCounterSetInstanceAcceleratorRequest--;
 }
 
-core.Map<core.String, core.String> buildUnnamed36() => {
+core.Map<core.String, core.String> buildUnnamed38() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed36(core.Map<core.String, core.String> o) {
+void checkUnnamed38(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2247,7 +2286,7 @@
   final o = api.SetInstanceLabelsRequest();
   buildCounterSetInstanceLabelsRequest++;
   if (buildCounterSetInstanceLabelsRequest < 3) {
-    o.labels = buildUnnamed36();
+    o.labels = buildUnnamed38();
   }
   buildCounterSetInstanceLabelsRequest--;
   return o;
@@ -2256,7 +2295,7 @@
 void checkSetInstanceLabelsRequest(api.SetInstanceLabelsRequest o) {
   buildCounterSetInstanceLabelsRequest++;
   if (buildCounterSetInstanceLabelsRequest < 3) {
-    checkUnnamed36(o.labels!);
+    checkUnnamed38(o.labels!);
   }
   buildCounterSetInstanceLabelsRequest--;
 }
@@ -2336,7 +2375,7 @@
   buildCounterStartRuntimeRequest--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed37() => {
+core.Map<core.String, core.Object?> buildUnnamed39() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -2349,7 +2388,7 @@
       },
     };
 
-void checkUnnamed37(core.Map<core.String, core.Object?> o) {
+void checkUnnamed39(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o['x']!) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -2381,15 +2420,15 @@
   );
 }
 
-core.List<core.Map<core.String, core.Object?>> buildUnnamed38() => [
-      buildUnnamed37(),
-      buildUnnamed37(),
+core.List<core.Map<core.String, core.Object?>> buildUnnamed40() => [
+      buildUnnamed39(),
+      buildUnnamed39(),
     ];
 
-void checkUnnamed38(core.List<core.Map<core.String, core.Object?>> o) {
+void checkUnnamed40(core.List<core.Map<core.String, core.Object?>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed37(o[0]);
-  checkUnnamed37(o[1]);
+  checkUnnamed39(o[0]);
+  checkUnnamed39(o[1]);
 }
 
 core.int buildCounterStatus = 0;
@@ -2398,7 +2437,7 @@
   buildCounterStatus++;
   if (buildCounterStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed38();
+    o.details = buildUnnamed40();
     o.message = 'foo';
   }
   buildCounterStatus--;
@@ -2412,7 +2451,7 @@
       o.code!,
       unittest.equals(42),
     );
-    checkUnnamed38(o.details!);
+    checkUnnamed40(o.details!);
     unittest.expect(
       o.message!,
       unittest.equals('foo'),
@@ -2475,12 +2514,12 @@
   buildCounterSwitchRuntimeRequest--;
 }
 
-core.List<core.String> buildUnnamed39() => [
+core.List<core.String> buildUnnamed41() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed39(core.List<core.String> o) {
+void checkUnnamed41(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2497,7 +2536,7 @@
   final o = api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed39();
+    o.permissions = buildUnnamed41();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -2506,17 +2545,17 @@
 void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed39(o.permissions!);
+    checkUnnamed41(o.permissions!);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-core.List<core.String> buildUnnamed40() => [
+core.List<core.String> buildUnnamed42() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed40(core.List<core.String> o) {
+void checkUnnamed42(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2533,7 +2572,7 @@
   final o = api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed40();
+    o.permissions = buildUnnamed42();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -2542,7 +2581,7 @@
 void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed40(o.permissions!);
+    checkUnnamed42(o.permissions!);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -2581,12 +2620,12 @@
   buildCounterUpdateInstanceConfigRequest--;
 }
 
-core.Map<core.String, core.String> buildUnnamed41() => {
+core.Map<core.String, core.String> buildUnnamed43() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed41(core.Map<core.String, core.String> o) {
+void checkUnnamed43(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2604,7 +2643,7 @@
   final o = api.UpdateInstanceMetadataItemsRequest();
   buildCounterUpdateInstanceMetadataItemsRequest++;
   if (buildCounterUpdateInstanceMetadataItemsRequest < 3) {
-    o.items = buildUnnamed41();
+    o.items = buildUnnamed43();
   }
   buildCounterUpdateInstanceMetadataItemsRequest--;
   return o;
@@ -2614,17 +2653,17 @@
     api.UpdateInstanceMetadataItemsRequest o) {
   buildCounterUpdateInstanceMetadataItemsRequest++;
   if (buildCounterUpdateInstanceMetadataItemsRequest < 3) {
-    checkUnnamed41(o.items!);
+    checkUnnamed43(o.items!);
   }
   buildCounterUpdateInstanceMetadataItemsRequest--;
 }
 
-core.Map<core.String, core.String> buildUnnamed42() => {
+core.Map<core.String, core.String> buildUnnamed44() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed42(core.Map<core.String, core.String> o) {
+void checkUnnamed44(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2642,7 +2681,7 @@
   final o = api.UpdateInstanceMetadataItemsResponse();
   buildCounterUpdateInstanceMetadataItemsResponse++;
   if (buildCounterUpdateInstanceMetadataItemsResponse < 3) {
-    o.items = buildUnnamed42();
+    o.items = buildUnnamed44();
   }
   buildCounterUpdateInstanceMetadataItemsResponse--;
   return o;
@@ -2652,7 +2691,7 @@
     api.UpdateInstanceMetadataItemsResponse o) {
   buildCounterUpdateInstanceMetadataItemsResponse++;
   if (buildCounterUpdateInstanceMetadataItemsResponse < 3) {
-    checkUnnamed42(o.items!);
+    checkUnnamed44(o.items!);
   }
   buildCounterUpdateInstanceMetadataItemsResponse--;
 }
@@ -2794,12 +2833,12 @@
   buildCounterUpgradeInstanceRequest--;
 }
 
-core.Map<core.String, core.String> buildUnnamed43() => {
+core.Map<core.String, core.String> buildUnnamed45() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed43(core.Map<core.String, core.String> o) {
+void checkUnnamed45(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2816,7 +2855,7 @@
   final o = api.VertexAIParameters();
   buildCounterVertexAIParameters++;
   if (buildCounterVertexAIParameters < 3) {
-    o.env = buildUnnamed43();
+    o.env = buildUnnamed45();
     o.network = 'foo';
   }
   buildCounterVertexAIParameters--;
@@ -2826,7 +2865,7 @@
 void checkVertexAIParameters(api.VertexAIParameters o) {
   buildCounterVertexAIParameters++;
   if (buildCounterVertexAIParameters < 3) {
-    checkUnnamed43(o.env!);
+    checkUnnamed45(o.env!);
     unittest.expect(
       o.network!,
       unittest.equals('foo'),
@@ -2864,51 +2903,17 @@
   buildCounterVirtualMachine--;
 }
 
-core.List<api.ContainerImage> buildUnnamed44() => [
+core.List<api.ContainerImage> buildUnnamed46() => [
       buildContainerImage(),
       buildContainerImage(),
     ];
 
-void checkUnnamed44(core.List<api.ContainerImage> o) {
+void checkUnnamed46(core.List<api.ContainerImage> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkContainerImage(o[0]);
   checkContainerImage(o[1]);
 }
 
-core.Map<core.String, core.String> buildUnnamed45() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
-
-void checkUnnamed45(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o['x']!,
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o['y']!,
-    unittest.equals('foo'),
-  );
-}
-
-core.Map<core.String, core.String> buildUnnamed46() => {
-      'x': 'foo',
-      'y': 'foo',
-    };
-
-void checkUnnamed46(core.Map<core.String, core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o['x']!,
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o['y']!,
-    unittest.equals('foo'),
-  );
-}
-
 core.Map<core.String, core.String> buildUnnamed47() => {
       'x': 'foo',
       'y': 'foo',
@@ -2926,12 +2931,46 @@
   );
 }
 
-core.List<core.String> buildUnnamed48() => [
+core.Map<core.String, core.String> buildUnnamed48() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed48(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.String> buildUnnamed49() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed49(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed50() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed48(core.List<core.String> o) {
+void checkUnnamed50(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2949,19 +2988,20 @@
   buildCounterVirtualMachineConfig++;
   if (buildCounterVirtualMachineConfig < 3) {
     o.acceleratorConfig = buildRuntimeAcceleratorConfig();
-    o.containerImages = buildUnnamed44();
+    o.containerImages = buildUnnamed46();
     o.dataDisk = buildLocalDisk();
     o.encryptionConfig = buildEncryptionConfig();
-    o.guestAttributes = buildUnnamed45();
+    o.guestAttributes = buildUnnamed47();
     o.internalIpOnly = true;
-    o.labels = buildUnnamed46();
+    o.labels = buildUnnamed48();
     o.machineType = 'foo';
-    o.metadata = buildUnnamed47();
+    o.metadata = buildUnnamed49();
     o.network = 'foo';
     o.nicType = 'foo';
+    o.reservedIpRange = 'foo';
     o.shieldedInstanceConfig = buildRuntimeShieldedInstanceConfig();
     o.subnet = 'foo';
-    o.tags = buildUnnamed48();
+    o.tags = buildUnnamed50();
     o.zone = 'foo';
   }
   buildCounterVirtualMachineConfig--;
@@ -2972,17 +3012,17 @@
   buildCounterVirtualMachineConfig++;
   if (buildCounterVirtualMachineConfig < 3) {
     checkRuntimeAcceleratorConfig(o.acceleratorConfig!);
-    checkUnnamed44(o.containerImages!);
+    checkUnnamed46(o.containerImages!);
     checkLocalDisk(o.dataDisk!);
     checkEncryptionConfig(o.encryptionConfig!);
-    checkUnnamed45(o.guestAttributes!);
+    checkUnnamed47(o.guestAttributes!);
     unittest.expect(o.internalIpOnly!, unittest.isTrue);
-    checkUnnamed46(o.labels!);
+    checkUnnamed48(o.labels!);
     unittest.expect(
       o.machineType!,
       unittest.equals('foo'),
     );
-    checkUnnamed47(o.metadata!);
+    checkUnnamed49(o.metadata!);
     unittest.expect(
       o.network!,
       unittest.equals('foo'),
@@ -2991,12 +3031,16 @@
       o.nicType!,
       unittest.equals('foo'),
     );
+    unittest.expect(
+      o.reservedIpRange!,
+      unittest.equals('foo'),
+    );
     checkRuntimeShieldedInstanceConfig(o.shieldedInstanceConfig!);
     unittest.expect(
       o.subnet!,
       unittest.equals('foo'),
     );
-    checkUnnamed48(o.tags!);
+    checkUnnamed50(o.tags!);
     unittest.expect(
       o.zone!,
       unittest.equals('foo'),
diff --git a/generated/googleapis/test/orgpolicy/v2_test.dart b/generated/googleapis/test/orgpolicy/v2_test.dart
index 55b1840..208f7d7 100644
--- a/generated/googleapis/test/orgpolicy/v2_test.dart
+++ b/generated/googleapis/test/orgpolicy/v2_test.dart
@@ -136,94 +136,12 @@
   buildCounterGoogleCloudOrgpolicyV2ConstraintListConstraint--;
 }
 
-core.List<core.String> buildUnnamed0() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed0(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.List<core.String> buildUnnamed1() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed1(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterGoogleCloudOrgpolicyV2CustomConstraint = 0;
-api.GoogleCloudOrgpolicyV2CustomConstraint
-    buildGoogleCloudOrgpolicyV2CustomConstraint() {
-  final o = api.GoogleCloudOrgpolicyV2CustomConstraint();
-  buildCounterGoogleCloudOrgpolicyV2CustomConstraint++;
-  if (buildCounterGoogleCloudOrgpolicyV2CustomConstraint < 3) {
-    o.actionType = 'foo';
-    o.condition = 'foo';
-    o.description = 'foo';
-    o.displayName = 'foo';
-    o.methodTypes = buildUnnamed0();
-    o.name = 'foo';
-    o.resourceTypes = buildUnnamed1();
-  }
-  buildCounterGoogleCloudOrgpolicyV2CustomConstraint--;
-  return o;
-}
-
-void checkGoogleCloudOrgpolicyV2CustomConstraint(
-    api.GoogleCloudOrgpolicyV2CustomConstraint o) {
-  buildCounterGoogleCloudOrgpolicyV2CustomConstraint++;
-  if (buildCounterGoogleCloudOrgpolicyV2CustomConstraint < 3) {
-    unittest.expect(
-      o.actionType!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.condition!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.description!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.displayName!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed0(o.methodTypes!);
-    unittest.expect(
-      o.name!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed1(o.resourceTypes!);
-  }
-  buildCounterGoogleCloudOrgpolicyV2CustomConstraint--;
-}
-
-core.List<api.GoogleCloudOrgpolicyV2Constraint> buildUnnamed2() => [
+core.List<api.GoogleCloudOrgpolicyV2Constraint> buildUnnamed0() => [
       buildGoogleCloudOrgpolicyV2Constraint(),
       buildGoogleCloudOrgpolicyV2Constraint(),
     ];
 
-void checkUnnamed2(core.List<api.GoogleCloudOrgpolicyV2Constraint> o) {
+void checkUnnamed0(core.List<api.GoogleCloudOrgpolicyV2Constraint> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudOrgpolicyV2Constraint(o[0]);
   checkGoogleCloudOrgpolicyV2Constraint(o[1]);
@@ -235,7 +153,7 @@
   final o = api.GoogleCloudOrgpolicyV2ListConstraintsResponse();
   buildCounterGoogleCloudOrgpolicyV2ListConstraintsResponse++;
   if (buildCounterGoogleCloudOrgpolicyV2ListConstraintsResponse < 3) {
-    o.constraints = buildUnnamed2();
+    o.constraints = buildUnnamed0();
     o.nextPageToken = 'foo';
   }
   buildCounterGoogleCloudOrgpolicyV2ListConstraintsResponse--;
@@ -246,7 +164,7 @@
     api.GoogleCloudOrgpolicyV2ListConstraintsResponse o) {
   buildCounterGoogleCloudOrgpolicyV2ListConstraintsResponse++;
   if (buildCounterGoogleCloudOrgpolicyV2ListConstraintsResponse < 3) {
-    checkUnnamed2(o.constraints!);
+    checkUnnamed0(o.constraints!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -255,12 +173,12 @@
   buildCounterGoogleCloudOrgpolicyV2ListConstraintsResponse--;
 }
 
-core.List<api.GoogleCloudOrgpolicyV2Policy> buildUnnamed3() => [
+core.List<api.GoogleCloudOrgpolicyV2Policy> buildUnnamed1() => [
       buildGoogleCloudOrgpolicyV2Policy(),
       buildGoogleCloudOrgpolicyV2Policy(),
     ];
 
-void checkUnnamed3(core.List<api.GoogleCloudOrgpolicyV2Policy> o) {
+void checkUnnamed1(core.List<api.GoogleCloudOrgpolicyV2Policy> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudOrgpolicyV2Policy(o[0]);
   checkGoogleCloudOrgpolicyV2Policy(o[1]);
@@ -273,7 +191,7 @@
   buildCounterGoogleCloudOrgpolicyV2ListPoliciesResponse++;
   if (buildCounterGoogleCloudOrgpolicyV2ListPoliciesResponse < 3) {
     o.nextPageToken = 'foo';
-    o.policies = buildUnnamed3();
+    o.policies = buildUnnamed1();
   }
   buildCounterGoogleCloudOrgpolicyV2ListPoliciesResponse--;
   return o;
@@ -287,7 +205,7 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed3(o.policies!);
+    checkUnnamed1(o.policies!);
   }
   buildCounterGoogleCloudOrgpolicyV2ListPoliciesResponse--;
 }
@@ -318,12 +236,12 @@
   buildCounterGoogleCloudOrgpolicyV2Policy--;
 }
 
-core.List<api.GoogleCloudOrgpolicyV2PolicySpecPolicyRule> buildUnnamed4() => [
+core.List<api.GoogleCloudOrgpolicyV2PolicySpecPolicyRule> buildUnnamed2() => [
       buildGoogleCloudOrgpolicyV2PolicySpecPolicyRule(),
       buildGoogleCloudOrgpolicyV2PolicySpecPolicyRule(),
     ];
 
-void checkUnnamed4(
+void checkUnnamed2(
     core.List<api.GoogleCloudOrgpolicyV2PolicySpecPolicyRule> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudOrgpolicyV2PolicySpecPolicyRule(o[0]);
@@ -338,7 +256,7 @@
     o.etag = 'foo';
     o.inheritFromParent = true;
     o.reset = true;
-    o.rules = buildUnnamed4();
+    o.rules = buildUnnamed2();
     o.updateTime = 'foo';
   }
   buildCounterGoogleCloudOrgpolicyV2PolicySpec--;
@@ -355,7 +273,7 @@
     );
     unittest.expect(o.inheritFromParent!, unittest.isTrue);
     unittest.expect(o.reset!, unittest.isTrue);
-    checkUnnamed4(o.rules!);
+    checkUnnamed2(o.rules!);
     unittest.expect(
       o.updateTime!,
       unittest.equals('foo'),
@@ -393,12 +311,12 @@
   buildCounterGoogleCloudOrgpolicyV2PolicySpecPolicyRule--;
 }
 
-core.List<core.String> buildUnnamed5() => [
+core.List<core.String> buildUnnamed3() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed5(core.List<core.String> o) {
+void checkUnnamed3(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -410,12 +328,12 @@
   );
 }
 
-core.List<core.String> buildUnnamed6() => [
+core.List<core.String> buildUnnamed4() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed6(core.List<core.String> o) {
+void checkUnnamed4(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -433,8 +351,8 @@
   final o = api.GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues();
   buildCounterGoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues++;
   if (buildCounterGoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues < 3) {
-    o.allowedValues = buildUnnamed5();
-    o.deniedValues = buildUnnamed6();
+    o.allowedValues = buildUnnamed3();
+    o.deniedValues = buildUnnamed4();
   }
   buildCounterGoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues--;
   return o;
@@ -444,8 +362,8 @@
     api.GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues o) {
   buildCounterGoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues++;
   if (buildCounterGoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues < 3) {
-    checkUnnamed5(o.allowedValues!);
-    checkUnnamed6(o.deniedValues!);
+    checkUnnamed3(o.allowedValues!);
+    checkUnnamed4(o.deniedValues!);
   }
   buildCounterGoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues--;
 }
@@ -545,16 +463,6 @@
     });
   });
 
-  unittest.group('obj-schema-GoogleCloudOrgpolicyV2CustomConstraint', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildGoogleCloudOrgpolicyV2CustomConstraint();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.GoogleCloudOrgpolicyV2CustomConstraint.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkGoogleCloudOrgpolicyV2CustomConstraint(od);
-    });
-  });
-
   unittest.group('obj-schema-GoogleCloudOrgpolicyV2ListConstraintsResponse',
       () {
     unittest.test('to-json--from-json', () async {
@@ -1122,68 +1030,6 @@
     });
   });
 
-  unittest.group('resource-OrganizationsCustomConstraintsResource', () {
-    unittest.test('method--patch', () async {
-      final mock = HttpServerMock();
-      final res = api.OrgPolicyApi(mock).organizations.customConstraints;
-      final arg_request = buildGoogleCloudOrgpolicyV2CustomConstraint();
-      final arg_name = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final obj = api.GoogleCloudOrgpolicyV2CustomConstraint.fromJson(
-            json as core.Map<core.String, core.dynamic>);
-        checkGoogleCloudOrgpolicyV2CustomConstraint(obj);
-
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 3),
-          unittest.equals('v2/'),
-        );
-        pathOffset += 3;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp =
-            convert.json.encode(buildGoogleCloudOrgpolicyV2CustomConstraint());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response =
-          await res.patch(arg_request, arg_name, $fields: arg_$fields);
-      checkGoogleCloudOrgpolicyV2CustomConstraint(
-          response as api.GoogleCloudOrgpolicyV2CustomConstraint);
-    });
-  });
-
   unittest.group('resource-OrganizationsPoliciesResource', () {
     unittest.test('method--create', () async {
       final mock = HttpServerMock();
diff --git a/generated/googleapis/test/playintegrity/v1_test.dart b/generated/googleapis/test/playintegrity/v1_test.dart
new file mode 100644
index 0000000..b79900a
--- /dev/null
+++ b/generated/googleapis/test/playintegrity/v1_test.dart
@@ -0,0 +1,399 @@
+// ignore_for_file: camel_case_types
+// ignore_for_file: cascade_invocations
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_const_declarations
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_final_locals
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_cast
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: unnecessary_string_interpolations
+// ignore_for_file: unused_local_variable
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:googleapis/playintegrity/v1.dart' as api;
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import '../test_shared.dart';
+
+core.int buildCounterAccountDetails = 0;
+api.AccountDetails buildAccountDetails() {
+  final o = api.AccountDetails();
+  buildCounterAccountDetails++;
+  if (buildCounterAccountDetails < 3) {
+    o.appLicensingVerdict = 'foo';
+  }
+  buildCounterAccountDetails--;
+  return o;
+}
+
+void checkAccountDetails(api.AccountDetails o) {
+  buildCounterAccountDetails++;
+  if (buildCounterAccountDetails < 3) {
+    unittest.expect(
+      o.appLicensingVerdict!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAccountDetails--;
+}
+
+core.List<core.String> buildUnnamed0() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed0(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterAppIntegrity = 0;
+api.AppIntegrity buildAppIntegrity() {
+  final o = api.AppIntegrity();
+  buildCounterAppIntegrity++;
+  if (buildCounterAppIntegrity < 3) {
+    o.appRecognitionVerdict = 'foo';
+    o.certificateSha256Digest = buildUnnamed0();
+    o.packageName = 'foo';
+    o.versionCode = 'foo';
+  }
+  buildCounterAppIntegrity--;
+  return o;
+}
+
+void checkAppIntegrity(api.AppIntegrity o) {
+  buildCounterAppIntegrity++;
+  if (buildCounterAppIntegrity < 3) {
+    unittest.expect(
+      o.appRecognitionVerdict!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed0(o.certificateSha256Digest!);
+    unittest.expect(
+      o.packageName!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.versionCode!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAppIntegrity--;
+}
+
+core.int buildCounterDecodeIntegrityTokenRequest = 0;
+api.DecodeIntegrityTokenRequest buildDecodeIntegrityTokenRequest() {
+  final o = api.DecodeIntegrityTokenRequest();
+  buildCounterDecodeIntegrityTokenRequest++;
+  if (buildCounterDecodeIntegrityTokenRequest < 3) {
+    o.integrityToken = 'foo';
+  }
+  buildCounterDecodeIntegrityTokenRequest--;
+  return o;
+}
+
+void checkDecodeIntegrityTokenRequest(api.DecodeIntegrityTokenRequest o) {
+  buildCounterDecodeIntegrityTokenRequest++;
+  if (buildCounterDecodeIntegrityTokenRequest < 3) {
+    unittest.expect(
+      o.integrityToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterDecodeIntegrityTokenRequest--;
+}
+
+core.int buildCounterDecodeIntegrityTokenResponse = 0;
+api.DecodeIntegrityTokenResponse buildDecodeIntegrityTokenResponse() {
+  final o = api.DecodeIntegrityTokenResponse();
+  buildCounterDecodeIntegrityTokenResponse++;
+  if (buildCounterDecodeIntegrityTokenResponse < 3) {
+    o.tokenPayloadExternal = buildTokenPayloadExternal();
+  }
+  buildCounterDecodeIntegrityTokenResponse--;
+  return o;
+}
+
+void checkDecodeIntegrityTokenResponse(api.DecodeIntegrityTokenResponse o) {
+  buildCounterDecodeIntegrityTokenResponse++;
+  if (buildCounterDecodeIntegrityTokenResponse < 3) {
+    checkTokenPayloadExternal(o.tokenPayloadExternal!);
+  }
+  buildCounterDecodeIntegrityTokenResponse--;
+}
+
+core.List<core.String> buildUnnamed1() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed1(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterDeviceIntegrity = 0;
+api.DeviceIntegrity buildDeviceIntegrity() {
+  final o = api.DeviceIntegrity();
+  buildCounterDeviceIntegrity++;
+  if (buildCounterDeviceIntegrity < 3) {
+    o.deviceRecognitionVerdict = buildUnnamed1();
+  }
+  buildCounterDeviceIntegrity--;
+  return o;
+}
+
+void checkDeviceIntegrity(api.DeviceIntegrity o) {
+  buildCounterDeviceIntegrity++;
+  if (buildCounterDeviceIntegrity < 3) {
+    checkUnnamed1(o.deviceRecognitionVerdict!);
+  }
+  buildCounterDeviceIntegrity--;
+}
+
+core.int buildCounterRequestDetails = 0;
+api.RequestDetails buildRequestDetails() {
+  final o = api.RequestDetails();
+  buildCounterRequestDetails++;
+  if (buildCounterRequestDetails < 3) {
+    o.nonce = 'foo';
+    o.requestPackageName = 'foo';
+    o.timestampMillis = 'foo';
+  }
+  buildCounterRequestDetails--;
+  return o;
+}
+
+void checkRequestDetails(api.RequestDetails o) {
+  buildCounterRequestDetails++;
+  if (buildCounterRequestDetails < 3) {
+    unittest.expect(
+      o.nonce!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.requestPackageName!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.timestampMillis!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterRequestDetails--;
+}
+
+core.int buildCounterTestingDetails = 0;
+api.TestingDetails buildTestingDetails() {
+  final o = api.TestingDetails();
+  buildCounterTestingDetails++;
+  if (buildCounterTestingDetails < 3) {
+    o.isTestingResponse = true;
+  }
+  buildCounterTestingDetails--;
+  return o;
+}
+
+void checkTestingDetails(api.TestingDetails o) {
+  buildCounterTestingDetails++;
+  if (buildCounterTestingDetails < 3) {
+    unittest.expect(o.isTestingResponse!, unittest.isTrue);
+  }
+  buildCounterTestingDetails--;
+}
+
+core.int buildCounterTokenPayloadExternal = 0;
+api.TokenPayloadExternal buildTokenPayloadExternal() {
+  final o = api.TokenPayloadExternal();
+  buildCounterTokenPayloadExternal++;
+  if (buildCounterTokenPayloadExternal < 3) {
+    o.accountDetails = buildAccountDetails();
+    o.appIntegrity = buildAppIntegrity();
+    o.deviceIntegrity = buildDeviceIntegrity();
+    o.requestDetails = buildRequestDetails();
+    o.testingDetails = buildTestingDetails();
+  }
+  buildCounterTokenPayloadExternal--;
+  return o;
+}
+
+void checkTokenPayloadExternal(api.TokenPayloadExternal o) {
+  buildCounterTokenPayloadExternal++;
+  if (buildCounterTokenPayloadExternal < 3) {
+    checkAccountDetails(o.accountDetails!);
+    checkAppIntegrity(o.appIntegrity!);
+    checkDeviceIntegrity(o.deviceIntegrity!);
+    checkRequestDetails(o.requestDetails!);
+    checkTestingDetails(o.testingDetails!);
+  }
+  buildCounterTokenPayloadExternal--;
+}
+
+void main() {
+  unittest.group('obj-schema-AccountDetails', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAccountDetails();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AccountDetails.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAccountDetails(od);
+    });
+  });
+
+  unittest.group('obj-schema-AppIntegrity', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAppIntegrity();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AppIntegrity.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAppIntegrity(od);
+    });
+  });
+
+  unittest.group('obj-schema-DecodeIntegrityTokenRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildDecodeIntegrityTokenRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.DecodeIntegrityTokenRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkDecodeIntegrityTokenRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-DecodeIntegrityTokenResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildDecodeIntegrityTokenResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.DecodeIntegrityTokenResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkDecodeIntegrityTokenResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-DeviceIntegrity', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildDeviceIntegrity();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.DeviceIntegrity.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkDeviceIntegrity(od);
+    });
+  });
+
+  unittest.group('obj-schema-RequestDetails', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildRequestDetails();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.RequestDetails.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkRequestDetails(od);
+    });
+  });
+
+  unittest.group('obj-schema-TestingDetails', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildTestingDetails();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.TestingDetails.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkTestingDetails(od);
+    });
+  });
+
+  unittest.group('obj-schema-TokenPayloadExternal', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildTokenPayloadExternal();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.TokenPayloadExternal.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkTokenPayloadExternal(od);
+    });
+  });
+
+  unittest.group('resource-V1Resource', () {
+    unittest.test('method--decodeIntegrityToken', () async {
+      final mock = HttpServerMock();
+      final res = api.PlayIntegrityApi(mock).v1;
+      final arg_request = buildDecodeIntegrityTokenRequest();
+      final arg_packageName = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.DecodeIntegrityTokenRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkDecodeIntegrityTokenRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildDecodeIntegrityTokenResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.decodeIntegrityToken(
+          arg_request, arg_packageName,
+          $fields: arg_$fields);
+      checkDecodeIntegrityTokenResponse(
+          response as api.DecodeIntegrityTokenResponse);
+    });
+  });
+}
diff --git a/generated/googleapis/test/privateca/v1_test.dart b/generated/googleapis/test/privateca/v1_test.dart
index 67e342a..de289f6 100644
--- a/generated/googleapis/test/privateca/v1_test.dart
+++ b/generated/googleapis/test/privateca/v1_test.dart
@@ -6040,70 +6040,6 @@
     });
   });
 
-  unittest.group('resource-ProjectsLocationsManagedPkisResource', () {
-    unittest.test('method--getIamPolicy', () async {
-      final mock = HttpServerMock();
-      final res = api.CertificateAuthorityServiceApi(mock)
-          .projects
-          .locations
-          .managedPkis;
-      final arg_resource = 'foo';
-      final arg_options_requestedPolicyVersion = 42;
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 3),
-          unittest.equals('v1/'),
-        );
-        pathOffset += 3;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
-          unittest.equals(arg_options_requestedPolicyVersion),
-        );
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildPolicy());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response = await res.getIamPolicy(arg_resource,
-          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
-          $fields: arg_$fields);
-      checkPolicy(response as api.Policy);
-    });
-  });
-
   unittest.group('resource-ProjectsLocationsOperationsResource', () {
     unittest.test('method--cancel', () async {
       final mock = HttpServerMock();
diff --git a/generated/googleapis/test/recaptchaenterprise/v1_test.dart b/generated/googleapis/test/recaptchaenterprise/v1_test.dart
index 8d0d268..f213ebf 100644
--- a/generated/googleapis/test/recaptchaenterprise/v1_test.dart
+++ b/generated/googleapis/test/recaptchaenterprise/v1_test.dart
@@ -52,7 +52,6 @@
   if (buildCounterGoogleCloudRecaptchaenterpriseV1AccountDefenderAssessment <
       3) {
     o.labels = buildUnnamed0();
-    o.recommendedAction = 'foo';
   }
   buildCounterGoogleCloudRecaptchaenterpriseV1AccountDefenderAssessment--;
   return o;
@@ -64,10 +63,6 @@
   if (buildCounterGoogleCloudRecaptchaenterpriseV1AccountDefenderAssessment <
       3) {
     checkUnnamed0(o.labels!);
-    unittest.expect(
-      o.recommendedAction!,
-      unittest.equals('foo'),
-    );
   }
   buildCounterGoogleCloudRecaptchaenterpriseV1AccountDefenderAssessment--;
 }
diff --git a/generated/googleapis/test/retail/v2_test.dart b/generated/googleapis/test/retail/v2_test.dart
index 8374027..9e1a948 100644
--- a/generated/googleapis/test/retail/v2_test.dart
+++ b/generated/googleapis/test/retail/v2_test.dart
@@ -1978,6 +1978,8 @@
     o.pageCategories = buildUnnamed38();
     o.pageSize = 42;
     o.pageToken = 'foo';
+    o.personalizationSpec =
+        buildGoogleCloudRetailV2SearchRequestPersonalizationSpec();
     o.query = 'foo';
     o.queryExpansionSpec =
         buildGoogleCloudRetailV2SearchRequestQueryExpansionSpec();
@@ -2026,6 +2028,8 @@
       o.pageToken!,
       unittest.equals('foo'),
     );
+    checkGoogleCloudRetailV2SearchRequestPersonalizationSpec(
+        o.personalizationSpec!);
     unittest.expect(
       o.query!,
       unittest.equals('foo'),
@@ -2067,6 +2071,7 @@
   buildCounterGoogleCloudRetailV2SearchRequestBoostSpec++;
   if (buildCounterGoogleCloudRetailV2SearchRequestBoostSpec < 3) {
     o.conditionBoostSpecs = buildUnnamed40();
+    o.skipBoostSpecValidation = true;
   }
   buildCounterGoogleCloudRetailV2SearchRequestBoostSpec--;
   return o;
@@ -2077,6 +2082,7 @@
   buildCounterGoogleCloudRetailV2SearchRequestBoostSpec++;
   if (buildCounterGoogleCloudRetailV2SearchRequestBoostSpec < 3) {
     checkUnnamed40(o.conditionBoostSpecs!);
+    unittest.expect(o.skipBoostSpecValidation!, unittest.isTrue);
   }
   buildCounterGoogleCloudRetailV2SearchRequestBoostSpec--;
 }
@@ -2288,6 +2294,30 @@
   buildCounterGoogleCloudRetailV2SearchRequestFacetSpecFacetKey--;
 }
 
+core.int buildCounterGoogleCloudRetailV2SearchRequestPersonalizationSpec = 0;
+api.GoogleCloudRetailV2SearchRequestPersonalizationSpec
+    buildGoogleCloudRetailV2SearchRequestPersonalizationSpec() {
+  final o = api.GoogleCloudRetailV2SearchRequestPersonalizationSpec();
+  buildCounterGoogleCloudRetailV2SearchRequestPersonalizationSpec++;
+  if (buildCounterGoogleCloudRetailV2SearchRequestPersonalizationSpec < 3) {
+    o.mode = 'foo';
+  }
+  buildCounterGoogleCloudRetailV2SearchRequestPersonalizationSpec--;
+  return o;
+}
+
+void checkGoogleCloudRetailV2SearchRequestPersonalizationSpec(
+    api.GoogleCloudRetailV2SearchRequestPersonalizationSpec o) {
+  buildCounterGoogleCloudRetailV2SearchRequestPersonalizationSpec++;
+  if (buildCounterGoogleCloudRetailV2SearchRequestPersonalizationSpec < 3) {
+    unittest.expect(
+      o.mode!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudRetailV2SearchRequestPersonalizationSpec--;
+}
+
 core.int buildCounterGoogleCloudRetailV2SearchRequestQueryExpansionSpec = 0;
 api.GoogleCloudRetailV2SearchRequestQueryExpansionSpec
     buildGoogleCloudRetailV2SearchRequestQueryExpansionSpec() {
@@ -2342,13 +2372,27 @@
   checkGoogleCloudRetailV2SearchResponseFacet(o[1]);
 }
 
-core.List<api.GoogleCloudRetailV2SearchResponseSearchResult> buildUnnamed48() =>
+core.List<api.GoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec>
+    buildUnnamed48() => [
+          buildGoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec(),
+          buildGoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec(),
+        ];
+
+void checkUnnamed48(
+    core.List<api.GoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec>
+        o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec(o[0]);
+  checkGoogleCloudRetailV2SearchRequestBoostSpecConditionBoostSpec(o[1]);
+}
+
+core.List<api.GoogleCloudRetailV2SearchResponseSearchResult> buildUnnamed49() =>
     [
       buildGoogleCloudRetailV2SearchResponseSearchResult(),
       buildGoogleCloudRetailV2SearchResponseSearchResult(),
     ];
 
-void checkUnnamed48(
+void checkUnnamed49(
     core.List<api.GoogleCloudRetailV2SearchResponseSearchResult> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudRetailV2SearchResponseSearchResult(o[0]);
@@ -2364,11 +2408,12 @@
     o.attributionToken = 'foo';
     o.correctedQuery = 'foo';
     o.facets = buildUnnamed47();
+    o.invalidConditionBoostSpecs = buildUnnamed48();
     o.nextPageToken = 'foo';
     o.queryExpansionInfo =
         buildGoogleCloudRetailV2SearchResponseQueryExpansionInfo();
     o.redirectUri = 'foo';
-    o.results = buildUnnamed48();
+    o.results = buildUnnamed49();
     o.totalSize = 42;
   }
   buildCounterGoogleCloudRetailV2SearchResponse--;
@@ -2389,6 +2434,7 @@
       unittest.equals('foo'),
     );
     checkUnnamed47(o.facets!);
+    checkUnnamed48(o.invalidConditionBoostSpecs!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -2399,7 +2445,7 @@
       o.redirectUri!,
       unittest.equals('foo'),
     );
-    checkUnnamed48(o.results!);
+    checkUnnamed49(o.results!);
     unittest.expect(
       o.totalSize!,
       unittest.equals(42),
@@ -2409,12 +2455,12 @@
 }
 
 core.List<api.GoogleCloudRetailV2SearchResponseFacetFacetValue>
-    buildUnnamed49() => [
+    buildUnnamed50() => [
           buildGoogleCloudRetailV2SearchResponseFacetFacetValue(),
           buildGoogleCloudRetailV2SearchResponseFacetFacetValue(),
         ];
 
-void checkUnnamed49(
+void checkUnnamed50(
     core.List<api.GoogleCloudRetailV2SearchResponseFacetFacetValue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudRetailV2SearchResponseFacetFacetValue(o[0]);
@@ -2429,7 +2475,7 @@
   if (buildCounterGoogleCloudRetailV2SearchResponseFacet < 3) {
     o.dynamicFacet = true;
     o.key = 'foo';
-    o.values = buildUnnamed49();
+    o.values = buildUnnamed50();
   }
   buildCounterGoogleCloudRetailV2SearchResponseFacet--;
   return o;
@@ -2444,7 +2490,7 @@
       o.key!,
       unittest.equals('foo'),
     );
-    checkUnnamed49(o.values!);
+    checkUnnamed50(o.values!);
   }
   buildCounterGoogleCloudRetailV2SearchResponseFacet--;
 }
@@ -2506,12 +2552,12 @@
   buildCounterGoogleCloudRetailV2SearchResponseQueryExpansionInfo--;
 }
 
-core.Map<core.String, core.String> buildUnnamed50() => {
+core.Map<core.String, core.String> buildUnnamed51() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed50(core.Map<core.String, core.String> o) {
+void checkUnnamed51(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2523,7 +2569,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed51() => {
+core.Map<core.String, core.Object?> buildUnnamed52() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -2536,7 +2582,7 @@
       },
     };
 
-void checkUnnamed51(core.Map<core.String, core.Object?> o) {
+void checkUnnamed52(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted7 = (o['x']!) as core.Map;
   unittest.expect(casted7, unittest.hasLength(3));
@@ -2576,9 +2622,9 @@
   if (buildCounterGoogleCloudRetailV2SearchResponseSearchResult < 3) {
     o.id = 'foo';
     o.matchingVariantCount = 42;
-    o.matchingVariantFields = buildUnnamed50();
+    o.matchingVariantFields = buildUnnamed51();
     o.product = buildGoogleCloudRetailV2Product();
-    o.variantRollupValues = buildUnnamed51();
+    o.variantRollupValues = buildUnnamed52();
   }
   buildCounterGoogleCloudRetailV2SearchResponseSearchResult--;
   return o;
@@ -2596,9 +2642,9 @@
       o.matchingVariantCount!,
       unittest.equals(42),
     );
-    checkUnnamed50(o.matchingVariantFields!);
+    checkUnnamed51(o.matchingVariantFields!);
     checkGoogleCloudRetailV2Product(o.product!);
-    checkUnnamed51(o.variantRollupValues!);
+    checkUnnamed52(o.variantRollupValues!);
   }
   buildCounterGoogleCloudRetailV2SearchResponseSearchResult--;
 }
@@ -2666,35 +2712,18 @@
 }
 
 core.Map<core.String, api.GoogleCloudRetailV2CustomAttribute>
-    buildUnnamed52() => {
+    buildUnnamed53() => {
           'x': buildGoogleCloudRetailV2CustomAttribute(),
           'y': buildGoogleCloudRetailV2CustomAttribute(),
         };
 
-void checkUnnamed52(
+void checkUnnamed53(
     core.Map<core.String, api.GoogleCloudRetailV2CustomAttribute> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudRetailV2CustomAttribute(o['x']!);
   checkGoogleCloudRetailV2CustomAttribute(o['y']!);
 }
 
-core.List<core.String> buildUnnamed53() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed53(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed54() => [
       'foo',
       'foo',
@@ -2712,12 +2741,29 @@
   );
 }
 
-core.List<api.GoogleCloudRetailV2ProductDetail> buildUnnamed55() => [
+core.List<core.String> buildUnnamed55() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed55(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<api.GoogleCloudRetailV2ProductDetail> buildUnnamed56() => [
       buildGoogleCloudRetailV2ProductDetail(),
       buildGoogleCloudRetailV2ProductDetail(),
     ];
 
-void checkUnnamed55(core.List<api.GoogleCloudRetailV2ProductDetail> o) {
+void checkUnnamed56(core.List<api.GoogleCloudRetailV2ProductDetail> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudRetailV2ProductDetail(o[0]);
   checkGoogleCloudRetailV2ProductDetail(o[1]);
@@ -2728,19 +2774,19 @@
   final o = api.GoogleCloudRetailV2UserEvent();
   buildCounterGoogleCloudRetailV2UserEvent++;
   if (buildCounterGoogleCloudRetailV2UserEvent < 3) {
-    o.attributes = buildUnnamed52();
+    o.attributes = buildUnnamed53();
     o.attributionToken = 'foo';
     o.cartId = 'foo';
     o.completionDetail = buildGoogleCloudRetailV2CompletionDetail();
     o.eventTime = 'foo';
     o.eventType = 'foo';
-    o.experimentIds = buildUnnamed53();
+    o.experimentIds = buildUnnamed54();
     o.filter = 'foo';
     o.offset = 42;
     o.orderBy = 'foo';
-    o.pageCategories = buildUnnamed54();
+    o.pageCategories = buildUnnamed55();
     o.pageViewId = 'foo';
-    o.productDetails = buildUnnamed55();
+    o.productDetails = buildUnnamed56();
     o.purchaseTransaction = buildGoogleCloudRetailV2PurchaseTransaction();
     o.referrerUri = 'foo';
     o.searchQuery = 'foo';
@@ -2756,7 +2802,7 @@
 void checkGoogleCloudRetailV2UserEvent(api.GoogleCloudRetailV2UserEvent o) {
   buildCounterGoogleCloudRetailV2UserEvent++;
   if (buildCounterGoogleCloudRetailV2UserEvent < 3) {
-    checkUnnamed52(o.attributes!);
+    checkUnnamed53(o.attributes!);
     unittest.expect(
       o.attributionToken!,
       unittest.equals('foo'),
@@ -2774,7 +2820,7 @@
       o.eventType!,
       unittest.equals('foo'),
     );
-    checkUnnamed53(o.experimentIds!);
+    checkUnnamed54(o.experimentIds!);
     unittest.expect(
       o.filter!,
       unittest.equals('foo'),
@@ -2787,12 +2833,12 @@
       o.orderBy!,
       unittest.equals('foo'),
     );
-    checkUnnamed54(o.pageCategories!);
+    checkUnnamed55(o.pageCategories!);
     unittest.expect(
       o.pageViewId!,
       unittest.equals('foo'),
     );
-    checkUnnamed55(o.productDetails!);
+    checkUnnamed56(o.productDetails!);
     checkGoogleCloudRetailV2PurchaseTransaction(o.purchaseTransaction!);
     unittest.expect(
       o.referrerUri!,
@@ -2819,12 +2865,12 @@
   buildCounterGoogleCloudRetailV2UserEvent--;
 }
 
-core.List<api.GoogleCloudRetailV2UserEvent> buildUnnamed56() => [
+core.List<api.GoogleCloudRetailV2UserEvent> buildUnnamed57() => [
       buildGoogleCloudRetailV2UserEvent(),
       buildGoogleCloudRetailV2UserEvent(),
     ];
 
-void checkUnnamed56(core.List<api.GoogleCloudRetailV2UserEvent> o) {
+void checkUnnamed57(core.List<api.GoogleCloudRetailV2UserEvent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudRetailV2UserEvent(o[0]);
   checkGoogleCloudRetailV2UserEvent(o[1]);
@@ -2836,7 +2882,7 @@
   final o = api.GoogleCloudRetailV2UserEventInlineSource();
   buildCounterGoogleCloudRetailV2UserEventInlineSource++;
   if (buildCounterGoogleCloudRetailV2UserEventInlineSource < 3) {
-    o.userEvents = buildUnnamed56();
+    o.userEvents = buildUnnamed57();
   }
   buildCounterGoogleCloudRetailV2UserEventInlineSource--;
   return o;
@@ -2846,7 +2892,7 @@
     api.GoogleCloudRetailV2UserEventInlineSource o) {
   buildCounterGoogleCloudRetailV2UserEventInlineSource++;
   if (buildCounterGoogleCloudRetailV2UserEventInlineSource < 3) {
-    checkUnnamed56(o.userEvents!);
+    checkUnnamed57(o.userEvents!);
   }
   buildCounterGoogleCloudRetailV2UserEventInlineSource--;
 }
@@ -2910,12 +2956,12 @@
   buildCounterGoogleCloudRetailV2UserInfo--;
 }
 
-core.List<api.GoogleLongrunningOperation> buildUnnamed57() => [
+core.List<api.GoogleLongrunningOperation> buildUnnamed58() => [
       buildGoogleLongrunningOperation(),
       buildGoogleLongrunningOperation(),
     ];
 
-void checkUnnamed57(core.List<api.GoogleLongrunningOperation> o) {
+void checkUnnamed58(core.List<api.GoogleLongrunningOperation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleLongrunningOperation(o[0]);
   checkGoogleLongrunningOperation(o[1]);
@@ -2928,7 +2974,7 @@
   buildCounterGoogleLongrunningListOperationsResponse++;
   if (buildCounterGoogleLongrunningListOperationsResponse < 3) {
     o.nextPageToken = 'foo';
-    o.operations = buildUnnamed57();
+    o.operations = buildUnnamed58();
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
   return o;
@@ -2942,12 +2988,12 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed57(o.operations!);
+    checkUnnamed58(o.operations!);
   }
   buildCounterGoogleLongrunningListOperationsResponse--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed58() => {
+core.Map<core.String, core.Object?> buildUnnamed59() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -2960,7 +3006,7 @@
       },
     };
 
-void checkUnnamed58(core.Map<core.String, core.Object?> o) {
+void checkUnnamed59(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted9 = (o['x']!) as core.Map;
   unittest.expect(casted9, unittest.hasLength(3));
@@ -2992,7 +3038,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed59() => {
+core.Map<core.String, core.Object?> buildUnnamed60() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -3005,7 +3051,7 @@
       },
     };
 
-void checkUnnamed59(core.Map<core.String, core.Object?> o) {
+void checkUnnamed60(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted11 = (o['x']!) as core.Map;
   unittest.expect(casted11, unittest.hasLength(3));
@@ -3044,9 +3090,9 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     o.done = true;
     o.error = buildGoogleRpcStatus();
-    o.metadata = buildUnnamed58();
+    o.metadata = buildUnnamed59();
     o.name = 'foo';
-    o.response = buildUnnamed59();
+    o.response = buildUnnamed60();
   }
   buildCounterGoogleLongrunningOperation--;
   return o;
@@ -3057,12 +3103,12 @@
   if (buildCounterGoogleLongrunningOperation < 3) {
     unittest.expect(o.done!, unittest.isTrue);
     checkGoogleRpcStatus(o.error!);
-    checkUnnamed58(o.metadata!);
+    checkUnnamed59(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
     );
-    checkUnnamed59(o.response!);
+    checkUnnamed60(o.response!);
   }
   buildCounterGoogleLongrunningOperation--;
 }
@@ -3082,7 +3128,7 @@
   buildCounterGoogleProtobufEmpty--;
 }
 
-core.Map<core.String, core.Object?> buildUnnamed60() => {
+core.Map<core.String, core.Object?> buildUnnamed61() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -3095,7 +3141,7 @@
       },
     };
 
-void checkUnnamed60(core.Map<core.String, core.Object?> o) {
+void checkUnnamed61(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
   var casted13 = (o['x']!) as core.Map;
   unittest.expect(casted13, unittest.hasLength(3));
@@ -3127,15 +3173,15 @@
   );
 }
 
-core.List<core.Map<core.String, core.Object?>> buildUnnamed61() => [
-      buildUnnamed60(),
-      buildUnnamed60(),
+core.List<core.Map<core.String, core.Object?>> buildUnnamed62() => [
+      buildUnnamed61(),
+      buildUnnamed61(),
     ];
 
-void checkUnnamed61(core.List<core.Map<core.String, core.Object?>> o) {
+void checkUnnamed62(core.List<core.Map<core.String, core.Object?>> o) {
   unittest.expect(o, unittest.hasLength(2));
-  checkUnnamed60(o[0]);
-  checkUnnamed60(o[1]);
+  checkUnnamed61(o[0]);
+  checkUnnamed61(o[1]);
 }
 
 core.int buildCounterGoogleRpcStatus = 0;
@@ -3144,7 +3190,7 @@
   buildCounterGoogleRpcStatus++;
   if (buildCounterGoogleRpcStatus < 3) {
     o.code = 42;
-    o.details = buildUnnamed61();
+    o.details = buildUnnamed62();
     o.message = 'foo';
   }
   buildCounterGoogleRpcStatus--;
@@ -3158,7 +3204,7 @@
       o.code!,
       unittest.equals(42),
     );
-    checkUnnamed61(o.details!);
+    checkUnnamed62(o.details!);
     unittest.expect(
       o.message!,
       unittest.equals('foo'),
@@ -3199,12 +3245,12 @@
   buildCounterGoogleTypeDate--;
 }
 
-core.List<core.String> buildUnnamed62() => [
+core.List<core.String> buildUnnamed63() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed62(core.List<core.String> o) {
+void checkUnnamed63(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -3684,6 +3730,18 @@
   });
 
   unittest.group(
+      'obj-schema-GoogleCloudRetailV2SearchRequestPersonalizationSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudRetailV2SearchRequestPersonalizationSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.GoogleCloudRetailV2SearchRequestPersonalizationSpec.fromJson(
+              oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudRetailV2SearchRequestPersonalizationSpec(od);
+    });
+  });
+
+  unittest.group(
       'obj-schema-GoogleCloudRetailV2SearchRequestQueryExpansionSpec', () {
     unittest.test('to-json--from-json', () async {
       final o = buildGoogleCloudRetailV2SearchRequestQueryExpansionSpec();
@@ -3866,7 +3924,7 @@
       final arg_catalog = 'foo';
       final arg_dataset = 'foo';
       final arg_deviceType = 'foo';
-      final arg_languageCodes = buildUnnamed62();
+      final arg_languageCodes = buildUnnamed63();
       final arg_maxSuggestions = 42;
       final arg_query = 'foo';
       final arg_visitorId = 'foo';
@@ -5621,4 +5679,132 @@
           response as api.GoogleLongrunningListOperationsResponse);
     });
   });
+
+  unittest.group('resource-ProjectsOperationsResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRetailApi(mock).projects.operations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGoogleLongrunningOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkGoogleLongrunningOperation(
+          response as api.GoogleLongrunningOperation);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRetailApi(mock).projects.operations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v2/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp =
+            convert.json.encode(buildGoogleLongrunningListOperationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkGoogleLongrunningListOperationsResponse(
+          response as api.GoogleLongrunningListOperationsResponse);
+    });
+  });
 }
diff --git a/generated/googleapis/test/run/v1_test.dart b/generated/googleapis/test/run/v1_test.dart
index dbc2016..83341e8 100644
--- a/generated/googleapis/test/run/v1_test.dart
+++ b/generated/googleapis/test/run/v1_test.dart
@@ -569,6 +569,33 @@
   buildCounterContainerPort--;
 }
 
+core.int buildCounterContainerStatus = 0;
+api.ContainerStatus buildContainerStatus() {
+  final o = api.ContainerStatus();
+  buildCounterContainerStatus++;
+  if (buildCounterContainerStatus < 3) {
+    o.imageDigest = 'foo';
+    o.name = 'foo';
+  }
+  buildCounterContainerStatus--;
+  return o;
+}
+
+void checkContainerStatus(api.ContainerStatus o) {
+  buildCounterContainerStatus++;
+  if (buildCounterContainerStatus < 3) {
+    unittest.expect(
+      o.imageDigest!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterContainerStatus--;
+}
+
 core.int buildCounterDomainMapping = 0;
 api.DomainMapping buildDomainMapping() {
   final o = api.DomainMapping();
@@ -801,6 +828,181 @@
   buildCounterExecAction--;
 }
 
+core.int buildCounterExecution = 0;
+api.Execution buildExecution() {
+  final o = api.Execution();
+  buildCounterExecution++;
+  if (buildCounterExecution < 3) {
+    o.apiVersion = 'foo';
+    o.kind = 'foo';
+    o.metadata = buildObjectMeta();
+    o.spec = buildExecutionSpec();
+    o.status = buildExecutionStatus();
+  }
+  buildCounterExecution--;
+  return o;
+}
+
+void checkExecution(api.Execution o) {
+  buildCounterExecution++;
+  if (buildCounterExecution < 3) {
+    unittest.expect(
+      o.apiVersion!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.kind!,
+      unittest.equals('foo'),
+    );
+    checkObjectMeta(o.metadata!);
+    checkExecutionSpec(o.spec!);
+    checkExecutionStatus(o.status!);
+  }
+  buildCounterExecution--;
+}
+
+core.int buildCounterExecutionReference = 0;
+api.ExecutionReference buildExecutionReference() {
+  final o = api.ExecutionReference();
+  buildCounterExecutionReference++;
+  if (buildCounterExecutionReference < 3) {
+    o.creationTimestamp = 'foo';
+    o.name = 'foo';
+  }
+  buildCounterExecutionReference--;
+  return o;
+}
+
+void checkExecutionReference(api.ExecutionReference o) {
+  buildCounterExecutionReference++;
+  if (buildCounterExecutionReference < 3) {
+    unittest.expect(
+      o.creationTimestamp!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterExecutionReference--;
+}
+
+core.int buildCounterExecutionSpec = 0;
+api.ExecutionSpec buildExecutionSpec() {
+  final o = api.ExecutionSpec();
+  buildCounterExecutionSpec++;
+  if (buildCounterExecutionSpec < 3) {
+    o.parallelism = 42;
+    o.taskCount = 42;
+    o.template = buildTaskTemplateSpec();
+  }
+  buildCounterExecutionSpec--;
+  return o;
+}
+
+void checkExecutionSpec(api.ExecutionSpec o) {
+  buildCounterExecutionSpec++;
+  if (buildCounterExecutionSpec < 3) {
+    unittest.expect(
+      o.parallelism!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.taskCount!,
+      unittest.equals(42),
+    );
+    checkTaskTemplateSpec(o.template!);
+  }
+  buildCounterExecutionSpec--;
+}
+
+core.List<api.GoogleCloudRunV1Condition> buildUnnamed14() => [
+      buildGoogleCloudRunV1Condition(),
+      buildGoogleCloudRunV1Condition(),
+    ];
+
+void checkUnnamed14(core.List<api.GoogleCloudRunV1Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudRunV1Condition(o[0]);
+  checkGoogleCloudRunV1Condition(o[1]);
+}
+
+core.int buildCounterExecutionStatus = 0;
+api.ExecutionStatus buildExecutionStatus() {
+  final o = api.ExecutionStatus();
+  buildCounterExecutionStatus++;
+  if (buildCounterExecutionStatus < 3) {
+    o.completionTime = 'foo';
+    o.conditions = buildUnnamed14();
+    o.failedCount = 42;
+    o.logUri = 'foo';
+    o.observedGeneration = 42;
+    o.runningCount = 42;
+    o.startTime = 'foo';
+    o.succeededCount = 42;
+  }
+  buildCounterExecutionStatus--;
+  return o;
+}
+
+void checkExecutionStatus(api.ExecutionStatus o) {
+  buildCounterExecutionStatus++;
+  if (buildCounterExecutionStatus < 3) {
+    unittest.expect(
+      o.completionTime!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed14(o.conditions!);
+    unittest.expect(
+      o.failedCount!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.logUri!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.observedGeneration!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.runningCount!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.startTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.succeededCount!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterExecutionStatus--;
+}
+
+core.int buildCounterExecutionTemplateSpec = 0;
+api.ExecutionTemplateSpec buildExecutionTemplateSpec() {
+  final o = api.ExecutionTemplateSpec();
+  buildCounterExecutionTemplateSpec++;
+  if (buildCounterExecutionTemplateSpec < 3) {
+    o.metadata = buildObjectMeta();
+    o.spec = buildExecutionSpec();
+  }
+  buildCounterExecutionTemplateSpec--;
+  return o;
+}
+
+void checkExecutionTemplateSpec(api.ExecutionTemplateSpec o) {
+  buildCounterExecutionTemplateSpec++;
+  if (buildCounterExecutionTemplateSpec < 3) {
+    checkObjectMeta(o.metadata!);
+    checkExecutionSpec(o.spec!);
+  }
+  buildCounterExecutionTemplateSpec--;
+}
+
 core.int buildCounterExpr = 0;
 api.Expr buildExpr() {
   final o = api.Expr();
@@ -885,12 +1087,97 @@
   buildCounterGoogleCloudRunV1Condition--;
 }
 
-core.List<api.HTTPHeader> buildUnnamed14() => [
+core.Map<core.String, core.Object?> buildUnnamed15() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed15(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o['x']!) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(
+    casted1['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted1['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted1['string'],
+    unittest.equals('foo'),
+  );
+  var casted2 = (o['y']!) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(
+    casted2['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted2['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted2['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.Map<core.String, core.Object?>> buildUnnamed16() => [
+      buildUnnamed15(),
+      buildUnnamed15(),
+    ];
+
+void checkUnnamed16(core.List<core.Map<core.String, core.Object?>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed15(o[0]);
+  checkUnnamed15(o[1]);
+}
+
+core.int buildCounterGoogleRpcStatus = 0;
+api.GoogleRpcStatus buildGoogleRpcStatus() {
+  final o = api.GoogleRpcStatus();
+  buildCounterGoogleRpcStatus++;
+  if (buildCounterGoogleRpcStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed16();
+    o.message = 'foo';
+  }
+  buildCounterGoogleRpcStatus--;
+  return o;
+}
+
+void checkGoogleRpcStatus(api.GoogleRpcStatus o) {
+  buildCounterGoogleRpcStatus++;
+  if (buildCounterGoogleRpcStatus < 3) {
+    unittest.expect(
+      o.code!,
+      unittest.equals(42),
+    );
+    checkUnnamed16(o.details!);
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleRpcStatus--;
+}
+
+core.List<api.HTTPHeader> buildUnnamed17() => [
       buildHTTPHeader(),
       buildHTTPHeader(),
     ];
 
-void checkUnnamed14(core.List<api.HTTPHeader> o) {
+void checkUnnamed17(core.List<api.HTTPHeader> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkHTTPHeader(o[0]);
   checkHTTPHeader(o[1]);
@@ -902,7 +1189,7 @@
   buildCounterHTTPGetAction++;
   if (buildCounterHTTPGetAction < 3) {
     o.host = 'foo';
-    o.httpHeaders = buildUnnamed14();
+    o.httpHeaders = buildUnnamed17();
     o.path = 'foo';
     o.scheme = 'foo';
   }
@@ -917,7 +1204,7 @@
       o.host!,
       unittest.equals('foo'),
     );
-    checkUnnamed14(o.httpHeaders!);
+    checkUnnamed17(o.httpHeaders!);
     unittest.expect(
       o.path!,
       unittest.equals('foo'),
@@ -957,6 +1244,113 @@
   buildCounterHTTPHeader--;
 }
 
+core.int buildCounterJob = 0;
+api.Job buildJob() {
+  final o = api.Job();
+  buildCounterJob++;
+  if (buildCounterJob < 3) {
+    o.apiVersion = 'foo';
+    o.kind = 'foo';
+    o.metadata = buildObjectMeta();
+    o.spec = buildJobSpec();
+    o.status = buildJobStatus();
+  }
+  buildCounterJob--;
+  return o;
+}
+
+void checkJob(api.Job o) {
+  buildCounterJob++;
+  if (buildCounterJob < 3) {
+    unittest.expect(
+      o.apiVersion!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.kind!,
+      unittest.equals('foo'),
+    );
+    checkObjectMeta(o.metadata!);
+    checkJobSpec(o.spec!);
+    checkJobStatus(o.status!);
+  }
+  buildCounterJob--;
+}
+
+core.int buildCounterJobSpec = 0;
+api.JobSpec buildJobSpec() {
+  final o = api.JobSpec();
+  buildCounterJobSpec++;
+  if (buildCounterJobSpec < 3) {
+    o.template = buildExecutionTemplateSpec();
+  }
+  buildCounterJobSpec--;
+  return o;
+}
+
+void checkJobSpec(api.JobSpec o) {
+  buildCounterJobSpec++;
+  if (buildCounterJobSpec < 3) {
+    checkExecutionTemplateSpec(o.template!);
+  }
+  buildCounterJobSpec--;
+}
+
+core.List<api.GoogleCloudRunV1Condition> buildUnnamed18() => [
+      buildGoogleCloudRunV1Condition(),
+      buildGoogleCloudRunV1Condition(),
+    ];
+
+void checkUnnamed18(core.List<api.GoogleCloudRunV1Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudRunV1Condition(o[0]);
+  checkGoogleCloudRunV1Condition(o[1]);
+}
+
+core.List<api.ContainerStatus> buildUnnamed19() => [
+      buildContainerStatus(),
+      buildContainerStatus(),
+    ];
+
+void checkUnnamed19(core.List<api.ContainerStatus> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainerStatus(o[0]);
+  checkContainerStatus(o[1]);
+}
+
+core.int buildCounterJobStatus = 0;
+api.JobStatus buildJobStatus() {
+  final o = api.JobStatus();
+  buildCounterJobStatus++;
+  if (buildCounterJobStatus < 3) {
+    o.conditions = buildUnnamed18();
+    o.containerStatuses = buildUnnamed19();
+    o.executionCount = 42;
+    o.latestCreatedExecution = buildExecutionReference();
+    o.observedGeneration = 42;
+  }
+  buildCounterJobStatus--;
+  return o;
+}
+
+void checkJobStatus(api.JobStatus o) {
+  buildCounterJobStatus++;
+  if (buildCounterJobStatus < 3) {
+    checkUnnamed18(o.conditions!);
+    checkUnnamed19(o.containerStatuses!);
+    unittest.expect(
+      o.executionCount!,
+      unittest.equals(42),
+    );
+    checkExecutionReference(o.latestCreatedExecution!);
+    unittest.expect(
+      o.observedGeneration!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterJobStatus--;
+}
+
 core.int buildCounterKeyToPath = 0;
 api.KeyToPath buildKeyToPath() {
   final o = api.KeyToPath();
@@ -989,12 +1383,12 @@
   buildCounterKeyToPath--;
 }
 
-core.List<api.AuthorizedDomain> buildUnnamed15() => [
+core.List<api.AuthorizedDomain> buildUnnamed20() => [
       buildAuthorizedDomain(),
       buildAuthorizedDomain(),
     ];
 
-void checkUnnamed15(core.List<api.AuthorizedDomain> o) {
+void checkUnnamed20(core.List<api.AuthorizedDomain> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuthorizedDomain(o[0]);
   checkAuthorizedDomain(o[1]);
@@ -1005,7 +1399,7 @@
   final o = api.ListAuthorizedDomainsResponse();
   buildCounterListAuthorizedDomainsResponse++;
   if (buildCounterListAuthorizedDomainsResponse < 3) {
-    o.domains = buildUnnamed15();
+    o.domains = buildUnnamed20();
     o.nextPageToken = 'foo';
   }
   buildCounterListAuthorizedDomainsResponse--;
@@ -1015,7 +1409,7 @@
 void checkListAuthorizedDomainsResponse(api.ListAuthorizedDomainsResponse o) {
   buildCounterListAuthorizedDomainsResponse++;
   if (buildCounterListAuthorizedDomainsResponse < 3) {
-    checkUnnamed15(o.domains!);
+    checkUnnamed20(o.domains!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1024,23 +1418,23 @@
   buildCounterListAuthorizedDomainsResponse--;
 }
 
-core.List<api.Configuration> buildUnnamed16() => [
+core.List<api.Configuration> buildUnnamed21() => [
       buildConfiguration(),
       buildConfiguration(),
     ];
 
-void checkUnnamed16(core.List<api.Configuration> o) {
+void checkUnnamed21(core.List<api.Configuration> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkConfiguration(o[0]);
   checkConfiguration(o[1]);
 }
 
-core.List<core.String> buildUnnamed17() => [
+core.List<core.String> buildUnnamed22() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed17(core.List<core.String> o) {
+void checkUnnamed22(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1058,10 +1452,10 @@
   buildCounterListConfigurationsResponse++;
   if (buildCounterListConfigurationsResponse < 3) {
     o.apiVersion = 'foo';
-    o.items = buildUnnamed16();
+    o.items = buildUnnamed21();
     o.kind = 'foo';
     o.metadata = buildListMeta();
-    o.unreachable = buildUnnamed17();
+    o.unreachable = buildUnnamed22();
   }
   buildCounterListConfigurationsResponse--;
   return o;
@@ -1074,34 +1468,34 @@
       o.apiVersion!,
       unittest.equals('foo'),
     );
-    checkUnnamed16(o.items!);
+    checkUnnamed21(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
     );
     checkListMeta(o.metadata!);
-    checkUnnamed17(o.unreachable!);
+    checkUnnamed22(o.unreachable!);
   }
   buildCounterListConfigurationsResponse--;
 }
 
-core.List<api.DomainMapping> buildUnnamed18() => [
+core.List<api.DomainMapping> buildUnnamed23() => [
       buildDomainMapping(),
       buildDomainMapping(),
     ];
 
-void checkUnnamed18(core.List<api.DomainMapping> o) {
+void checkUnnamed23(core.List<api.DomainMapping> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDomainMapping(o[0]);
   checkDomainMapping(o[1]);
 }
 
-core.List<core.String> buildUnnamed19() => [
+core.List<core.String> buildUnnamed24() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed19(core.List<core.String> o) {
+void checkUnnamed24(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1119,10 +1513,10 @@
   buildCounterListDomainMappingsResponse++;
   if (buildCounterListDomainMappingsResponse < 3) {
     o.apiVersion = 'foo';
-    o.items = buildUnnamed18();
+    o.items = buildUnnamed23();
     o.kind = 'foo';
     o.metadata = buildListMeta();
-    o.unreachable = buildUnnamed19();
+    o.unreachable = buildUnnamed24();
   }
   buildCounterListDomainMappingsResponse--;
   return o;
@@ -1135,23 +1529,145 @@
       o.apiVersion!,
       unittest.equals('foo'),
     );
-    checkUnnamed18(o.items!);
+    checkUnnamed23(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
     );
     checkListMeta(o.metadata!);
-    checkUnnamed19(o.unreachable!);
+    checkUnnamed24(o.unreachable!);
   }
   buildCounterListDomainMappingsResponse--;
 }
 
-core.List<api.Location> buildUnnamed20() => [
+core.List<api.Execution> buildUnnamed25() => [
+      buildExecution(),
+      buildExecution(),
+    ];
+
+void checkUnnamed25(core.List<api.Execution> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkExecution(o[0]);
+  checkExecution(o[1]);
+}
+
+core.List<core.String> buildUnnamed26() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed26(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListExecutionsResponse = 0;
+api.ListExecutionsResponse buildListExecutionsResponse() {
+  final o = api.ListExecutionsResponse();
+  buildCounterListExecutionsResponse++;
+  if (buildCounterListExecutionsResponse < 3) {
+    o.apiVersion = 'foo';
+    o.items = buildUnnamed25();
+    o.kind = 'foo';
+    o.metadata = buildListMeta();
+    o.unreachable = buildUnnamed26();
+  }
+  buildCounterListExecutionsResponse--;
+  return o;
+}
+
+void checkListExecutionsResponse(api.ListExecutionsResponse o) {
+  buildCounterListExecutionsResponse++;
+  if (buildCounterListExecutionsResponse < 3) {
+    unittest.expect(
+      o.apiVersion!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed25(o.items!);
+    unittest.expect(
+      o.kind!,
+      unittest.equals('foo'),
+    );
+    checkListMeta(o.metadata!);
+    checkUnnamed26(o.unreachable!);
+  }
+  buildCounterListExecutionsResponse--;
+}
+
+core.List<api.Job> buildUnnamed27() => [
+      buildJob(),
+      buildJob(),
+    ];
+
+void checkUnnamed27(core.List<api.Job> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkJob(o[0]);
+  checkJob(o[1]);
+}
+
+core.List<core.String> buildUnnamed28() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed28(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListJobsResponse = 0;
+api.ListJobsResponse buildListJobsResponse() {
+  final o = api.ListJobsResponse();
+  buildCounterListJobsResponse++;
+  if (buildCounterListJobsResponse < 3) {
+    o.apiVersion = 'foo';
+    o.items = buildUnnamed27();
+    o.kind = 'foo';
+    o.metadata = buildListMeta();
+    o.unreachable = buildUnnamed28();
+  }
+  buildCounterListJobsResponse--;
+  return o;
+}
+
+void checkListJobsResponse(api.ListJobsResponse o) {
+  buildCounterListJobsResponse++;
+  if (buildCounterListJobsResponse < 3) {
+    unittest.expect(
+      o.apiVersion!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed27(o.items!);
+    unittest.expect(
+      o.kind!,
+      unittest.equals('foo'),
+    );
+    checkListMeta(o.metadata!);
+    checkUnnamed28(o.unreachable!);
+  }
+  buildCounterListJobsResponse--;
+}
+
+core.List<api.Location> buildUnnamed29() => [
       buildLocation(),
       buildLocation(),
     ];
 
-void checkUnnamed20(core.List<api.Location> o) {
+void checkUnnamed29(core.List<api.Location> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocation(o[0]);
   checkLocation(o[1]);
@@ -1162,7 +1678,7 @@
   final o = api.ListLocationsResponse();
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    o.locations = buildUnnamed20();
+    o.locations = buildUnnamed29();
     o.nextPageToken = 'foo';
   }
   buildCounterListLocationsResponse--;
@@ -1172,7 +1688,7 @@
 void checkListLocationsResponse(api.ListLocationsResponse o) {
   buildCounterListLocationsResponse++;
   if (buildCounterListLocationsResponse < 3) {
-    checkUnnamed20(o.locations!);
+    checkUnnamed29(o.locations!);
     unittest.expect(
       o.nextPageToken!,
       unittest.equals('foo'),
@@ -1213,23 +1729,23 @@
   buildCounterListMeta--;
 }
 
-core.List<api.Revision> buildUnnamed21() => [
+core.List<api.Revision> buildUnnamed30() => [
       buildRevision(),
       buildRevision(),
     ];
 
-void checkUnnamed21(core.List<api.Revision> o) {
+void checkUnnamed30(core.List<api.Revision> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRevision(o[0]);
   checkRevision(o[1]);
 }
 
-core.List<core.String> buildUnnamed22() => [
+core.List<core.String> buildUnnamed31() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed22(core.List<core.String> o) {
+void checkUnnamed31(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1247,10 +1763,10 @@
   buildCounterListRevisionsResponse++;
   if (buildCounterListRevisionsResponse < 3) {
     o.apiVersion = 'foo';
-    o.items = buildUnnamed21();
+    o.items = buildUnnamed30();
     o.kind = 'foo';
     o.metadata = buildListMeta();
-    o.unreachable = buildUnnamed22();
+    o.unreachable = buildUnnamed31();
   }
   buildCounterListRevisionsResponse--;
   return o;
@@ -1263,34 +1779,34 @@
       o.apiVersion!,
       unittest.equals('foo'),
     );
-    checkUnnamed21(o.items!);
+    checkUnnamed30(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
     );
     checkListMeta(o.metadata!);
-    checkUnnamed22(o.unreachable!);
+    checkUnnamed31(o.unreachable!);
   }
   buildCounterListRevisionsResponse--;
 }
 
-core.List<api.Route> buildUnnamed23() => [
+core.List<api.Route> buildUnnamed32() => [
       buildRoute(),
       buildRoute(),
     ];
 
-void checkUnnamed23(core.List<api.Route> o) {
+void checkUnnamed32(core.List<api.Route> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkRoute(o[0]);
   checkRoute(o[1]);
 }
 
-core.List<core.String> buildUnnamed24() => [
+core.List<core.String> buildUnnamed33() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed24(core.List<core.String> o) {
+void checkUnnamed33(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1308,10 +1824,10 @@
   buildCounterListRoutesResponse++;
   if (buildCounterListRoutesResponse < 3) {
     o.apiVersion = 'foo';
-    o.items = buildUnnamed23();
+    o.items = buildUnnamed32();
     o.kind = 'foo';
     o.metadata = buildListMeta();
-    o.unreachable = buildUnnamed24();
+    o.unreachable = buildUnnamed33();
   }
   buildCounterListRoutesResponse--;
   return o;
@@ -1324,34 +1840,34 @@
       o.apiVersion!,
       unittest.equals('foo'),
     );
-    checkUnnamed23(o.items!);
+    checkUnnamed32(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
     );
     checkListMeta(o.metadata!);
-    checkUnnamed24(o.unreachable!);
+    checkUnnamed33(o.unreachable!);
   }
   buildCounterListRoutesResponse--;
 }
 
-core.List<api.Service> buildUnnamed25() => [
+core.List<api.Service> buildUnnamed34() => [
       buildService(),
       buildService(),
     ];
 
-void checkUnnamed25(core.List<api.Service> o) {
+void checkUnnamed34(core.List<api.Service> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkService(o[0]);
   checkService(o[1]);
 }
 
-core.List<core.String> buildUnnamed26() => [
+core.List<core.String> buildUnnamed35() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed26(core.List<core.String> o) {
+void checkUnnamed35(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1369,10 +1885,10 @@
   buildCounterListServicesResponse++;
   if (buildCounterListServicesResponse < 3) {
     o.apiVersion = 'foo';
-    o.items = buildUnnamed25();
+    o.items = buildUnnamed34();
     o.kind = 'foo';
     o.metadata = buildListMeta();
-    o.unreachable = buildUnnamed26();
+    o.unreachable = buildUnnamed35();
   }
   buildCounterListServicesResponse--;
   return o;
@@ -1385,17 +1901,78 @@
       o.apiVersion!,
       unittest.equals('foo'),
     );
-    checkUnnamed25(o.items!);
+    checkUnnamed34(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
     );
     checkListMeta(o.metadata!);
-    checkUnnamed26(o.unreachable!);
+    checkUnnamed35(o.unreachable!);
   }
   buildCounterListServicesResponse--;
 }
 
+core.List<api.Task> buildUnnamed36() => [
+      buildTask(),
+      buildTask(),
+    ];
+
+void checkUnnamed36(core.List<api.Task> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkTask(o[0]);
+  checkTask(o[1]);
+}
+
+core.List<core.String> buildUnnamed37() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed37(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListTasksResponse = 0;
+api.ListTasksResponse buildListTasksResponse() {
+  final o = api.ListTasksResponse();
+  buildCounterListTasksResponse++;
+  if (buildCounterListTasksResponse < 3) {
+    o.apiVersion = 'foo';
+    o.items = buildUnnamed36();
+    o.kind = 'foo';
+    o.metadata = buildListMeta();
+    o.unreachable = buildUnnamed37();
+  }
+  buildCounterListTasksResponse--;
+  return o;
+}
+
+void checkListTasksResponse(api.ListTasksResponse o) {
+  buildCounterListTasksResponse++;
+  if (buildCounterListTasksResponse < 3) {
+    unittest.expect(
+      o.apiVersion!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed36(o.items!);
+    unittest.expect(
+      o.kind!,
+      unittest.equals('foo'),
+    );
+    checkListMeta(o.metadata!);
+    checkUnnamed37(o.unreachable!);
+  }
+  buildCounterListTasksResponse--;
+}
+
 core.int buildCounterLocalObjectReference = 0;
 api.LocalObjectReference buildLocalObjectReference() {
   final o = api.LocalObjectReference();
@@ -1418,12 +1995,12 @@
   buildCounterLocalObjectReference--;
 }
 
-core.Map<core.String, core.String> buildUnnamed27() => {
+core.Map<core.String, core.String> buildUnnamed38() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed27(core.Map<core.String, core.String> o) {
+void checkUnnamed38(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1435,7 +2012,7 @@
   );
 }
 
-core.Map<core.String, core.Object?> buildUnnamed28() => {
+core.Map<core.String, core.Object?> buildUnnamed39() => {
       'x': {
         'list': [1, 2, 3],
         'bool': true,
@@ -1448,34 +2025,34 @@
       },
     };
 
-void checkUnnamed28(core.Map<core.String, core.Object?> o) {
+void checkUnnamed39(core.Map<core.String, core.Object?> o) {
   unittest.expect(o, unittest.hasLength(2));
-  var casted1 = (o['x']!) as core.Map;
-  unittest.expect(casted1, unittest.hasLength(3));
+  var casted3 = (o['x']!) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
   unittest.expect(
-    casted1['list'],
+    casted3['list'],
     unittest.equals([1, 2, 3]),
   );
   unittest.expect(
-    casted1['bool'],
+    casted3['bool'],
     unittest.equals(true),
   );
   unittest.expect(
-    casted1['string'],
+    casted3['string'],
     unittest.equals('foo'),
   );
-  var casted2 = (o['y']!) as core.Map;
-  unittest.expect(casted2, unittest.hasLength(3));
+  var casted4 = (o['y']!) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
   unittest.expect(
-    casted2['list'],
+    casted4['list'],
     unittest.equals([1, 2, 3]),
   );
   unittest.expect(
-    casted2['bool'],
+    casted4['bool'],
     unittest.equals(true),
   );
   unittest.expect(
-    casted2['string'],
+    casted4['string'],
     unittest.equals('foo'),
   );
 }
@@ -1486,9 +2063,9 @@
   buildCounterLocation++;
   if (buildCounterLocation < 3) {
     o.displayName = 'foo';
-    o.labels = buildUnnamed27();
+    o.labels = buildUnnamed38();
     o.locationId = 'foo';
-    o.metadata = buildUnnamed28();
+    o.metadata = buildUnnamed39();
     o.name = 'foo';
   }
   buildCounterLocation--;
@@ -1502,12 +2079,12 @@
       o.displayName!,
       unittest.equals('foo'),
     );
-    checkUnnamed27(o.labels!);
+    checkUnnamed38(o.labels!);
     unittest.expect(
       o.locationId!,
       unittest.equals('foo'),
     );
-    checkUnnamed28(o.metadata!);
+    checkUnnamed39(o.metadata!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -1516,12 +2093,12 @@
   buildCounterLocation--;
 }
 
-core.Map<core.String, core.String> buildUnnamed29() => {
+core.Map<core.String, core.String> buildUnnamed40() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed29(core.Map<core.String, core.String> o) {
+void checkUnnamed40(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1533,12 +2110,12 @@
   );
 }
 
-core.List<core.String> buildUnnamed30() => [
+core.List<core.String> buildUnnamed41() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed30(core.List<core.String> o) {
+void checkUnnamed41(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1550,12 +2127,12 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed31() => {
+core.Map<core.String, core.String> buildUnnamed42() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed31(core.Map<core.String, core.String> o) {
+void checkUnnamed42(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1567,12 +2144,12 @@
   );
 }
 
-core.List<api.OwnerReference> buildUnnamed32() => [
+core.List<api.OwnerReference> buildUnnamed43() => [
       buildOwnerReference(),
       buildOwnerReference(),
     ];
 
-void checkUnnamed32(core.List<api.OwnerReference> o) {
+void checkUnnamed43(core.List<api.OwnerReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOwnerReference(o[0]);
   checkOwnerReference(o[1]);
@@ -1583,18 +2160,18 @@
   final o = api.ObjectMeta();
   buildCounterObjectMeta++;
   if (buildCounterObjectMeta < 3) {
-    o.annotations = buildUnnamed29();
+    o.annotations = buildUnnamed40();
     o.clusterName = 'foo';
     o.creationTimestamp = 'foo';
     o.deletionGracePeriodSeconds = 42;
     o.deletionTimestamp = 'foo';
-    o.finalizers = buildUnnamed30();
+    o.finalizers = buildUnnamed41();
     o.generateName = 'foo';
     o.generation = 42;
-    o.labels = buildUnnamed31();
+    o.labels = buildUnnamed42();
     o.name = 'foo';
     o.namespace = 'foo';
-    o.ownerReferences = buildUnnamed32();
+    o.ownerReferences = buildUnnamed43();
     o.resourceVersion = 'foo';
     o.selfLink = 'foo';
     o.uid = 'foo';
@@ -1606,7 +2183,7 @@
 void checkObjectMeta(api.ObjectMeta o) {
   buildCounterObjectMeta++;
   if (buildCounterObjectMeta < 3) {
-    checkUnnamed29(o.annotations!);
+    checkUnnamed40(o.annotations!);
     unittest.expect(
       o.clusterName!,
       unittest.equals('foo'),
@@ -1623,7 +2200,7 @@
       o.deletionTimestamp!,
       unittest.equals('foo'),
     );
-    checkUnnamed30(o.finalizers!);
+    checkUnnamed41(o.finalizers!);
     unittest.expect(
       o.generateName!,
       unittest.equals('foo'),
@@ -1632,7 +2209,7 @@
       o.generation!,
       unittest.equals(42),
     );
-    checkUnnamed31(o.labels!);
+    checkUnnamed42(o.labels!);
     unittest.expect(
       o.name!,
       unittest.equals('foo'),
@@ -1641,7 +2218,7 @@
       o.namespace!,
       unittest.equals('foo'),
     );
-    checkUnnamed32(o.ownerReferences!);
+    checkUnnamed43(o.ownerReferences!);
     unittest.expect(
       o.resourceVersion!,
       unittest.equals('foo'),
@@ -1699,23 +2276,23 @@
   buildCounterOwnerReference--;
 }
 
-core.List<api.AuditConfig> buildUnnamed33() => [
+core.List<api.AuditConfig> buildUnnamed44() => [
       buildAuditConfig(),
       buildAuditConfig(),
     ];
 
-void checkUnnamed33(core.List<api.AuditConfig> o) {
+void checkUnnamed44(core.List<api.AuditConfig> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAuditConfig(o[0]);
   checkAuditConfig(o[1]);
 }
 
-core.List<api.Binding> buildUnnamed34() => [
+core.List<api.Binding> buildUnnamed45() => [
       buildBinding(),
       buildBinding(),
     ];
 
-void checkUnnamed34(core.List<api.Binding> o) {
+void checkUnnamed45(core.List<api.Binding> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkBinding(o[0]);
   checkBinding(o[1]);
@@ -1726,8 +2303,8 @@
   final o = api.Policy();
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    o.auditConfigs = buildUnnamed33();
-    o.bindings = buildUnnamed34();
+    o.auditConfigs = buildUnnamed44();
+    o.bindings = buildUnnamed45();
     o.etag = 'foo';
     o.version = 42;
   }
@@ -1738,8 +2315,8 @@
 void checkPolicy(api.Policy o) {
   buildCounterPolicy++;
   if (buildCounterPolicy < 3) {
-    checkUnnamed33(o.auditConfigs!);
-    checkUnnamed34(o.bindings!);
+    checkUnnamed44(o.auditConfigs!);
+    checkUnnamed45(o.bindings!);
     unittest.expect(
       o.etag!,
       unittest.equals('foo'),
@@ -1832,12 +2409,12 @@
   buildCounterResourceRecord--;
 }
 
-core.Map<core.String, core.String> buildUnnamed35() => {
+core.Map<core.String, core.String> buildUnnamed46() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed35(core.Map<core.String, core.String> o) {
+void checkUnnamed46(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1849,12 +2426,12 @@
   );
 }
 
-core.Map<core.String, core.String> buildUnnamed36() => {
+core.Map<core.String, core.String> buildUnnamed47() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed36(core.Map<core.String, core.String> o) {
+void checkUnnamed47(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -1871,8 +2448,8 @@
   final o = api.ResourceRequirements();
   buildCounterResourceRequirements++;
   if (buildCounterResourceRequirements < 3) {
-    o.limits = buildUnnamed35();
-    o.requests = buildUnnamed36();
+    o.limits = buildUnnamed46();
+    o.requests = buildUnnamed47();
   }
   buildCounterResourceRequirements--;
   return o;
@@ -1881,8 +2458,8 @@
 void checkResourceRequirements(api.ResourceRequirements o) {
   buildCounterResourceRequirements++;
   if (buildCounterResourceRequirements < 3) {
-    checkUnnamed35(o.limits!);
-    checkUnnamed36(o.requests!);
+    checkUnnamed46(o.limits!);
+    checkUnnamed47(o.requests!);
   }
   buildCounterResourceRequirements--;
 }
@@ -1920,34 +2497,34 @@
   buildCounterRevision--;
 }
 
-core.List<api.Container> buildUnnamed37() => [
+core.List<api.Container> buildUnnamed48() => [
       buildContainer(),
       buildContainer(),
     ];
 
-void checkUnnamed37(core.List<api.Container> o) {
+void checkUnnamed48(core.List<api.Container> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkContainer(o[0]);
   checkContainer(o[1]);
 }
 
-core.List<api.LocalObjectReference> buildUnnamed38() => [
+core.List<api.LocalObjectReference> buildUnnamed49() => [
       buildLocalObjectReference(),
       buildLocalObjectReference(),
     ];
 
-void checkUnnamed38(core.List<api.LocalObjectReference> o) {
+void checkUnnamed49(core.List<api.LocalObjectReference> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkLocalObjectReference(o[0]);
   checkLocalObjectReference(o[1]);
 }
 
-core.List<api.Volume> buildUnnamed39() => [
+core.List<api.Volume> buildUnnamed50() => [
       buildVolume(),
       buildVolume(),
     ];
 
-void checkUnnamed39(core.List<api.Volume> o) {
+void checkUnnamed50(core.List<api.Volume> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkVolume(o[0]);
   checkVolume(o[1]);
@@ -1959,12 +2536,12 @@
   buildCounterRevisionSpec++;
   if (buildCounterRevisionSpec < 3) {
     o.containerConcurrency = 42;
-    o.containers = buildUnnamed37();
+    o.containers = buildUnnamed48();
     o.enableServiceLinks = true;
-    o.imagePullSecrets = buildUnnamed38();
+    o.imagePullSecrets = buildUnnamed49();
     o.serviceAccountName = 'foo';
     o.timeoutSeconds = 42;
-    o.volumes = buildUnnamed39();
+    o.volumes = buildUnnamed50();
   }
   buildCounterRevisionSpec--;
   return o;
@@ -1977,9 +2554,9 @@
       o.containerConcurrency!,
       unittest.equals(42),
     );
-    checkUnnamed37(o.containers!);
+    checkUnnamed48(o.containers!);
     unittest.expect(o.enableServiceLinks!, unittest.isTrue);
-    checkUnnamed38(o.imagePullSecrets!);
+    checkUnnamed49(o.imagePullSecrets!);
     unittest.expect(
       o.serviceAccountName!,
       unittest.equals('foo'),
@@ -1988,17 +2565,17 @@
       o.timeoutSeconds!,
       unittest.equals(42),
     );
-    checkUnnamed39(o.volumes!);
+    checkUnnamed50(o.volumes!);
   }
   buildCounterRevisionSpec--;
 }
 
-core.List<api.GoogleCloudRunV1Condition> buildUnnamed40() => [
+core.List<api.GoogleCloudRunV1Condition> buildUnnamed51() => [
       buildGoogleCloudRunV1Condition(),
       buildGoogleCloudRunV1Condition(),
     ];
 
-void checkUnnamed40(core.List<api.GoogleCloudRunV1Condition> o) {
+void checkUnnamed51(core.List<api.GoogleCloudRunV1Condition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudRunV1Condition(o[0]);
   checkGoogleCloudRunV1Condition(o[1]);
@@ -2009,7 +2586,7 @@
   final o = api.RevisionStatus();
   buildCounterRevisionStatus++;
   if (buildCounterRevisionStatus < 3) {
-    o.conditions = buildUnnamed40();
+    o.conditions = buildUnnamed51();
     o.imageDigest = 'foo';
     o.logUrl = 'foo';
     o.observedGeneration = 42;
@@ -2022,7 +2599,7 @@
 void checkRevisionStatus(api.RevisionStatus o) {
   buildCounterRevisionStatus++;
   if (buildCounterRevisionStatus < 3) {
-    checkUnnamed40(o.conditions!);
+    checkUnnamed51(o.conditions!);
     unittest.expect(
       o.imageDigest!,
       unittest.equals('foo'),
@@ -2097,12 +2674,12 @@
   buildCounterRoute--;
 }
 
-core.List<api.TrafficTarget> buildUnnamed41() => [
+core.List<api.TrafficTarget> buildUnnamed52() => [
       buildTrafficTarget(),
       buildTrafficTarget(),
     ];
 
-void checkUnnamed41(core.List<api.TrafficTarget> o) {
+void checkUnnamed52(core.List<api.TrafficTarget> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTrafficTarget(o[0]);
   checkTrafficTarget(o[1]);
@@ -2113,7 +2690,7 @@
   final o = api.RouteSpec();
   buildCounterRouteSpec++;
   if (buildCounterRouteSpec < 3) {
-    o.traffic = buildUnnamed41();
+    o.traffic = buildUnnamed52();
   }
   buildCounterRouteSpec--;
   return o;
@@ -2122,28 +2699,28 @@
 void checkRouteSpec(api.RouteSpec o) {
   buildCounterRouteSpec++;
   if (buildCounterRouteSpec < 3) {
-    checkUnnamed41(o.traffic!);
+    checkUnnamed52(o.traffic!);
   }
   buildCounterRouteSpec--;
 }
 
-core.List<api.GoogleCloudRunV1Condition> buildUnnamed42() => [
+core.List<api.GoogleCloudRunV1Condition> buildUnnamed53() => [
       buildGoogleCloudRunV1Condition(),
       buildGoogleCloudRunV1Condition(),
     ];
 
-void checkUnnamed42(core.List<api.GoogleCloudRunV1Condition> o) {
+void checkUnnamed53(core.List<api.GoogleCloudRunV1Condition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudRunV1Condition(o[0]);
   checkGoogleCloudRunV1Condition(o[1]);
 }
 
-core.List<api.TrafficTarget> buildUnnamed43() => [
+core.List<api.TrafficTarget> buildUnnamed54() => [
       buildTrafficTarget(),
       buildTrafficTarget(),
     ];
 
-void checkUnnamed43(core.List<api.TrafficTarget> o) {
+void checkUnnamed54(core.List<api.TrafficTarget> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTrafficTarget(o[0]);
   checkTrafficTarget(o[1]);
@@ -2155,9 +2732,9 @@
   buildCounterRouteStatus++;
   if (buildCounterRouteStatus < 3) {
     o.address = buildAddressable();
-    o.conditions = buildUnnamed42();
+    o.conditions = buildUnnamed53();
     o.observedGeneration = 42;
-    o.traffic = buildUnnamed43();
+    o.traffic = buildUnnamed54();
     o.url = 'foo';
   }
   buildCounterRouteStatus--;
@@ -2168,12 +2745,12 @@
   buildCounterRouteStatus++;
   if (buildCounterRouteStatus < 3) {
     checkAddressable(o.address!);
-    checkUnnamed42(o.conditions!);
+    checkUnnamed53(o.conditions!);
     unittest.expect(
       o.observedGeneration!,
       unittest.equals(42),
     );
-    checkUnnamed43(o.traffic!);
+    checkUnnamed54(o.traffic!);
     unittest.expect(
       o.url!,
       unittest.equals('foo'),
@@ -2182,6 +2759,21 @@
   buildCounterRouteStatus--;
 }
 
+core.int buildCounterRunJobRequest = 0;
+api.RunJobRequest buildRunJobRequest() {
+  final o = api.RunJobRequest();
+  buildCounterRunJobRequest++;
+  if (buildCounterRunJobRequest < 3) {}
+  buildCounterRunJobRequest--;
+  return o;
+}
+
+void checkRunJobRequest(api.RunJobRequest o) {
+  buildCounterRunJobRequest++;
+  if (buildCounterRunJobRequest < 3) {}
+  buildCounterRunJobRequest--;
+}
+
 core.int buildCounterSecretEnvSource = 0;
 api.SecretEnvSource buildSecretEnvSource() {
   final o = api.SecretEnvSource();
@@ -2239,12 +2831,12 @@
   buildCounterSecretKeySelector--;
 }
 
-core.List<api.KeyToPath> buildUnnamed44() => [
+core.List<api.KeyToPath> buildUnnamed55() => [
       buildKeyToPath(),
       buildKeyToPath(),
     ];
 
-void checkUnnamed44(core.List<api.KeyToPath> o) {
+void checkUnnamed55(core.List<api.KeyToPath> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkKeyToPath(o[0]);
   checkKeyToPath(o[1]);
@@ -2256,7 +2848,7 @@
   buildCounterSecretVolumeSource++;
   if (buildCounterSecretVolumeSource < 3) {
     o.defaultMode = 42;
-    o.items = buildUnnamed44();
+    o.items = buildUnnamed55();
     o.optional = true;
     o.secretName = 'foo';
   }
@@ -2271,7 +2863,7 @@
       o.defaultMode!,
       unittest.equals(42),
     );
-    checkUnnamed44(o.items!);
+    checkUnnamed55(o.items!);
     unittest.expect(o.optional!, unittest.isTrue);
     unittest.expect(
       o.secretName!,
@@ -2336,12 +2928,12 @@
   buildCounterService--;
 }
 
-core.List<api.TrafficTarget> buildUnnamed45() => [
+core.List<api.TrafficTarget> buildUnnamed56() => [
       buildTrafficTarget(),
       buildTrafficTarget(),
     ];
 
-void checkUnnamed45(core.List<api.TrafficTarget> o) {
+void checkUnnamed56(core.List<api.TrafficTarget> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTrafficTarget(o[0]);
   checkTrafficTarget(o[1]);
@@ -2353,7 +2945,7 @@
   buildCounterServiceSpec++;
   if (buildCounterServiceSpec < 3) {
     o.template = buildRevisionTemplate();
-    o.traffic = buildUnnamed45();
+    o.traffic = buildUnnamed56();
   }
   buildCounterServiceSpec--;
   return o;
@@ -2363,28 +2955,28 @@
   buildCounterServiceSpec++;
   if (buildCounterServiceSpec < 3) {
     checkRevisionTemplate(o.template!);
-    checkUnnamed45(o.traffic!);
+    checkUnnamed56(o.traffic!);
   }
   buildCounterServiceSpec--;
 }
 
-core.List<api.GoogleCloudRunV1Condition> buildUnnamed46() => [
+core.List<api.GoogleCloudRunV1Condition> buildUnnamed57() => [
       buildGoogleCloudRunV1Condition(),
       buildGoogleCloudRunV1Condition(),
     ];
 
-void checkUnnamed46(core.List<api.GoogleCloudRunV1Condition> o) {
+void checkUnnamed57(core.List<api.GoogleCloudRunV1Condition> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkGoogleCloudRunV1Condition(o[0]);
   checkGoogleCloudRunV1Condition(o[1]);
 }
 
-core.List<api.TrafficTarget> buildUnnamed47() => [
+core.List<api.TrafficTarget> buildUnnamed58() => [
       buildTrafficTarget(),
       buildTrafficTarget(),
     ];
 
-void checkUnnamed47(core.List<api.TrafficTarget> o) {
+void checkUnnamed58(core.List<api.TrafficTarget> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTrafficTarget(o[0]);
   checkTrafficTarget(o[1]);
@@ -2396,11 +2988,11 @@
   buildCounterServiceStatus++;
   if (buildCounterServiceStatus < 3) {
     o.address = buildAddressable();
-    o.conditions = buildUnnamed46();
+    o.conditions = buildUnnamed57();
     o.latestCreatedRevisionName = 'foo';
     o.latestReadyRevisionName = 'foo';
     o.observedGeneration = 42;
-    o.traffic = buildUnnamed47();
+    o.traffic = buildUnnamed58();
     o.url = 'foo';
   }
   buildCounterServiceStatus--;
@@ -2411,7 +3003,7 @@
   buildCounterServiceStatus++;
   if (buildCounterServiceStatus < 3) {
     checkAddressable(o.address!);
-    checkUnnamed46(o.conditions!);
+    checkUnnamed57(o.conditions!);
     unittest.expect(
       o.latestCreatedRevisionName!,
       unittest.equals('foo'),
@@ -2424,7 +3016,7 @@
       o.observedGeneration!,
       unittest.equals(42),
     );
-    checkUnnamed47(o.traffic!);
+    checkUnnamed58(o.traffic!);
     unittest.expect(
       o.url!,
       unittest.equals('foo'),
@@ -2530,12 +3122,12 @@
   buildCounterStatusCause--;
 }
 
-core.List<api.StatusCause> buildUnnamed48() => [
+core.List<api.StatusCause> buildUnnamed59() => [
       buildStatusCause(),
       buildStatusCause(),
     ];
 
-void checkUnnamed48(core.List<api.StatusCause> o) {
+void checkUnnamed59(core.List<api.StatusCause> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkStatusCause(o[0]);
   checkStatusCause(o[1]);
@@ -2546,7 +3138,7 @@
   final o = api.StatusDetails();
   buildCounterStatusDetails++;
   if (buildCounterStatusDetails < 3) {
-    o.causes = buildUnnamed48();
+    o.causes = buildUnnamed59();
     o.group = 'foo';
     o.kind = 'foo';
     o.name = 'foo';
@@ -2560,7 +3152,7 @@
 void checkStatusDetails(api.StatusDetails o) {
   buildCounterStatusDetails++;
   if (buildCounterStatusDetails < 3) {
-    checkUnnamed48(o.causes!);
+    checkUnnamed59(o.causes!);
     unittest.expect(
       o.group!,
       unittest.equals('foo'),
@@ -2612,12 +3204,208 @@
   buildCounterTCPSocketAction--;
 }
 
-core.List<core.String> buildUnnamed49() => [
+core.int buildCounterTask = 0;
+api.Task buildTask() {
+  final o = api.Task();
+  buildCounterTask++;
+  if (buildCounterTask < 3) {
+    o.apiVersion = 'foo';
+    o.kind = 'foo';
+    o.metadata = buildObjectMeta();
+    o.spec = buildTaskSpec();
+    o.status = buildTaskStatus();
+  }
+  buildCounterTask--;
+  return o;
+}
+
+void checkTask(api.Task o) {
+  buildCounterTask++;
+  if (buildCounterTask < 3) {
+    unittest.expect(
+      o.apiVersion!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.kind!,
+      unittest.equals('foo'),
+    );
+    checkObjectMeta(o.metadata!);
+    checkTaskSpec(o.spec!);
+    checkTaskStatus(o.status!);
+  }
+  buildCounterTask--;
+}
+
+core.int buildCounterTaskAttemptResult = 0;
+api.TaskAttemptResult buildTaskAttemptResult() {
+  final o = api.TaskAttemptResult();
+  buildCounterTaskAttemptResult++;
+  if (buildCounterTaskAttemptResult < 3) {
+    o.exitCode = 42;
+    o.status = buildGoogleRpcStatus();
+  }
+  buildCounterTaskAttemptResult--;
+  return o;
+}
+
+void checkTaskAttemptResult(api.TaskAttemptResult o) {
+  buildCounterTaskAttemptResult++;
+  if (buildCounterTaskAttemptResult < 3) {
+    unittest.expect(
+      o.exitCode!,
+      unittest.equals(42),
+    );
+    checkGoogleRpcStatus(o.status!);
+  }
+  buildCounterTaskAttemptResult--;
+}
+
+core.List<api.Container> buildUnnamed60() => [
+      buildContainer(),
+      buildContainer(),
+    ];
+
+void checkUnnamed60(core.List<api.Container> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkContainer(o[0]);
+  checkContainer(o[1]);
+}
+
+core.List<api.Volume> buildUnnamed61() => [
+      buildVolume(),
+      buildVolume(),
+    ];
+
+void checkUnnamed61(core.List<api.Volume> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkVolume(o[0]);
+  checkVolume(o[1]);
+}
+
+core.int buildCounterTaskSpec = 0;
+api.TaskSpec buildTaskSpec() {
+  final o = api.TaskSpec();
+  buildCounterTaskSpec++;
+  if (buildCounterTaskSpec < 3) {
+    o.containers = buildUnnamed60();
+    o.maxRetries = 42;
+    o.serviceAccountName = 'foo';
+    o.timeoutSeconds = 'foo';
+    o.volumes = buildUnnamed61();
+  }
+  buildCounterTaskSpec--;
+  return o;
+}
+
+void checkTaskSpec(api.TaskSpec o) {
+  buildCounterTaskSpec++;
+  if (buildCounterTaskSpec < 3) {
+    checkUnnamed60(o.containers!);
+    unittest.expect(
+      o.maxRetries!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.serviceAccountName!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.timeoutSeconds!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed61(o.volumes!);
+  }
+  buildCounterTaskSpec--;
+}
+
+core.List<api.GoogleCloudRunV1Condition> buildUnnamed62() => [
+      buildGoogleCloudRunV1Condition(),
+      buildGoogleCloudRunV1Condition(),
+    ];
+
+void checkUnnamed62(core.List<api.GoogleCloudRunV1Condition> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudRunV1Condition(o[0]);
+  checkGoogleCloudRunV1Condition(o[1]);
+}
+
+core.int buildCounterTaskStatus = 0;
+api.TaskStatus buildTaskStatus() {
+  final o = api.TaskStatus();
+  buildCounterTaskStatus++;
+  if (buildCounterTaskStatus < 3) {
+    o.completionTime = 'foo';
+    o.conditions = buildUnnamed62();
+    o.index = 42;
+    o.lastAttemptResult = buildTaskAttemptResult();
+    o.logUri = 'foo';
+    o.observedGeneration = 42;
+    o.retried = 42;
+    o.startTime = 'foo';
+  }
+  buildCounterTaskStatus--;
+  return o;
+}
+
+void checkTaskStatus(api.TaskStatus o) {
+  buildCounterTaskStatus++;
+  if (buildCounterTaskStatus < 3) {
+    unittest.expect(
+      o.completionTime!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed62(o.conditions!);
+    unittest.expect(
+      o.index!,
+      unittest.equals(42),
+    );
+    checkTaskAttemptResult(o.lastAttemptResult!);
+    unittest.expect(
+      o.logUri!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.observedGeneration!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.retried!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.startTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterTaskStatus--;
+}
+
+core.int buildCounterTaskTemplateSpec = 0;
+api.TaskTemplateSpec buildTaskTemplateSpec() {
+  final o = api.TaskTemplateSpec();
+  buildCounterTaskTemplateSpec++;
+  if (buildCounterTaskTemplateSpec < 3) {
+    o.spec = buildTaskSpec();
+  }
+  buildCounterTaskTemplateSpec--;
+  return o;
+}
+
+void checkTaskTemplateSpec(api.TaskTemplateSpec o) {
+  buildCounterTaskTemplateSpec++;
+  if (buildCounterTaskTemplateSpec < 3) {
+    checkTaskSpec(o.spec!);
+  }
+  buildCounterTaskTemplateSpec--;
+}
+
+core.List<core.String> buildUnnamed63() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed49(core.List<core.String> o) {
+void checkUnnamed63(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2634,7 +3422,7 @@
   final o = api.TestIamPermissionsRequest();
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    o.permissions = buildUnnamed49();
+    o.permissions = buildUnnamed63();
   }
   buildCounterTestIamPermissionsRequest--;
   return o;
@@ -2643,17 +3431,17 @@
 void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
   buildCounterTestIamPermissionsRequest++;
   if (buildCounterTestIamPermissionsRequest < 3) {
-    checkUnnamed49(o.permissions!);
+    checkUnnamed63(o.permissions!);
   }
   buildCounterTestIamPermissionsRequest--;
 }
 
-core.List<core.String> buildUnnamed50() => [
+core.List<core.String> buildUnnamed64() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed50(core.List<core.String> o) {
+void checkUnnamed64(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2670,7 +3458,7 @@
   final o = api.TestIamPermissionsResponse();
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    o.permissions = buildUnnamed50();
+    o.permissions = buildUnnamed64();
   }
   buildCounterTestIamPermissionsResponse--;
   return o;
@@ -2679,7 +3467,7 @@
 void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
   buildCounterTestIamPermissionsResponse++;
   if (buildCounterTestIamPermissionsResponse < 3) {
-    checkUnnamed50(o.permissions!);
+    checkUnnamed64(o.permissions!);
   }
   buildCounterTestIamPermissionsResponse--;
 }
@@ -2919,6 +3707,16 @@
     });
   });
 
+  unittest.group('obj-schema-ContainerStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildContainerStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ContainerStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkContainerStatus(od);
+    });
+  });
+
   unittest.group('obj-schema-DomainMapping', () {
     unittest.test('to-json--from-json', () async {
       final o = buildDomainMapping();
@@ -2989,6 +3787,56 @@
     });
   });
 
+  unittest.group('obj-schema-Execution', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildExecution();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Execution.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkExecution(od);
+    });
+  });
+
+  unittest.group('obj-schema-ExecutionReference', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildExecutionReference();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ExecutionReference.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkExecutionReference(od);
+    });
+  });
+
+  unittest.group('obj-schema-ExecutionSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildExecutionSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ExecutionSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkExecutionSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-ExecutionStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildExecutionStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ExecutionStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkExecutionStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-ExecutionTemplateSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildExecutionTemplateSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ExecutionTemplateSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkExecutionTemplateSpec(od);
+    });
+  });
+
   unittest.group('obj-schema-Expr', () {
     unittest.test('to-json--from-json', () async {
       final o = buildExpr();
@@ -3009,6 +3857,16 @@
     });
   });
 
+  unittest.group('obj-schema-GoogleRpcStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleRpcStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleRpcStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleRpcStatus(od);
+    });
+  });
+
   unittest.group('obj-schema-HTTPGetAction', () {
     unittest.test('to-json--from-json', () async {
       final o = buildHTTPGetAction();
@@ -3029,6 +3887,35 @@
     });
   });
 
+  unittest.group('obj-schema-Job', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildJob();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.Job.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkJob(od);
+    });
+  });
+
+  unittest.group('obj-schema-JobSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildJobSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.JobSpec.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkJobSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-JobStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildJobStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.JobStatus.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkJobStatus(od);
+    });
+  });
+
   unittest.group('obj-schema-KeyToPath', () {
     unittest.test('to-json--from-json', () async {
       final o = buildKeyToPath();
@@ -3069,6 +3956,26 @@
     });
   });
 
+  unittest.group('obj-schema-ListExecutionsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListExecutionsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListExecutionsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListExecutionsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListJobsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListJobsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListJobsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListJobsResponse(od);
+    });
+  });
+
   unittest.group('obj-schema-ListLocationsResponse', () {
     unittest.test('to-json--from-json', () async {
       final o = buildListLocationsResponse();
@@ -3119,6 +4026,16 @@
     });
   });
 
+  unittest.group('obj-schema-ListTasksResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListTasksResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListTasksResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListTasksResponse(od);
+    });
+  });
+
   unittest.group('obj-schema-LocalObjectReference', () {
     unittest.test('to-json--from-json', () async {
       final o = buildLocalObjectReference();
@@ -3269,6 +4186,16 @@
     });
   });
 
+  unittest.group('obj-schema-RunJobRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildRunJobRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.RunJobRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkRunJobRequest(od);
+    });
+  });
+
   unittest.group('obj-schema-SecretEnvSource', () {
     unittest.test('to-json--from-json', () async {
       final o = buildSecretEnvSource();
@@ -3389,6 +4316,56 @@
     });
   });
 
+  unittest.group('obj-schema-Task', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildTask();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Task.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkTask(od);
+    });
+  });
+
+  unittest.group('obj-schema-TaskAttemptResult', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildTaskAttemptResult();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.TaskAttemptResult.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkTaskAttemptResult(od);
+    });
+  });
+
+  unittest.group('obj-schema-TaskSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildTaskSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.TaskSpec.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkTaskSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-TaskStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildTaskStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.TaskStatus.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkTaskStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-TaskTemplateSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildTaskTemplateSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.TaskTemplateSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkTaskTemplateSpec(od);
+    });
+  });
+
   unittest.group('obj-schema-TestIamPermissionsRequest', () {
     unittest.test('to-json--from-json', () async {
       final o = buildTestIamPermissionsRequest();
@@ -3947,6 +4924,620 @@
     });
   });
 
+  unittest.group('resource-NamespacesExecutionsResource', () {
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.executions;
+      final arg_name = 'foo';
+      final arg_apiVersion = 'foo';
+      final arg_kind = 'foo';
+      final arg_propagationPolicy = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['apiVersion']!.first,
+          unittest.equals(arg_apiVersion),
+        );
+        unittest.expect(
+          queryMap['kind']!.first,
+          unittest.equals(arg_kind),
+        );
+        unittest.expect(
+          queryMap['propagationPolicy']!.first,
+          unittest.equals(arg_propagationPolicy),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildStatus());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name,
+          apiVersion: arg_apiVersion,
+          kind: arg_kind,
+          propagationPolicy: arg_propagationPolicy,
+          $fields: arg_$fields);
+      checkStatus(response as api.Status);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.executions;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildExecution());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkExecution(response as api.Execution);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.executions;
+      final arg_parent = 'foo';
+      final arg_continue_ = 'foo';
+      final arg_fieldSelector = 'foo';
+      final arg_includeUninitialized = true;
+      final arg_labelSelector = 'foo';
+      final arg_limit = 42;
+      final arg_resourceVersion = 'foo';
+      final arg_watch = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['continue']!.first,
+          unittest.equals(arg_continue_),
+        );
+        unittest.expect(
+          queryMap['fieldSelector']!.first,
+          unittest.equals(arg_fieldSelector),
+        );
+        unittest.expect(
+          queryMap['includeUninitialized']!.first,
+          unittest.equals('$arg_includeUninitialized'),
+        );
+        unittest.expect(
+          queryMap['labelSelector']!.first,
+          unittest.equals(arg_labelSelector),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['limit']!.first),
+          unittest.equals(arg_limit),
+        );
+        unittest.expect(
+          queryMap['resourceVersion']!.first,
+          unittest.equals(arg_resourceVersion),
+        );
+        unittest.expect(
+          queryMap['watch']!.first,
+          unittest.equals('$arg_watch'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListExecutionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          continue_: arg_continue_,
+          fieldSelector: arg_fieldSelector,
+          includeUninitialized: arg_includeUninitialized,
+          labelSelector: arg_labelSelector,
+          limit: arg_limit,
+          resourceVersion: arg_resourceVersion,
+          watch: arg_watch,
+          $fields: arg_$fields);
+      checkListExecutionsResponse(response as api.ListExecutionsResponse);
+    });
+  });
+
+  unittest.group('resource-NamespacesJobsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.jobs;
+      final arg_request = buildJob();
+      final arg_parent = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Job.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkJob(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildJob());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.create(arg_request, arg_parent, $fields: arg_$fields);
+      checkJob(response as api.Job);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.jobs;
+      final arg_name = 'foo';
+      final arg_apiVersion = 'foo';
+      final arg_kind = 'foo';
+      final arg_propagationPolicy = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['apiVersion']!.first,
+          unittest.equals(arg_apiVersion),
+        );
+        unittest.expect(
+          queryMap['kind']!.first,
+          unittest.equals(arg_kind),
+        );
+        unittest.expect(
+          queryMap['propagationPolicy']!.first,
+          unittest.equals(arg_propagationPolicy),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildStatus());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name,
+          apiVersion: arg_apiVersion,
+          kind: arg_kind,
+          propagationPolicy: arg_propagationPolicy,
+          $fields: arg_$fields);
+      checkStatus(response as api.Status);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.jobs;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildJob());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkJob(response as api.Job);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.jobs;
+      final arg_parent = 'foo';
+      final arg_continue_ = 'foo';
+      final arg_fieldSelector = 'foo';
+      final arg_includeUninitialized = true;
+      final arg_labelSelector = 'foo';
+      final arg_limit = 42;
+      final arg_resourceVersion = 'foo';
+      final arg_watch = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['continue']!.first,
+          unittest.equals(arg_continue_),
+        );
+        unittest.expect(
+          queryMap['fieldSelector']!.first,
+          unittest.equals(arg_fieldSelector),
+        );
+        unittest.expect(
+          queryMap['includeUninitialized']!.first,
+          unittest.equals('$arg_includeUninitialized'),
+        );
+        unittest.expect(
+          queryMap['labelSelector']!.first,
+          unittest.equals(arg_labelSelector),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['limit']!.first),
+          unittest.equals(arg_limit),
+        );
+        unittest.expect(
+          queryMap['resourceVersion']!.first,
+          unittest.equals(arg_resourceVersion),
+        );
+        unittest.expect(
+          queryMap['watch']!.first,
+          unittest.equals('$arg_watch'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListJobsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          continue_: arg_continue_,
+          fieldSelector: arg_fieldSelector,
+          includeUninitialized: arg_includeUninitialized,
+          labelSelector: arg_labelSelector,
+          limit: arg_limit,
+          resourceVersion: arg_resourceVersion,
+          watch: arg_watch,
+          $fields: arg_$fields);
+      checkListJobsResponse(response as api.ListJobsResponse);
+    });
+
+    unittest.test('method--replaceJob', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.jobs;
+      final arg_request = buildJob();
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Job.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkJob(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildJob());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.replaceJob(arg_request, arg_name, $fields: arg_$fields);
+      checkJob(response as api.Job);
+    });
+
+    unittest.test('method--run', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.jobs;
+      final arg_request = buildRunJobRequest();
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.RunJobRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkRunJobRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildExecution());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.run(arg_request, arg_name, $fields: arg_$fields);
+      checkExecution(response as api.Execution);
+    });
+  });
+
   unittest.group('resource-NamespacesRevisionsResource', () {
     unittest.test('method--delete', () async {
       final mock = HttpServerMock();
@@ -4674,6 +6265,155 @@
     });
   });
 
+  unittest.group('resource-NamespacesTasksResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.tasks;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildTask());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkTask(response as api.Task);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).namespaces.tasks;
+      final arg_parent = 'foo';
+      final arg_continue_ = 'foo';
+      final arg_fieldSelector = 'foo';
+      final arg_includeUninitialized = true;
+      final arg_labelSelector = 'foo';
+      final arg_limit = 42;
+      final arg_resourceVersion = 'foo';
+      final arg_watch = true;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 27),
+          unittest.equals('apis/run.googleapis.com/v1/'),
+        );
+        pathOffset += 27;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['continue']!.first,
+          unittest.equals(arg_continue_),
+        );
+        unittest.expect(
+          queryMap['fieldSelector']!.first,
+          unittest.equals(arg_fieldSelector),
+        );
+        unittest.expect(
+          queryMap['includeUninitialized']!.first,
+          unittest.equals('$arg_includeUninitialized'),
+        );
+        unittest.expect(
+          queryMap['labelSelector']!.first,
+          unittest.equals(arg_labelSelector),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['limit']!.first),
+          unittest.equals(arg_limit),
+        );
+        unittest.expect(
+          queryMap['resourceVersion']!.first,
+          unittest.equals(arg_resourceVersion),
+        );
+        unittest.expect(
+          queryMap['watch']!.first,
+          unittest.equals('$arg_watch'),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListTasksResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          continue_: arg_continue_,
+          fieldSelector: arg_fieldSelector,
+          includeUninitialized: arg_includeUninitialized,
+          labelSelector: arg_labelSelector,
+          limit: arg_limit,
+          resourceVersion: arg_resourceVersion,
+          watch: arg_watch,
+          $fields: arg_$fields);
+      checkListTasksResponse(response as api.ListTasksResponse);
+    });
+  });
+
   unittest.group('resource-ProjectsAuthorizeddomainsResource', () {
     unittest.test('method--list', () async {
       final mock = HttpServerMock();
@@ -5323,6 +7063,184 @@
     });
   });
 
+  unittest.group('resource-ProjectsLocationsJobsResource', () {
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).projects.locations.jobs;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildPolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkPolicy(response as api.Policy);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).projects.locations.jobs;
+      final arg_request = buildSetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkSetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildPolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkPolicy(response as api.Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudRunApi(mock).projects.locations.jobs;
+      final arg_request = buildTestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkTestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildTestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkTestIamPermissionsResponse(
+          response as api.TestIamPermissionsResponse);
+    });
+  });
+
   unittest.group('resource-ProjectsLocationsRevisionsResource', () {
     unittest.test('method--delete', () async {
       final mock = HttpServerMock();
diff --git a/generated/googleapis/test/searchconsole/v1_test.dart b/generated/googleapis/test/searchconsole/v1_test.dart
index e289120..faf5a14 100644
--- a/generated/googleapis/test/searchconsole/v1_test.dart
+++ b/generated/googleapis/test/searchconsole/v1_test.dart
@@ -26,12 +26,104 @@
 
 import '../test_shared.dart';
 
-core.List<core.String> buildUnnamed0() => [
+core.List<api.AmpIssue> buildUnnamed0() => [
+      buildAmpIssue(),
+      buildAmpIssue(),
+    ];
+
+void checkUnnamed0(core.List<api.AmpIssue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAmpIssue(o[0]);
+  checkAmpIssue(o[1]);
+}
+
+core.int buildCounterAmpInspectionResult = 0;
+api.AmpInspectionResult buildAmpInspectionResult() {
+  final o = api.AmpInspectionResult();
+  buildCounterAmpInspectionResult++;
+  if (buildCounterAmpInspectionResult < 3) {
+    o.ampIndexStatusVerdict = 'foo';
+    o.ampUrl = 'foo';
+    o.indexingState = 'foo';
+    o.issues = buildUnnamed0();
+    o.lastCrawlTime = 'foo';
+    o.pageFetchState = 'foo';
+    o.robotsTxtState = 'foo';
+    o.verdict = 'foo';
+  }
+  buildCounterAmpInspectionResult--;
+  return o;
+}
+
+void checkAmpInspectionResult(api.AmpInspectionResult o) {
+  buildCounterAmpInspectionResult++;
+  if (buildCounterAmpInspectionResult < 3) {
+    unittest.expect(
+      o.ampIndexStatusVerdict!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.ampUrl!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.indexingState!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed0(o.issues!);
+    unittest.expect(
+      o.lastCrawlTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.pageFetchState!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.robotsTxtState!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.verdict!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAmpInspectionResult--;
+}
+
+core.int buildCounterAmpIssue = 0;
+api.AmpIssue buildAmpIssue() {
+  final o = api.AmpIssue();
+  buildCounterAmpIssue++;
+  if (buildCounterAmpIssue < 3) {
+    o.issueMessage = 'foo';
+    o.severity = 'foo';
+  }
+  buildCounterAmpIssue--;
+  return o;
+}
+
+void checkAmpIssue(api.AmpIssue o) {
+  buildCounterAmpIssue++;
+  if (buildCounterAmpIssue < 3) {
+    unittest.expect(
+      o.issueMessage!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.severity!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAmpIssue--;
+}
+
+core.List<core.String> buildUnnamed1() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed0(core.List<core.String> o) {
+void checkUnnamed1(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -51,7 +143,7 @@
     o.clicks = 42.0;
     o.ctr = 42.0;
     o.impressions = 42.0;
-    o.keys = buildUnnamed0();
+    o.keys = buildUnnamed1();
     o.position = 42.0;
   }
   buildCounterApiDataRow--;
@@ -73,7 +165,7 @@
       o.impressions!,
       unittest.equals(42.0),
     );
-    checkUnnamed0(o.keys!);
+    checkUnnamed1(o.keys!);
     unittest.expect(
       o.position!,
       unittest.equals(42.0),
@@ -114,12 +206,12 @@
   buildCounterApiDimensionFilter--;
 }
 
-core.List<api.ApiDimensionFilter> buildUnnamed1() => [
+core.List<api.ApiDimensionFilter> buildUnnamed2() => [
       buildApiDimensionFilter(),
       buildApiDimensionFilter(),
     ];
 
-void checkUnnamed1(core.List<api.ApiDimensionFilter> o) {
+void checkUnnamed2(core.List<api.ApiDimensionFilter> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApiDimensionFilter(o[0]);
   checkApiDimensionFilter(o[1]);
@@ -130,7 +222,7 @@
   final o = api.ApiDimensionFilterGroup();
   buildCounterApiDimensionFilterGroup++;
   if (buildCounterApiDimensionFilterGroup < 3) {
-    o.filters = buildUnnamed1();
+    o.filters = buildUnnamed2();
     o.groupType = 'foo';
   }
   buildCounterApiDimensionFilterGroup--;
@@ -140,7 +232,7 @@
 void checkApiDimensionFilterGroup(api.ApiDimensionFilterGroup o) {
   buildCounterApiDimensionFilterGroup++;
   if (buildCounterApiDimensionFilterGroup < 3) {
-    checkUnnamed1(o.filters!);
+    checkUnnamed2(o.filters!);
     unittest.expect(
       o.groupType!,
       unittest.equals('foo'),
@@ -171,6 +263,41 @@
   buildCounterBlockedResource--;
 }
 
+core.List<api.Item> buildUnnamed3() => [
+      buildItem(),
+      buildItem(),
+    ];
+
+void checkUnnamed3(core.List<api.Item> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkItem(o[0]);
+  checkItem(o[1]);
+}
+
+core.int buildCounterDetectedItems = 0;
+api.DetectedItems buildDetectedItems() {
+  final o = api.DetectedItems();
+  buildCounterDetectedItems++;
+  if (buildCounterDetectedItems < 3) {
+    o.items = buildUnnamed3();
+    o.richResultType = 'foo';
+  }
+  buildCounterDetectedItems--;
+  return o;
+}
+
+void checkDetectedItems(api.DetectedItems o) {
+  buildCounterDetectedItems++;
+  if (buildCounterDetectedItems < 3) {
+    checkUnnamed3(o.items!);
+    unittest.expect(
+      o.richResultType!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterDetectedItems--;
+}
+
 core.int buildCounterImage = 0;
 api.Image buildImage() {
   final o = api.Image();
@@ -198,6 +325,192 @@
   buildCounterImage--;
 }
 
+core.List<core.String> buildUnnamed4() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed4(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.String> buildUnnamed5() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed5(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterIndexStatusInspectionResult = 0;
+api.IndexStatusInspectionResult buildIndexStatusInspectionResult() {
+  final o = api.IndexStatusInspectionResult();
+  buildCounterIndexStatusInspectionResult++;
+  if (buildCounterIndexStatusInspectionResult < 3) {
+    o.coverageState = 'foo';
+    o.crawledAs = 'foo';
+    o.googleCanonical = 'foo';
+    o.indexingState = 'foo';
+    o.lastCrawlTime = 'foo';
+    o.pageFetchState = 'foo';
+    o.referringUrls = buildUnnamed4();
+    o.robotsTxtState = 'foo';
+    o.sitemap = buildUnnamed5();
+    o.userCanonical = 'foo';
+    o.verdict = 'foo';
+  }
+  buildCounterIndexStatusInspectionResult--;
+  return o;
+}
+
+void checkIndexStatusInspectionResult(api.IndexStatusInspectionResult o) {
+  buildCounterIndexStatusInspectionResult++;
+  if (buildCounterIndexStatusInspectionResult < 3) {
+    unittest.expect(
+      o.coverageState!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.crawledAs!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.googleCanonical!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.indexingState!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.lastCrawlTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.pageFetchState!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed4(o.referringUrls!);
+    unittest.expect(
+      o.robotsTxtState!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed5(o.sitemap!);
+    unittest.expect(
+      o.userCanonical!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.verdict!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterIndexStatusInspectionResult--;
+}
+
+core.int buildCounterInspectUrlIndexRequest = 0;
+api.InspectUrlIndexRequest buildInspectUrlIndexRequest() {
+  final o = api.InspectUrlIndexRequest();
+  buildCounterInspectUrlIndexRequest++;
+  if (buildCounterInspectUrlIndexRequest < 3) {
+    o.inspectionUrl = 'foo';
+    o.languageCode = 'foo';
+    o.siteUrl = 'foo';
+  }
+  buildCounterInspectUrlIndexRequest--;
+  return o;
+}
+
+void checkInspectUrlIndexRequest(api.InspectUrlIndexRequest o) {
+  buildCounterInspectUrlIndexRequest++;
+  if (buildCounterInspectUrlIndexRequest < 3) {
+    unittest.expect(
+      o.inspectionUrl!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.languageCode!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.siteUrl!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterInspectUrlIndexRequest--;
+}
+
+core.int buildCounterInspectUrlIndexResponse = 0;
+api.InspectUrlIndexResponse buildInspectUrlIndexResponse() {
+  final o = api.InspectUrlIndexResponse();
+  buildCounterInspectUrlIndexResponse++;
+  if (buildCounterInspectUrlIndexResponse < 3) {
+    o.inspectionResult = buildUrlInspectionResult();
+  }
+  buildCounterInspectUrlIndexResponse--;
+  return o;
+}
+
+void checkInspectUrlIndexResponse(api.InspectUrlIndexResponse o) {
+  buildCounterInspectUrlIndexResponse++;
+  if (buildCounterInspectUrlIndexResponse < 3) {
+    checkUrlInspectionResult(o.inspectionResult!);
+  }
+  buildCounterInspectUrlIndexResponse--;
+}
+
+core.List<api.RichResultsIssue> buildUnnamed6() => [
+      buildRichResultsIssue(),
+      buildRichResultsIssue(),
+    ];
+
+void checkUnnamed6(core.List<api.RichResultsIssue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRichResultsIssue(o[0]);
+  checkRichResultsIssue(o[1]);
+}
+
+core.int buildCounterItem = 0;
+api.Item buildItem() {
+  final o = api.Item();
+  buildCounterItem++;
+  if (buildCounterItem < 3) {
+    o.issues = buildUnnamed6();
+    o.name = 'foo';
+  }
+  buildCounterItem--;
+  return o;
+}
+
+void checkItem(api.Item o) {
+  buildCounterItem++;
+  if (buildCounterItem < 3) {
+    checkUnnamed6(o.issues!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterItem--;
+}
+
 core.int buildCounterMobileFriendlyIssue = 0;
 api.MobileFriendlyIssue buildMobileFriendlyIssue() {
   final o = api.MobileFriendlyIssue();
@@ -220,6 +533,74 @@
   buildCounterMobileFriendlyIssue--;
 }
 
+core.List<api.MobileUsabilityIssue> buildUnnamed7() => [
+      buildMobileUsabilityIssue(),
+      buildMobileUsabilityIssue(),
+    ];
+
+void checkUnnamed7(core.List<api.MobileUsabilityIssue> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMobileUsabilityIssue(o[0]);
+  checkMobileUsabilityIssue(o[1]);
+}
+
+core.int buildCounterMobileUsabilityInspectionResult = 0;
+api.MobileUsabilityInspectionResult buildMobileUsabilityInspectionResult() {
+  final o = api.MobileUsabilityInspectionResult();
+  buildCounterMobileUsabilityInspectionResult++;
+  if (buildCounterMobileUsabilityInspectionResult < 3) {
+    o.issues = buildUnnamed7();
+    o.verdict = 'foo';
+  }
+  buildCounterMobileUsabilityInspectionResult--;
+  return o;
+}
+
+void checkMobileUsabilityInspectionResult(
+    api.MobileUsabilityInspectionResult o) {
+  buildCounterMobileUsabilityInspectionResult++;
+  if (buildCounterMobileUsabilityInspectionResult < 3) {
+    checkUnnamed7(o.issues!);
+    unittest.expect(
+      o.verdict!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterMobileUsabilityInspectionResult--;
+}
+
+core.int buildCounterMobileUsabilityIssue = 0;
+api.MobileUsabilityIssue buildMobileUsabilityIssue() {
+  final o = api.MobileUsabilityIssue();
+  buildCounterMobileUsabilityIssue++;
+  if (buildCounterMobileUsabilityIssue < 3) {
+    o.issueType = 'foo';
+    o.message = 'foo';
+    o.severity = 'foo';
+  }
+  buildCounterMobileUsabilityIssue--;
+  return o;
+}
+
+void checkMobileUsabilityIssue(api.MobileUsabilityIssue o) {
+  buildCounterMobileUsabilityIssue++;
+  if (buildCounterMobileUsabilityIssue < 3) {
+    unittest.expect(
+      o.issueType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.severity!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterMobileUsabilityIssue--;
+}
+
 core.int buildCounterResourceIssue = 0;
 api.ResourceIssue buildResourceIssue() {
   final o = api.ResourceIssue();
@@ -239,6 +620,68 @@
   buildCounterResourceIssue--;
 }
 
+core.List<api.DetectedItems> buildUnnamed8() => [
+      buildDetectedItems(),
+      buildDetectedItems(),
+    ];
+
+void checkUnnamed8(core.List<api.DetectedItems> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkDetectedItems(o[0]);
+  checkDetectedItems(o[1]);
+}
+
+core.int buildCounterRichResultsInspectionResult = 0;
+api.RichResultsInspectionResult buildRichResultsInspectionResult() {
+  final o = api.RichResultsInspectionResult();
+  buildCounterRichResultsInspectionResult++;
+  if (buildCounterRichResultsInspectionResult < 3) {
+    o.detectedItems = buildUnnamed8();
+    o.verdict = 'foo';
+  }
+  buildCounterRichResultsInspectionResult--;
+  return o;
+}
+
+void checkRichResultsInspectionResult(api.RichResultsInspectionResult o) {
+  buildCounterRichResultsInspectionResult++;
+  if (buildCounterRichResultsInspectionResult < 3) {
+    checkUnnamed8(o.detectedItems!);
+    unittest.expect(
+      o.verdict!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterRichResultsInspectionResult--;
+}
+
+core.int buildCounterRichResultsIssue = 0;
+api.RichResultsIssue buildRichResultsIssue() {
+  final o = api.RichResultsIssue();
+  buildCounterRichResultsIssue++;
+  if (buildCounterRichResultsIssue < 3) {
+    o.issueMessage = 'foo';
+    o.severity = 'foo';
+  }
+  buildCounterRichResultsIssue--;
+  return o;
+}
+
+void checkRichResultsIssue(api.RichResultsIssue o) {
+  buildCounterRichResultsIssue++;
+  if (buildCounterRichResultsIssue < 3) {
+    unittest.expect(
+      o.issueMessage!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.severity!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterRichResultsIssue--;
+}
+
 core.int buildCounterRunMobileFriendlyTestRequest = 0;
 api.RunMobileFriendlyTestRequest buildRunMobileFriendlyTestRequest() {
   final o = api.RunMobileFriendlyTestRequest();
@@ -263,23 +706,23 @@
   buildCounterRunMobileFriendlyTestRequest--;
 }
 
-core.List<api.MobileFriendlyIssue> buildUnnamed2() => [
+core.List<api.MobileFriendlyIssue> buildUnnamed9() => [
       buildMobileFriendlyIssue(),
       buildMobileFriendlyIssue(),
     ];
 
-void checkUnnamed2(core.List<api.MobileFriendlyIssue> o) {
+void checkUnnamed9(core.List<api.MobileFriendlyIssue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkMobileFriendlyIssue(o[0]);
   checkMobileFriendlyIssue(o[1]);
 }
 
-core.List<api.ResourceIssue> buildUnnamed3() => [
+core.List<api.ResourceIssue> buildUnnamed10() => [
       buildResourceIssue(),
       buildResourceIssue(),
     ];
 
-void checkUnnamed3(core.List<api.ResourceIssue> o) {
+void checkUnnamed10(core.List<api.ResourceIssue> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkResourceIssue(o[0]);
   checkResourceIssue(o[1]);
@@ -291,8 +734,8 @@
   buildCounterRunMobileFriendlyTestResponse++;
   if (buildCounterRunMobileFriendlyTestResponse < 3) {
     o.mobileFriendliness = 'foo';
-    o.mobileFriendlyIssues = buildUnnamed2();
-    o.resourceIssues = buildUnnamed3();
+    o.mobileFriendlyIssues = buildUnnamed9();
+    o.resourceIssues = buildUnnamed10();
     o.screenshot = buildImage();
     o.testStatus = buildTestStatus();
   }
@@ -307,31 +750,31 @@
       o.mobileFriendliness!,
       unittest.equals('foo'),
     );
-    checkUnnamed2(o.mobileFriendlyIssues!);
-    checkUnnamed3(o.resourceIssues!);
+    checkUnnamed9(o.mobileFriendlyIssues!);
+    checkUnnamed10(o.resourceIssues!);
     checkImage(o.screenshot!);
     checkTestStatus(o.testStatus!);
   }
   buildCounterRunMobileFriendlyTestResponse--;
 }
 
-core.List<api.ApiDimensionFilterGroup> buildUnnamed4() => [
+core.List<api.ApiDimensionFilterGroup> buildUnnamed11() => [
       buildApiDimensionFilterGroup(),
       buildApiDimensionFilterGroup(),
     ];
 
-void checkUnnamed4(core.List<api.ApiDimensionFilterGroup> o) {
+void checkUnnamed11(core.List<api.ApiDimensionFilterGroup> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApiDimensionFilterGroup(o[0]);
   checkApiDimensionFilterGroup(o[1]);
 }
 
-core.List<core.String> buildUnnamed5() => [
+core.List<core.String> buildUnnamed12() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed5(core.List<core.String> o) {
+void checkUnnamed12(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -350,8 +793,8 @@
   if (buildCounterSearchAnalyticsQueryRequest < 3) {
     o.aggregationType = 'foo';
     o.dataState = 'foo';
-    o.dimensionFilterGroups = buildUnnamed4();
-    o.dimensions = buildUnnamed5();
+    o.dimensionFilterGroups = buildUnnamed11();
+    o.dimensions = buildUnnamed12();
     o.endDate = 'foo';
     o.rowLimit = 42;
     o.searchType = 'foo';
@@ -374,8 +817,8 @@
       o.dataState!,
       unittest.equals('foo'),
     );
-    checkUnnamed4(o.dimensionFilterGroups!);
-    checkUnnamed5(o.dimensions!);
+    checkUnnamed11(o.dimensionFilterGroups!);
+    checkUnnamed12(o.dimensions!);
     unittest.expect(
       o.endDate!,
       unittest.equals('foo'),
@@ -404,12 +847,12 @@
   buildCounterSearchAnalyticsQueryRequest--;
 }
 
-core.List<api.ApiDataRow> buildUnnamed6() => [
+core.List<api.ApiDataRow> buildUnnamed13() => [
       buildApiDataRow(),
       buildApiDataRow(),
     ];
 
-void checkUnnamed6(core.List<api.ApiDataRow> o) {
+void checkUnnamed13(core.List<api.ApiDataRow> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApiDataRow(o[0]);
   checkApiDataRow(o[1]);
@@ -421,7 +864,7 @@
   buildCounterSearchAnalyticsQueryResponse++;
   if (buildCounterSearchAnalyticsQueryResponse < 3) {
     o.responseAggregationType = 'foo';
-    o.rows = buildUnnamed6();
+    o.rows = buildUnnamed13();
   }
   buildCounterSearchAnalyticsQueryResponse--;
   return o;
@@ -434,17 +877,17 @@
       o.responseAggregationType!,
       unittest.equals('foo'),
     );
-    checkUnnamed6(o.rows!);
+    checkUnnamed13(o.rows!);
   }
   buildCounterSearchAnalyticsQueryResponse--;
 }
 
-core.List<api.WmxSitemap> buildUnnamed7() => [
+core.List<api.WmxSitemap> buildUnnamed14() => [
       buildWmxSitemap(),
       buildWmxSitemap(),
     ];
 
-void checkUnnamed7(core.List<api.WmxSitemap> o) {
+void checkUnnamed14(core.List<api.WmxSitemap> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWmxSitemap(o[0]);
   checkWmxSitemap(o[1]);
@@ -455,7 +898,7 @@
   final o = api.SitemapsListResponse();
   buildCounterSitemapsListResponse++;
   if (buildCounterSitemapsListResponse < 3) {
-    o.sitemap = buildUnnamed7();
+    o.sitemap = buildUnnamed14();
   }
   buildCounterSitemapsListResponse--;
   return o;
@@ -464,17 +907,17 @@
 void checkSitemapsListResponse(api.SitemapsListResponse o) {
   buildCounterSitemapsListResponse++;
   if (buildCounterSitemapsListResponse < 3) {
-    checkUnnamed7(o.sitemap!);
+    checkUnnamed14(o.sitemap!);
   }
   buildCounterSitemapsListResponse--;
 }
 
-core.List<api.WmxSite> buildUnnamed8() => [
+core.List<api.WmxSite> buildUnnamed15() => [
       buildWmxSite(),
       buildWmxSite(),
     ];
 
-void checkUnnamed8(core.List<api.WmxSite> o) {
+void checkUnnamed15(core.List<api.WmxSite> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWmxSite(o[0]);
   checkWmxSite(o[1]);
@@ -485,7 +928,7 @@
   final o = api.SitesListResponse();
   buildCounterSitesListResponse++;
   if (buildCounterSitesListResponse < 3) {
-    o.siteEntry = buildUnnamed8();
+    o.siteEntry = buildUnnamed15();
   }
   buildCounterSitesListResponse--;
   return o;
@@ -494,7 +937,7 @@
 void checkSitesListResponse(api.SitesListResponse o) {
   buildCounterSitesListResponse++;
   if (buildCounterSitesListResponse < 3) {
-    checkUnnamed8(o.siteEntry!);
+    checkUnnamed15(o.siteEntry!);
   }
   buildCounterSitesListResponse--;
 }
@@ -526,6 +969,36 @@
   buildCounterTestStatus--;
 }
 
+core.int buildCounterUrlInspectionResult = 0;
+api.UrlInspectionResult buildUrlInspectionResult() {
+  final o = api.UrlInspectionResult();
+  buildCounterUrlInspectionResult++;
+  if (buildCounterUrlInspectionResult < 3) {
+    o.ampResult = buildAmpInspectionResult();
+    o.indexStatusResult = buildIndexStatusInspectionResult();
+    o.inspectionResultLink = 'foo';
+    o.mobileUsabilityResult = buildMobileUsabilityInspectionResult();
+    o.richResultsResult = buildRichResultsInspectionResult();
+  }
+  buildCounterUrlInspectionResult--;
+  return o;
+}
+
+void checkUrlInspectionResult(api.UrlInspectionResult o) {
+  buildCounterUrlInspectionResult++;
+  if (buildCounterUrlInspectionResult < 3) {
+    checkAmpInspectionResult(o.ampResult!);
+    checkIndexStatusInspectionResult(o.indexStatusResult!);
+    unittest.expect(
+      o.inspectionResultLink!,
+      unittest.equals('foo'),
+    );
+    checkMobileUsabilityInspectionResult(o.mobileUsabilityResult!);
+    checkRichResultsInspectionResult(o.richResultsResult!);
+  }
+  buildCounterUrlInspectionResult--;
+}
+
 core.int buildCounterWmxSite = 0;
 api.WmxSite buildWmxSite() {
   final o = api.WmxSite();
@@ -553,12 +1026,12 @@
   buildCounterWmxSite--;
 }
 
-core.List<api.WmxSitemapContent> buildUnnamed9() => [
+core.List<api.WmxSitemapContent> buildUnnamed16() => [
       buildWmxSitemapContent(),
       buildWmxSitemapContent(),
     ];
 
-void checkUnnamed9(core.List<api.WmxSitemapContent> o) {
+void checkUnnamed16(core.List<api.WmxSitemapContent> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkWmxSitemapContent(o[0]);
   checkWmxSitemapContent(o[1]);
@@ -569,7 +1042,7 @@
   final o = api.WmxSitemap();
   buildCounterWmxSitemap++;
   if (buildCounterWmxSitemap < 3) {
-    o.contents = buildUnnamed9();
+    o.contents = buildUnnamed16();
     o.errors = 'foo';
     o.isPending = true;
     o.isSitemapsIndex = true;
@@ -586,7 +1059,7 @@
 void checkWmxSitemap(api.WmxSitemap o) {
   buildCounterWmxSitemap++;
   if (buildCounterWmxSitemap < 3) {
-    checkUnnamed9(o.contents!);
+    checkUnnamed16(o.contents!);
     unittest.expect(
       o.errors!,
       unittest.equals('foo'),
@@ -650,6 +1123,26 @@
 }
 
 void main() {
+  unittest.group('obj-schema-AmpInspectionResult', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAmpInspectionResult();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AmpInspectionResult.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAmpInspectionResult(od);
+    });
+  });
+
+  unittest.group('obj-schema-AmpIssue', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAmpIssue();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.AmpIssue.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkAmpIssue(od);
+    });
+  });
+
   unittest.group('obj-schema-ApiDataRow', () {
     unittest.test('to-json--from-json', () async {
       final o = buildApiDataRow();
@@ -690,6 +1183,16 @@
     });
   });
 
+  unittest.group('obj-schema-DetectedItems', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildDetectedItems();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.DetectedItems.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkDetectedItems(od);
+    });
+  });
+
   unittest.group('obj-schema-Image', () {
     unittest.test('to-json--from-json', () async {
       final o = buildImage();
@@ -700,6 +1203,46 @@
     });
   });
 
+  unittest.group('obj-schema-IndexStatusInspectionResult', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildIndexStatusInspectionResult();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.IndexStatusInspectionResult.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkIndexStatusInspectionResult(od);
+    });
+  });
+
+  unittest.group('obj-schema-InspectUrlIndexRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildInspectUrlIndexRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.InspectUrlIndexRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkInspectUrlIndexRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-InspectUrlIndexResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildInspectUrlIndexResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.InspectUrlIndexResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkInspectUrlIndexResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-Item', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildItem();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Item.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkItem(od);
+    });
+  });
+
   unittest.group('obj-schema-MobileFriendlyIssue', () {
     unittest.test('to-json--from-json', () async {
       final o = buildMobileFriendlyIssue();
@@ -710,6 +1253,26 @@
     });
   });
 
+  unittest.group('obj-schema-MobileUsabilityInspectionResult', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildMobileUsabilityInspectionResult();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.MobileUsabilityInspectionResult.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkMobileUsabilityInspectionResult(od);
+    });
+  });
+
+  unittest.group('obj-schema-MobileUsabilityIssue', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildMobileUsabilityIssue();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.MobileUsabilityIssue.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkMobileUsabilityIssue(od);
+    });
+  });
+
   unittest.group('obj-schema-ResourceIssue', () {
     unittest.test('to-json--from-json', () async {
       final o = buildResourceIssue();
@@ -720,6 +1283,26 @@
     });
   });
 
+  unittest.group('obj-schema-RichResultsInspectionResult', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildRichResultsInspectionResult();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.RichResultsInspectionResult.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkRichResultsInspectionResult(od);
+    });
+  });
+
+  unittest.group('obj-schema-RichResultsIssue', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildRichResultsIssue();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.RichResultsIssue.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkRichResultsIssue(od);
+    });
+  });
+
   unittest.group('obj-schema-RunMobileFriendlyTestRequest', () {
     unittest.test('to-json--from-json', () async {
       final o = buildRunMobileFriendlyTestRequest();
@@ -790,6 +1373,16 @@
     });
   });
 
+  unittest.group('obj-schema-UrlInspectionResult', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildUrlInspectionResult();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.UrlInspectionResult.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkUrlInspectionResult(od);
+    });
+  });
+
   unittest.group('obj-schema-WmxSite', () {
     unittest.test('to-json--from-json', () async {
       final o = buildWmxSite();
@@ -1403,6 +1996,63 @@
     });
   });
 
+  unittest.group('resource-UrlInspectionIndexResource', () {
+    unittest.test('method--inspect', () async {
+      final mock = HttpServerMock();
+      final res = api.SearchConsoleApi(mock).urlInspection.index;
+      final arg_request = buildInspectUrlIndexRequest();
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.InspectUrlIndexRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkInspectUrlIndexRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 30),
+          unittest.equals('v1/urlInspection/index:inspect'),
+        );
+        pathOffset += 30;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildInspectUrlIndexResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.inspect(arg_request, $fields: arg_$fields);
+      checkInspectUrlIndexResponse(response as api.InspectUrlIndexResponse);
+    });
+  });
+
   unittest.group('resource-UrlTestingToolsMobileFriendlyTestResource', () {
     unittest.test('method--run', () async {
       final mock = HttpServerMock();
diff --git a/generated/googleapis/test/securitycenter/v1_test.dart b/generated/googleapis/test/securitycenter/v1_test.dart
index 62ee2f1..f47d4e1 100644
--- a/generated/googleapis/test/securitycenter/v1_test.dart
+++ b/generated/googleapis/test/securitycenter/v1_test.dart
@@ -385,6 +385,7 @@
     o.cvssv3 = buildCvssv3();
     o.id = 'foo';
     o.references = buildUnnamed6();
+    o.upstreamFixAvailable = true;
   }
   buildCounterCve--;
   return o;
@@ -399,6 +400,7 @@
       unittest.equals('foo'),
     );
     checkUnnamed6(o.references!);
+    unittest.expect(o.upstreamFixAvailable!, unittest.isTrue);
   }
   buildCounterCve--;
 }
diff --git a/generated/googleapis/test/servicenetworking/v1_test.dart b/generated/googleapis/test/servicenetworking/v1_test.dart
index d66d5cb..aa25979 100644
--- a/generated/googleapis/test/servicenetworking/v1_test.dart
+++ b/generated/googleapis/test/servicenetworking/v1_test.dart
@@ -172,6 +172,7 @@
   final o = api.AddSubnetworkRequest();
   buildCounterAddSubnetworkRequest++;
   if (buildCounterAddSubnetworkRequest < 3) {
+    o.checkServiceNetworkingUsePermission = true;
     o.consumer = 'foo';
     o.consumerNetwork = 'foo';
     o.description = 'foo';
@@ -193,6 +194,7 @@
 void checkAddSubnetworkRequest(api.AddSubnetworkRequest o) {
   buildCounterAddSubnetworkRequest++;
   if (buildCounterAddSubnetworkRequest < 3) {
+    unittest.expect(o.checkServiceNetworkingUsePermission!, unittest.isTrue);
     unittest.expect(
       o.consumer!,
       unittest.equals('foo'),
diff --git a/generated/googleapis/test/spanner/v1_test.dart b/generated/googleapis/test/spanner/v1_test.dart
index 1aa9a0f..aafcddb 100644
--- a/generated/googleapis/test/spanner/v1_test.dart
+++ b/generated/googleapis/test/spanner/v1_test.dart
@@ -50,6 +50,7 @@
   if (buildCounterBackup < 3) {
     o.createTime = 'foo';
     o.database = 'foo';
+    o.databaseDialect = 'foo';
     o.encryptionInfo = buildEncryptionInfo();
     o.expireTime = 'foo';
     o.name = 'foo';
@@ -73,6 +74,10 @@
       o.database!,
       unittest.equals('foo'),
     );
+    unittest.expect(
+      o.databaseDialect!,
+      unittest.equals('foo'),
+    );
     checkEncryptionInfo(o.encryptionInfo!);
     unittest.expect(
       o.expireTime!,
@@ -430,6 +435,7 @@
   buildCounterCreateDatabaseRequest++;
   if (buildCounterCreateDatabaseRequest < 3) {
     o.createStatement = 'foo';
+    o.databaseDialect = 'foo';
     o.encryptionConfig = buildEncryptionConfig();
     o.extraStatements = buildUnnamed4();
   }
@@ -444,6 +450,10 @@
       o.createStatement!,
       unittest.equals('foo'),
     );
+    unittest.expect(
+      o.databaseDialect!,
+      unittest.equals('foo'),
+    );
     checkEncryptionConfig(o.encryptionConfig!);
     checkUnnamed4(o.extraStatements!);
   }
@@ -510,6 +520,7 @@
   buildCounterDatabase++;
   if (buildCounterDatabase < 3) {
     o.createTime = 'foo';
+    o.databaseDialect = 'foo';
     o.defaultLeader = 'foo';
     o.earliestVersionTime = 'foo';
     o.encryptionConfig = buildEncryptionConfig();
@@ -531,6 +542,10 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.databaseDialect!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.defaultLeader!,
       unittest.equals('foo'),
     );
@@ -3901,6 +3916,7 @@
     o.arrayElementType = buildType();
     o.code = 'foo';
     o.structType = buildStructType();
+    o.typeAnnotation = 'foo';
   }
   buildCounterType--;
   return o;
@@ -3915,6 +3931,10 @@
       unittest.equals('foo'),
     );
     checkStructType(o.structType!);
+    unittest.expect(
+      o.typeAnnotation!,
+      unittest.equals('foo'),
+    );
   }
   buildCounterType--;
 }
diff --git a/generated/googleapis/test/storagetransfer/v1_test.dart b/generated/googleapis/test/storagetransfer/v1_test.dart
index c75961d..72a42f2 100644
--- a/generated/googleapis/test/storagetransfer/v1_test.dart
+++ b/generated/googleapis/test/storagetransfer/v1_test.dart
@@ -504,9 +504,13 @@
   final o = api.MetadataOptions();
   buildCounterMetadataOptions++;
   if (buildCounterMetadataOptions < 3) {
+    o.acl = 'foo';
     o.gid = 'foo';
+    o.kmsKey = 'foo';
     o.mode = 'foo';
+    o.storageClass = 'foo';
     o.symlink = 'foo';
+    o.temporaryHold = 'foo';
     o.uid = 'foo';
   }
   buildCounterMetadataOptions--;
@@ -517,18 +521,34 @@
   buildCounterMetadataOptions++;
   if (buildCounterMetadataOptions < 3) {
     unittest.expect(
+      o.acl!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.gid!,
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.kmsKey!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.mode!,
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.storageClass!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.symlink!,
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.temporaryHold!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.uid!,
       unittest.equals('foo'),
     );
diff --git a/generated/googleapis/test/vmmigration/v1_test.dart b/generated/googleapis/test/vmmigration/v1_test.dart
index 2755e34..6ff97de 100644
--- a/generated/googleapis/test/vmmigration/v1_test.dart
+++ b/generated/googleapis/test/vmmigration/v1_test.dart
@@ -48,6 +48,40 @@
   buildCounterAddGroupMigrationRequest--;
 }
 
+core.int buildCounterApplianceVersion = 0;
+api.ApplianceVersion buildApplianceVersion() {
+  final o = api.ApplianceVersion();
+  buildCounterApplianceVersion++;
+  if (buildCounterApplianceVersion < 3) {
+    o.critical = true;
+    o.releaseNotesUri = 'foo';
+    o.uri = 'foo';
+    o.version = 'foo';
+  }
+  buildCounterApplianceVersion--;
+  return o;
+}
+
+void checkApplianceVersion(api.ApplianceVersion o) {
+  buildCounterApplianceVersion++;
+  if (buildCounterApplianceVersion < 3) {
+    unittest.expect(o.critical!, unittest.isTrue);
+    unittest.expect(
+      o.releaseNotesUri!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.uri!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.version!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterApplianceVersion--;
+}
+
 core.int buildCounterAppliedLicense = 0;
 api.AppliedLicense buildAppliedLicense() {
   final o = api.AppliedLicense();
@@ -75,6 +109,27 @@
   buildCounterAppliedLicense--;
 }
 
+core.int buildCounterAvailableUpdates = 0;
+api.AvailableUpdates buildAvailableUpdates() {
+  final o = api.AvailableUpdates();
+  buildCounterAvailableUpdates++;
+  if (buildCounterAvailableUpdates < 3) {
+    o.inPlaceUpdate = buildApplianceVersion();
+    o.newDeployableAppliance = buildApplianceVersion();
+  }
+  buildCounterAvailableUpdates--;
+  return o;
+}
+
+void checkAvailableUpdates(api.AvailableUpdates o) {
+  buildCounterAvailableUpdates++;
+  if (buildCounterAvailableUpdates < 3) {
+    checkApplianceVersion(o.inPlaceUpdate!);
+    checkApplianceVersion(o.newDeployableAppliance!);
+  }
+  buildCounterAvailableUpdates--;
+}
+
 core.int buildCounterCancelCloneJobRequest = 0;
 api.CancelCloneJobRequest buildCancelCloneJobRequest() {
   final o = api.CancelCloneJobRequest();
@@ -576,6 +631,9 @@
   final o = api.DatacenterConnector();
   buildCounterDatacenterConnector++;
   if (buildCounterDatacenterConnector < 3) {
+    o.applianceInfrastructureVersion = 'foo';
+    o.applianceSoftwareVersion = 'foo';
+    o.availableVersions = buildAvailableUpdates();
     o.bucket = 'foo';
     o.createTime = 'foo';
     o.error = buildStatus();
@@ -585,6 +643,7 @@
     o.state = 'foo';
     o.stateTime = 'foo';
     o.updateTime = 'foo';
+    o.upgradeStatus = buildUpgradeStatus();
     o.version = 'foo';
   }
   buildCounterDatacenterConnector--;
@@ -595,6 +654,15 @@
   buildCounterDatacenterConnector++;
   if (buildCounterDatacenterConnector < 3) {
     unittest.expect(
+      o.applianceInfrastructureVersion!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.applianceSoftwareVersion!,
+      unittest.equals('foo'),
+    );
+    checkAvailableUpdates(o.availableVersions!);
+    unittest.expect(
       o.bucket!,
       unittest.equals('foo'),
     );
@@ -627,6 +695,7 @@
       o.updateTime!,
       unittest.equals('foo'),
     );
+    checkUpgradeStatus(o.upgradeStatus!);
     unittest.expect(
       o.version!,
       unittest.equals('foo'),
@@ -1977,6 +2046,67 @@
   buildCounterTargetProject--;
 }
 
+core.int buildCounterUpgradeApplianceRequest = 0;
+api.UpgradeApplianceRequest buildUpgradeApplianceRequest() {
+  final o = api.UpgradeApplianceRequest();
+  buildCounterUpgradeApplianceRequest++;
+  if (buildCounterUpgradeApplianceRequest < 3) {
+    o.requestId = 'foo';
+  }
+  buildCounterUpgradeApplianceRequest--;
+  return o;
+}
+
+void checkUpgradeApplianceRequest(api.UpgradeApplianceRequest o) {
+  buildCounterUpgradeApplianceRequest++;
+  if (buildCounterUpgradeApplianceRequest < 3) {
+    unittest.expect(
+      o.requestId!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterUpgradeApplianceRequest--;
+}
+
+core.int buildCounterUpgradeStatus = 0;
+api.UpgradeStatus buildUpgradeStatus() {
+  final o = api.UpgradeStatus();
+  buildCounterUpgradeStatus++;
+  if (buildCounterUpgradeStatus < 3) {
+    o.error = buildStatus();
+    o.previousVersion = 'foo';
+    o.startTime = 'foo';
+    o.state = 'foo';
+    o.version = 'foo';
+  }
+  buildCounterUpgradeStatus--;
+  return o;
+}
+
+void checkUpgradeStatus(api.UpgradeStatus o) {
+  buildCounterUpgradeStatus++;
+  if (buildCounterUpgradeStatus < 3) {
+    checkStatus(o.error!);
+    unittest.expect(
+      o.previousVersion!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.startTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.version!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterUpgradeStatus--;
+}
+
 core.List<api.VmUtilizationInfo> buildUnnamed40() => [
       buildVmUtilizationInfo(),
       buildVmUtilizationInfo(),
@@ -2287,6 +2417,16 @@
     });
   });
 
+  unittest.group('obj-schema-ApplianceVersion', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildApplianceVersion();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ApplianceVersion.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkApplianceVersion(od);
+    });
+  });
+
   unittest.group('obj-schema-AppliedLicense', () {
     unittest.test('to-json--from-json', () async {
       final o = buildAppliedLicense();
@@ -2297,6 +2437,16 @@
     });
   });
 
+  unittest.group('obj-schema-AvailableUpdates', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAvailableUpdates();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AvailableUpdates.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAvailableUpdates(od);
+    });
+  });
+
   unittest.group('obj-schema-CancelCloneJobRequest', () {
     unittest.test('to-json--from-json', () async {
       final o = buildCancelCloneJobRequest();
@@ -2677,6 +2827,26 @@
     });
   });
 
+  unittest.group('obj-schema-UpgradeApplianceRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildUpgradeApplianceRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.UpgradeApplianceRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkUpgradeApplianceRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-UpgradeStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildUpgradeStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.UpgradeStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkUpgradeStatus(od);
+    });
+  });
+
   unittest.group('obj-schema-UtilizationReport', () {
     unittest.test('to-json--from-json', () async {
       final o = buildUtilizationReport();
@@ -4203,6 +4373,69 @@
       checkListDatacenterConnectorsResponse(
           response as api.ListDatacenterConnectorsResponse);
     });
+
+    unittest.test('method--upgradeAppliance', () async {
+      final mock = HttpServerMock();
+      final res = api.VMMigrationServiceApi(mock)
+          .projects
+          .locations
+          .sources
+          .datacenterConnectors;
+      final arg_request = buildUpgradeApplianceRequest();
+      final arg_datacenterConnector = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.UpgradeApplianceRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkUpgradeApplianceRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 3),
+          unittest.equals('v1/'),
+        );
+        pathOffset += 3;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.upgradeAppliance(
+          arg_request, arg_datacenterConnector,
+          $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
   });
 
   unittest.group('resource-ProjectsLocationsSourcesMigratingVmsResource', () {
diff --git a/generated/googleapis_beta/CHANGELOG.md b/generated/googleapis_beta/CHANGELOG.md
index bc0d52c..986e388 100644
--- a/generated/googleapis_beta/CHANGELOG.md
+++ b/generated/googleapis_beta/CHANGELOG.md
@@ -1,6 +1,9 @@
-## 8.0.0-dev
+## 8.0.0
 
+- `cloudfunctions` new!
+- `gkehub` - new!
 - `cloudsupport` - new!
+- `transcoder` - **REMOVED** now in `package:googleapis`
 
 ## 7.0.0
 
diff --git a/generated/googleapis_beta/README.md b/generated/googleapis_beta/README.md
index 3651232..6a06037 100644
--- a/generated/googleapis_beta/README.md
+++ b/generated/googleapis_beta/README.md
@@ -18,243 +18,248 @@
 Accesses the latest features for managing Authorized Buyers accounts, Real-Time Bidding configurations and auction metrics, and Marketplace programmatic deals.
 
 - [Documentation](https://developers.google.com/authorized-buyers/apis/reference/rest/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/adexchangebuyer2.v2beta1/adexchangebuyer2.v2beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/adexchangebuyer2.v2beta1/adexchangebuyer2.v2beta1-library.html)
 
 #### Google Workspace Alert Center API - `alertcenter.v1beta1`
 
 Manages alerts on issues affecting your domain.
 
 - [Documentation](https://developers.google.com/admin-sdk/alertcenter/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/alertcenter.v1beta1/alertcenter.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/alertcenter.v1beta1/alertcenter.v1beta1-library.html)
 
 #### Google Analytics Admin API - `analyticsadmin.v1alpha`
 
 - [Documentation](https://developers.google.com/analytics/devguides/config/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/analyticsadmin.v1alpha/analyticsadmin.v1alpha-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/analyticsadmin.v1alpha/analyticsadmin.v1alpha-library.html)
 
 #### Google Analytics Data API - `analyticsdata.v1beta`
 
 Accesses report data in Google Analytics.
 
 - [Documentation](https://developers.google.com/analytics/devguides/reporting/data/v1/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/analyticsdata.v1beta/analyticsdata.v1beta-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/analyticsdata.v1beta/analyticsdata.v1beta-library.html)
 
 #### Area120 Tables API - `area120tables.v1alpha1`
 
 - [Documentation](https://support.google.com/area120-tables/answer/10011390)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/area120tables.v1alpha1/area120tables.v1alpha1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/area120tables.v1alpha1/area120tables.v1alpha1-library.html)
 
 #### BigQuery Connection API - `bigqueryconnection.v1beta1`
 
 Allows users to manage BigQuery connections to external data sources.
 
 - [Documentation](https://cloud.google.com/bigquery/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/bigqueryconnection.v1beta1/bigqueryconnection.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/bigqueryconnection.v1beta1/bigqueryconnection.v1beta1-library.html)
 
 #### Error Reporting API - `clouderrorreporting.v1beta1`
 
 Groups and counts similar errors from cloud services and applications, reports new errors, and provides access to error groups and their associated errors. 
 
 - [Documentation](https://cloud.google.com/error-reporting/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/clouderrorreporting.v1beta1/clouderrorreporting.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/clouderrorreporting.v1beta1/clouderrorreporting.v1beta1-library.html)
+
+#### Cloud Functions API - `cloudfunctions.v2beta`
+
+Manages lightweight user-provided functions executed in response to events.
+
+- [Documentation](https://cloud.google.com/functions)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/cloudfunctions.v2beta/cloudfunctions.v2beta-library.html)
 
 #### Google Cloud Support API - `cloudsupport.v2beta`
 
 Manages Google Cloud technical support cases for Customer Care support offerings. 
 
 - [Documentation](https://cloud.google.com/support/docs/apis)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/cloudsupport.v2beta/cloudsupport.v2beta-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/cloudsupport.v2beta/cloudsupport.v2beta-library.html)
 
 #### Container Analysis API - `containeranalysis.v1beta1`
 
 An implementation of the Grafeas API, which stores, and enables querying and retrieval of critical metadata about all of your software artifacts.
 
 - [Documentation](https://cloud.google.com/container-analysis/api/reference/rest/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/containeranalysis.v1beta1/containeranalysis.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/containeranalysis.v1beta1/containeranalysis.v1beta1-library.html)
 
 #### Google Cloud Data Catalog API - `datacatalog.v1beta1`
 
 A fully managed and highly scalable data discovery and metadata management service. 
 
 - [Documentation](https://cloud.google.com/data-catalog/docs/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/datacatalog.v1beta1/datacatalog.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/datacatalog.v1beta1/datacatalog.v1beta1-library.html)
 
 #### Dataflow API - `dataflow.v1b3`
 
 Manages Google Cloud Dataflow projects on Google Cloud Platform.
 
 - [Documentation](https://cloud.google.com/dataflow)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/dataflow.v1b3/dataflow.v1b3-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/dataflow.v1b3/dataflow.v1b3-library.html)
 
 #### Data Labeling API - `datalabeling.v1beta1`
 
 Public API for Google Cloud AI Data Labeling Service.
 
 - [Documentation](https://cloud.google.com/data-labeling/docs/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/datalabeling.v1beta1/datalabeling.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/datalabeling.v1beta1/datalabeling.v1beta1-library.html)
 
 #### Datastream API - `datastream.v1alpha1`
 
 - [Documentation](https://cloud.google.com/datastream/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/datastream.v1alpha1/datastream.v1alpha1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/datastream.v1alpha1/datastream.v1alpha1-library.html)
 
 #### Cloud Document AI API - `documentai.v1beta3`
 
 Service to parse structured information from unstructured or semi-structured documents using state-of-the-art Google AI such as natural language, computer vision, translation, and AutoML.
 
 - [Documentation](https://cloud.google.com/document-ai/docs/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/documentai.v1beta3/documentai.v1beta3-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/documentai.v1beta3/documentai.v1beta3-library.html)
 
 #### Cloud Domains API - `domains.v1beta1`
 
 Enables management and configuration of domain names.
 
 - [Documentation](https://cloud.google.com/domains/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/domains.v1beta1/domains.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/domains.v1beta1/domains.v1beta1-library.html)
 
 #### Fact Check Tools API - `factchecktools.v1alpha1`
 
 - [Documentation](https://developers.google.com/fact-check/tools/api/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/factchecktools.v1alpha1/factchecktools.v1alpha1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/factchecktools.v1alpha1/factchecktools.v1alpha1-library.html)
 
 #### Firebase Cloud Messaging Data API - `fcmdata.v1beta1`
 
 Provides additional information about Firebase Cloud Messaging (FCM) message sends and deliveries.
 
 - [Documentation](https://firebase.google.com/docs/cloud-messaging)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/fcmdata.v1beta1/fcmdata.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/fcmdata.v1beta1/fcmdata.v1beta1-library.html)
 
 #### Firebase Management API - `firebase.v1beta1`
 
 The Firebase Management API enables programmatic setup and management of Firebase projects, including a project's Firebase resources and Firebase apps.
 
 - [Documentation](https://firebase.google.com)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/firebase.v1beta1/firebase.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/firebase.v1beta1/firebase.v1beta1-library.html)
 
 #### Firebase App Check API - `firebaseappcheck.v1beta`
 
 Firebase App Check works alongside other Firebase services to help protect your backend resources from abuse, such as billing fraud or phishing.
 
 - [Documentation](https://firebase.google.com/docs/app-check)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/firebaseappcheck.v1beta/firebaseappcheck.v1beta-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/firebaseappcheck.v1beta/firebaseappcheck.v1beta-library.html)
 
 #### Firebase Realtime Database Management API - `firebasedatabase.v1beta`
 
 The Firebase Realtime Database Management API enables programmatic provisioning and management of Realtime Database instances.
 
 - [Documentation](https://firebase.google.com/docs/reference/rest/database/database-management/rest/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/firebasedatabase.v1beta/firebasedatabase.v1beta-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/firebasedatabase.v1beta/firebasedatabase.v1beta-library.html)
 
 #### Cloud Storage for Firebase API - `firebasestorage.v1beta`
 
 The Cloud Storage for Firebase API enables programmatic management of Cloud Storage buckets for use in Firebase projects
 
 - [Documentation](https://firebase.google.com/docs/storage)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/firebasestorage.v1beta/firebasestorage.v1beta-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/firebasestorage.v1beta/firebasestorage.v1beta-library.html)
+
+#### GKE Hub API - `gkehub.v2alpha`
+
+- [Documentation](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/gkehub.v2alpha/gkehub.v2alpha-library.html)
 
 #### Idea Hub API - `ideahub.v1beta`
 
 This is an invitation-only API.
 
 - [Documentation](https://console.cloud.google.com/apis/library/ideahub.googleapis.com)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/ideahub.v1beta/ideahub.v1beta-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/ideahub.v1beta/ideahub.v1beta-library.html)
 
 #### Cloud Life Sciences API - `lifesciences.v2beta`
 
 Cloud Life Sciences is a suite of services and tools for managing, processing, and transforming life sciences data.
 
 - [Documentation](https://cloud.google.com/life-sciences)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/lifesciences.v2beta/lifesciences.v2beta-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/lifesciences.v2beta/lifesciences.v2beta-library.html)
 
 #### Dataproc Metastore API - `metastore.v1beta`
 
 The Dataproc Metastore API is used to manage the lifecycle and configuration of metastore services.
 
 - [Documentation](https://cloud.google.com/dataproc-metastore/docs)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/metastore.v1beta/metastore.v1beta-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/metastore.v1beta/metastore.v1beta-library.html)
 
 #### Network Connectivity API - `networkconnectivity.v1alpha1`
 
 The Network Connectivity API provides access to Network Connectivity Center.
 
 - [Documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/networkconnectivity.v1alpha1/networkconnectivity.v1alpha1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/networkconnectivity.v1alpha1/networkconnectivity.v1alpha1-library.html)
 
 #### Network Security API - `networksecurity.v1beta1`
 
 - [Documentation](https://cloud.google.com/networking)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/networksecurity.v1beta1/networksecurity.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/networksecurity.v1beta1/networksecurity.v1beta1-library.html)
 
 #### On-Demand Scanning API - `ondemandscanning.v1beta1`
 
 A service to scan container images for vulnerabilities.
 
 - [Documentation](https://cloud.google.com/container-analysis/docs/on-demand-scanning/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/ondemandscanning.v1beta1/ondemandscanning.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/ondemandscanning.v1beta1/ondemandscanning.v1beta1-library.html)
 
 #### OS Config API - `osconfig.v1alpha`
 
 OS management tools that can be used for patch management, patch compliance, and configuration management on VM instances.
 
 - [Documentation](https://cloud.google.com/compute/docs/osconfig/rest)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/osconfig.v1alpha/osconfig.v1alpha-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/osconfig.v1alpha/osconfig.v1alpha-library.html)
 
 #### Policy Simulator API - `policysimulator.v1beta1`
 
  Policy Simulator is a collection of endpoints for creating, running, and viewing a Replay. A `Replay` is a type of simulation that lets you see how your members' access to resources might change if you changed your IAM policy. During a `Replay`, Policy Simulator re-evaluates, or replays, past access attempts under both the current policy and your proposed policy, and compares those results to determine how your members' access might change under the proposed policy.
 
 - [Documentation](https://cloud.google.com/iam/docs/simulating-access)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/policysimulator.v1beta1/policysimulator.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/policysimulator.v1beta1/policysimulator.v1beta1-library.html)
 
 #### Certificate Authority API - `privateca.v1beta1`
 
 The Certificate Authority Service API is a highly-available, scalable service that enables you to simplify and automate the management of private certificate authorities (CAs) while staying in control of your private keys. 
 
 - [Documentation](https://cloud.google.com/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/privateca.v1beta1/privateca.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/privateca.v1beta1/privateca.v1beta1-library.html)
 
 #### SAS Portal API (Testing) - `prod_tt_sasportal.v1alpha1`
 
 - [Documentation](https://developers.google.com/spectrum-access-system/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/prod_tt_sasportal.v1alpha1/prod_tt_sasportal.v1alpha1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/prod_tt_sasportal.v1alpha1/prod_tt_sasportal.v1alpha1-library.html)
 
 #### Recommendations AI (Beta) - `recommendationengine.v1beta1`
 
 Note that we now highly recommend new customers to use Retail API, which incorporates the GA version of the Recommendations AI funtionalities. To enable Retail API, please visit https://console.cloud.google.com/apis/library/retail.googleapis.com. The Recommendations AI service enables customers to build end-to-end personalized recommendation systems without requiring a high level of expertise in machine learning, recommendation system, or Google Cloud.
 
 - [Documentation](https://cloud.google.com/recommendations-ai/docs)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/recommendationengine.v1beta1/recommendationengine.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/recommendationengine.v1beta1/recommendationengine.v1beta1-library.html)
 
 #### SAS Portal API - `sasportal.v1alpha1`
 
 - [Documentation](https://developers.google.com/spectrum-access-system/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/sasportal.v1alpha1/sasportal.v1alpha1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/sasportal.v1alpha1/sasportal.v1alpha1-library.html)
 
 #### Cloud SQL Admin API - `sqladmin.v1beta4`
 
 API for Cloud SQL database instance management
 
 - [Documentation](https://developers.google.com/cloud-sql/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/sqladmin.v1beta4/sqladmin.v1beta4-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/sqladmin.v1beta4/sqladmin.v1beta4-library.html)
 
 #### Cloud Tool Results API - `toolresults.v1beta3`
 
 API to publish and access results from developer tools.
 
 - [Documentation](https://firebase.google.com/docs/test-lab/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/toolresults.v1beta3/toolresults.v1beta3-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/toolresults.v1beta3/toolresults.v1beta3-library.html)
 
 #### Cloud TPU API - `tpu.v2alpha1`
 
 TPU API provides customers with access to Google TPU technology.
 
 - [Documentation](https://cloud.google.com/tpu/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/tpu.v2alpha1/tpu.v2alpha1-library.html)
-
-#### Transcoder API - `transcoder.v1beta1`
-
-This API converts video files into formats suitable for consumer distribution. 
-
-- [Documentation](https://cloud.google.com/transcoder/docs/)
-- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0-dev/transcoder.v1beta1/transcoder.v1beta1-library.html)
+- [API details](https://pub.dev/documentation/googleapis_beta/8.0.0/tpu.v2alpha1/tpu.v2alpha1-library.html)
 
diff --git a/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart b/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
index 937ef0a..f4c4b1d 100644
--- a/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
+++ b/generated/googleapis_beta/lib/adexchangebuyer2/v2beta1.dart
@@ -5303,10 +5303,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// Daypart targeting message that specifies if the ad can be shown only during
diff --git a/generated/googleapis_beta/lib/analyticsadmin/v1alpha.dart b/generated/googleapis_beta/lib/analyticsadmin/v1alpha.dart
index e48c3c1..63e3f22 100644
--- a/generated/googleapis_beta/lib/analyticsadmin/v1alpha.dart
+++ b/generated/googleapis_beta/lib/analyticsadmin/v1alpha.dart
@@ -1200,11 +1200,12 @@
   ///
   /// [filter] - Required. An expression for filtering the results of the
   /// request. Fields eligible for filtering are: `parent:`(The resource name of
-  /// the parent account) or `ancestor:`(The resource name of the parent
-  /// account) or `firebase_project:`(The id or number of the linked firebase
-  /// project). Some examples of filters: ``` | Filter | Description |
+  /// the parent account/property) or `ancestor:`(The resource name of the
+  /// parent account) or `firebase_project:`(The id or number of the linked
+  /// firebase project). Some examples of filters: ``` | Filter | Description |
   /// |-----------------------------|-------------------------------------------|
   /// | parent:accounts/123 | The account with account id: 123. | |
+  /// parent:properties/123 | The property with property id: 123. | |
   /// ancestor:accounts/123 | The account with account id: 123. | |
   /// firebase_project:project-id | The firebase project with id: project-id. |
   /// | firebase_project:123 | The firebase project with number: 123. | ```
@@ -2359,6 +2360,48 @@
         _response as core.Map<core.String, core.dynamic>);
   }
 
+  /// Returns the Site Tag for the specified web stream.
+  ///
+  /// Site Tags are immutable singletons.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the site tag to lookup. Note that site tags
+  /// are singletons and do not have unique IDs. Format:
+  /// properties/{property_id}/dataStreams/{stream_id}/globalSiteTag Example:
+  /// "properties/123/dataStreams/456/globalSiteTag"
+  /// Value must have pattern
+  /// `^properties/\[^/\]+/dataStreams/\[^/\]+/globalSiteTag$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GoogleAnalyticsAdminV1alphaGlobalSiteTag].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GoogleAnalyticsAdminV1alphaGlobalSiteTag> getGlobalSiteTag(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1alpha/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return GoogleAnalyticsAdminV1alphaGlobalSiteTag.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
   /// Lists DataStreams on a property.
   ///
   /// Request parameters:
@@ -4321,48 +4364,6 @@
         _response as core.Map<core.String, core.dynamic>);
   }
 
-  /// Returns the Site Tag for the specified web stream.
-  ///
-  /// Site Tags are immutable singletons.
-  ///
-  /// Request parameters:
-  ///
-  /// [name] - Required. The name of the site tag to lookup. Note that site tags
-  /// are singletons and do not have unique IDs. Format:
-  /// properties/{property_id}/webDataStreams/{stream_id}/globalSiteTag Example:
-  /// "properties/123/webDataStreams/456/globalSiteTag"
-  /// Value must have pattern
-  /// `^properties/\[^/\]+/webDataStreams/\[^/\]+/globalSiteTag$`.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [GoogleAnalyticsAdminV1alphaGlobalSiteTag].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<GoogleAnalyticsAdminV1alphaGlobalSiteTag> getGlobalSiteTag(
-    core.String name, {
-    core.String? $fields,
-  }) async {
-    final _queryParams = <core.String, core.List<core.String>>{
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1alpha/' + core.Uri.encodeFull('$name');
-
-    final _response = await _requester.request(
-      _url,
-      'GET',
-      queryParams: _queryParams,
-    );
-    return GoogleAnalyticsAdminV1alphaGlobalSiteTag.fromJson(
-        _response as core.Map<core.String, core.dynamic>);
-  }
-
   /// Returns child web data streams under the specified parent property.
   ///
   /// Web data streams will be excluded if the caller does not have access.
@@ -6329,11 +6330,14 @@
 }
 
 /// Read-only resource with the tag for sending data from a website to a
-/// WebDataStream.
+/// DataStream.
+///
+/// Only present for web DataStream resources.
 class GoogleAnalyticsAdminV1alphaGlobalSiteTag {
   /// Resource name for this GlobalSiteTag resource.
   ///
-  /// Format: properties/{propertyId}/globalSiteTag
+  /// Format: properties/{property_id}/dataStreams/{stream_id}/globalSiteTag
+  /// Example: "properties/123/dataStreams/456/globalSiteTag"
   ///
   /// Output only.
   core.String? name;
diff --git a/generated/googleapis_beta/lib/cloudfunctions/v2beta.dart b/generated/googleapis_beta/lib/cloudfunctions/v2beta.dart
new file mode 100644
index 0000000..8294c80
--- /dev/null
+++ b/generated/googleapis_beta/lib/cloudfunctions/v2beta.dart
@@ -0,0 +1,2280 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+// ignore_for_file: camel_case_types
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_string_interpolations
+
+/// Cloud Functions API - v2beta
+///
+/// Manages lightweight user-provided functions executed in response to events.
+///
+/// For more information, see <https://cloud.google.com/functions>
+///
+/// Create an instance of [CloudFunctionsApi] to access these resources:
+///
+/// - [ProjectsResource]
+///   - [ProjectsLocationsResource]
+///     - [ProjectsLocationsFunctionsResource]
+///     - [ProjectsLocationsOperationsResource]
+///     - [ProjectsLocationsRuntimesResource]
+library cloudfunctions.v2beta;
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+// ignore: deprecated_member_use_from_same_package
+import '../shared.dart';
+import '../src/user_agent.dart';
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+/// Manages lightweight user-provided functions executed in response to events.
+class CloudFunctionsApi {
+  /// See, edit, configure, and delete your Google Cloud data and see the email
+  /// address for your Google Account.
+  static const cloudPlatformScope =
+      'https://www.googleapis.com/auth/cloud-platform';
+
+  final commons.ApiRequester _requester;
+
+  ProjectsResource get projects => ProjectsResource(_requester);
+
+  CloudFunctionsApi(http.Client client,
+      {core.String rootUrl = 'https://cloudfunctions.googleapis.com/',
+      core.String servicePath = ''})
+      : _requester =
+            commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
+}
+
+class ProjectsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsResource get locations =>
+      ProjectsLocationsResource(_requester);
+
+  ProjectsResource(commons.ApiRequester client) : _requester = client;
+}
+
+class ProjectsLocationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsFunctionsResource get functions =>
+      ProjectsLocationsFunctionsResource(_requester);
+  ProjectsLocationsOperationsResource get operations =>
+      ProjectsLocationsOperationsResource(_requester);
+  ProjectsLocationsRuntimesResource get runtimes =>
+      ProjectsLocationsRuntimesResource(_requester);
+
+  ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
+
+  /// Lists information about the supported locations for this service.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource that owns the locations collection, if applicable.
+  /// Value must have pattern `^projects/\[^/\]+$`.
+  ///
+  /// [filter] - A filter to narrow down results to a preferred subset. The
+  /// filtering language accepts strings like "displayName=tokyo", and is
+  /// documented in more detail in \[AIP-160\](https://google.aip.dev/160).
+  ///
+  /// [pageSize] - The maximum number of results to return. If not set, the
+  /// service selects a default.
+  ///
+  /// [pageToken] - A page token received from the `next_page_token` field in
+  /// the response. Send that page token to receive the subsequent page.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListLocationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListLocationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$name') + '/locations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListLocationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsFunctionsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsFunctionsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates a new function.
+  ///
+  /// If a function with the given name already exists in the specified project,
+  /// the long running operation will return `ALREADY_EXISTS` error.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The project and location in which the function should
+  /// be created, specified in the format `projects / * /locations / * `
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [functionId] - The ID to use for the function, which will become the final
+  /// component of the function's resource name. This value should be 4-63
+  /// characters, and valid characters are /a-z-/.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> create(
+    Function_ request,
+    core.String parent, {
+    core.String? functionId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (functionId != null) 'functionId': [functionId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$parent') + '/functions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Deletes a function with the given name from the specified project.
+  ///
+  /// If the given function is used by some trigger, the trigger will be updated
+  /// to remove this function.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the function which should be deleted.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/functions/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns a signed URL for downloading deployed function source code.
+  ///
+  /// The URL is only valid for a limited period and should be used within 30
+  /// minutes of generation. For more information about the signed URL usage
+  /// see: https://cloud.google.com/storage/docs/access-control/signed-urls
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of function for which source code Google Cloud
+  /// Storage signed URL should be generated.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/functions/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GenerateDownloadUrlResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GenerateDownloadUrlResponse> generateDownloadUrl(
+    GenerateDownloadUrlRequest request,
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v2beta/' + core.Uri.encodeFull('$name') + ':generateDownloadUrl';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GenerateDownloadUrlResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns a signed URL for uploading a function source code.
+  ///
+  /// For more information about the signed URL usage see:
+  /// https://cloud.google.com/storage/docs/access-control/signed-urls. Once the
+  /// function source code upload is complete, the used signed URL should be
+  /// provided in CreateFunction or UpdateFunction request as a reference to the
+  /// function source code. When uploading source code to the generated signed
+  /// URL, please follow these restrictions: * Source file type should be a zip
+  /// file. * No credentials should be attached - the signed URLs provide access
+  /// to the target bucket using internal service identity; if credentials were
+  /// attached, the identity from the credentials would be used, but that
+  /// identity does not have permissions to upload files to the URL. When making
+  /// a HTTP PUT request, these two headers need to be specified: *
+  /// `content-type: application/zip` And this header SHOULD NOT be specified: *
+  /// `Authorization: Bearer YOUR_TOKEN`
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The project and location in which the Google Cloud
+  /// Storage signed URL should be generated, specified in the format `projects
+  /// / * /locations / * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [GenerateUploadUrlResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<GenerateUploadUrlResponse> generateUploadUrl(
+    GenerateUploadUrlRequest request,
+    core.String parent, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' +
+        core.Uri.encodeFull('$parent') +
+        '/functions:generateUploadUrl';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return GenerateUploadUrlResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns a function with the given name from the requested project.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the function which details should be
+  /// obtained.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/functions/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Function_].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Function_> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Function_.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Gets the access control policy for a resource.
+  ///
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/functions/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy. Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected. Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset. The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1. To learn which resources support
+  /// conditions in their IAM policies, see the
+  /// [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns a list of functions that belong to the requested project.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The project and location from which the function
+  /// should be listed, specified in the format `projects / * /locations / * `
+  /// If you want to list functions in all locations, use "-" in place of a
+  /// location. When listing functions in all locations, if one or more
+  /// location(s) are unreachable, the response will contain functions from all
+  /// reachable locations along with the names of any unreachable locations.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - The filter for Functions that match the filter expression,
+  /// following the syntax outlined in https://google.aip.dev/160.
+  ///
+  /// [orderBy] - The sorting order of the resources returned. Value should be a
+  /// comma separated list of fields. The default sorting oder is ascending. See
+  /// https://google.aip.dev/132#ordering.
+  ///
+  /// [pageSize] - Maximum number of functions to return per call.
+  ///
+  /// [pageToken] - The value returned by the last `ListFunctionsResponse`;
+  /// indicates that this is a continuation of a prior `ListFunctions` call, and
+  /// that the system should return the next page of data.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListFunctionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListFunctionsResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$parent') + '/functions';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListFunctionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates existing function.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - A user-defined name of the function. Function names must be
+  /// unique globally and match pattern `projects / * /locations / * /functions
+  /// / * `
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/functions/\[^/\]+$`.
+  ///
+  /// [updateMask] - The list of fields to be updated. If no field mask is
+  /// provided, all provided fields in the request will be updated.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    Function_ request,
+    core.String name, {
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the access control policy on the specified resource.
+  ///
+  /// Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`,
+  /// and `PERMISSION_DENIED` errors.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/functions/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> setIamPolicy(
+    SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  ///
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a `NOT_FOUND` error. Note: This operation is designed to
+  /// be used for building permission-aware UIs and command-line tools, not for
+  /// authorization checking. This operation may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/functions/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TestIamPermissionsResponse> testIamPermissions(
+    TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v2beta/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsOperationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsOperationsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// 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.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists operations that match the specified filter in the request.
+  ///
+  /// If the server doesn't support this method, it returns `UNIMPLEMENTED`.
+  /// NOTE: the `name` binding allows API services to override the binding to
+  /// use different resource name schemes, such as `users / * /operations`. To
+  /// override the binding, API services can add a binding such as
+  /// `"/v1/{name=users / * }/operations"` to their service configuration. For
+  /// backwards compatibility, the default name includes the operations
+  /// collection id, however overriding users must ensure the name binding is
+  /// the parent resource, without the operations collection id.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Must not be set.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - Required. A filter for matching the requested operations. The
+  /// supported formats of *filter* are: To query for a specific function:
+  /// project:*,location:*,function:* To query for all of the latest operations
+  /// for a project: project:*,latest:true
+  ///
+  /// [pageSize] - The maximum number of records that should be returned.
+  /// Requested page size cannot exceed 100. If not set, the default page size
+  /// is 100. Pagination is only supported when querying for a specific
+  /// function.
+  ///
+  /// [pageToken] - Token identifying which result to start with, which is
+  /// returned by a previous list call. Pagination is only supported when
+  /// querying for a specific function.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListOperationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListOperationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$name') + '/operations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListOperationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsRuntimesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsRuntimesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Returns a list of runtimes that are supported for the requested project.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The project and location from which the runtimes
+  /// should be listed, specified in the format `projects / * /locations / * `
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - The filter for Runtimes that match the filter expression,
+  /// following the syntax outlined in https://google.aip.dev/160.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListRuntimesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListRuntimesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2beta/' + core.Uri.encodeFull('$parent') + '/runtimes';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListRuntimesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+/// Specifies the audit configuration for a service.
+///
+/// The configuration determines which permission types are logged, and what
+/// identities, if any, are exempted from logging. An AuditConfig must have one
+/// or more AuditLogConfigs. If there are AuditConfigs for both `allServices`
+/// and a specific service, the union of the two AuditConfigs is used for that
+/// service: the log_types specified in each AuditConfig are enabled, and the
+/// exempted_members in each AuditLogConfig are exempted. Example Policy with
+/// multiple AuditConfigs: { "audit_configs": \[ { "service": "allServices",
+/// "audit_log_configs": \[ { "log_type": "DATA_READ", "exempted_members": \[
+/// "user:jose@example.com" \] }, { "log_type": "DATA_WRITE" }, { "log_type":
+/// "ADMIN_READ" } \] }, { "service": "sampleservice.googleapis.com",
+/// "audit_log_configs": \[ { "log_type": "DATA_READ" }, { "log_type":
+/// "DATA_WRITE", "exempted_members": \[ "user:aliya@example.com" \] } \] } \] }
+/// For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
+/// logging. It also exempts jose@example.com from DATA_READ logging, and
+/// aliya@example.com from DATA_WRITE logging.
+class AuditConfig {
+  /// The configuration for logging of each type of permission.
+  core.List<AuditLogConfig>? auditLogConfigs;
+
+  /// Specifies a service that will be enabled for audit logging.
+  ///
+  /// For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
+  /// `allServices` is a special value that covers all services.
+  core.String? service;
+
+  AuditConfig({
+    this.auditLogConfigs,
+    this.service,
+  });
+
+  AuditConfig.fromJson(core.Map _json)
+      : this(
+          auditLogConfigs: _json.containsKey('auditLogConfigs')
+              ? (_json['auditLogConfigs'] as core.List)
+                  .map((value) => AuditLogConfig.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          service: _json.containsKey('service')
+              ? _json['service'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (auditLogConfigs != null) 'auditLogConfigs': auditLogConfigs!,
+        if (service != null) 'service': service!,
+      };
+}
+
+/// Provides the configuration for logging a type of permissions.
+///
+/// Example: { "audit_log_configs": \[ { "log_type": "DATA_READ",
+/// "exempted_members": \[ "user:jose@example.com" \] }, { "log_type":
+/// "DATA_WRITE" } \] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while
+/// exempting jose@example.com from DATA_READ logging.
+typedef AuditLogConfig = $AuditLogConfig;
+
+/// Associates `members`, or principals, with a `role`.
+class Binding {
+  /// The condition that is associated with this binding.
+  ///
+  /// If the condition evaluates to `true`, then this binding applies to the
+  /// current request. If the condition evaluates to `false`, then this binding
+  /// does not apply to the current request. However, a different role binding
+  /// might grant the same role to one or more of the principals in this
+  /// binding. To learn which resources support conditions in their IAM
+  /// policies, see the
+  /// [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+  Expr? condition;
+
+  /// Specifies the principals requesting access for a Cloud Platform resource.
+  ///
+  /// `members` can have the following values: * `allUsers`: A special
+  /// identifier that represents anyone who is on the internet; with or without
+  /// a Google account. * `allAuthenticatedUsers`: A special identifier that
+  /// represents anyone who is authenticated with a Google account or a service
+  /// account. * `user:{emailid}`: An email address that represents a specific
+  /// Google account. For example, `alice@example.com` . *
+  /// `serviceAccount:{emailid}`: An email address that represents a service
+  /// account. For example, `my-other-app@appspot.gserviceaccount.com`. *
+  /// `group:{emailid}`: An email address that represents a Google group. For
+  /// example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`:
+  /// An email address (plus unique identifier) representing a user that has
+  /// been recently deleted. For example,
+  /// `alice@example.com?uid=123456789012345678901`. If the user is recovered,
+  /// this value reverts to `user:{emailid}` and the recovered user retains the
+  /// role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`:
+  /// An email address (plus unique identifier) representing a service account
+  /// that has been recently deleted. For example,
+  /// `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If
+  /// the service account is undeleted, this value reverts to
+  /// `serviceAccount:{emailid}` and the undeleted service account retains the
+  /// role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email
+  /// address (plus unique identifier) representing a Google group that has been
+  /// recently deleted. For example,
+  /// `admins@example.com?uid=123456789012345678901`. If the group is recovered,
+  /// this value reverts to `group:{emailid}` and the recovered group retains
+  /// the role in the binding. * `domain:{domain}`: The G Suite domain (primary)
+  /// that represents all the users of that domain. For example, `google.com` or
+  /// `example.com`.
+  core.List<core.String>? members;
+
+  /// Role that is assigned to the list of `members`, or principals.
+  ///
+  /// For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+  core.String? role;
+
+  Binding({
+    this.condition,
+    this.members,
+    this.role,
+  });
+
+  Binding.fromJson(core.Map _json)
+      : this(
+          condition: _json.containsKey('condition')
+              ? Expr.fromJson(
+                  _json['condition'] as core.Map<core.String, core.dynamic>)
+              : null,
+          members: _json.containsKey('members')
+              ? (_json['members'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+          role: _json.containsKey('role') ? _json['role'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (condition != null) 'condition': condition!,
+        if (members != null) 'members': members!,
+        if (role != null) 'role': role!,
+      };
+}
+
+/// Describes the Build step of the function that builds a container from the
+/// given source.
+class BuildConfig {
+  /// The Cloud Build name of the latest successful deployment of the function.
+  ///
+  /// Output only.
+  core.String? build;
+
+  /// User managed repository created in Artifact Registry optionally with a
+  /// customer managed encryption key.
+  ///
+  /// This is the repository to which the function docker image will be pushed
+  /// after it is built by Cloud Build. If unspecified, GCF will create and use
+  /// a repository named 'gcf-artifacts' for every deployed region. It must
+  /// match the pattern
+  /// `projects/{project}/locations/{location}/repositories/{repository}`.
+  /// Cross-project repositories are not supported. Cross-location repositories
+  /// are not supported. Repository format must be 'DOCKER'.
+  ///
+  /// Optional.
+  core.String? dockerRepository;
+
+  /// The name of the function (as defined in source code) that will be
+  /// executed.
+  ///
+  /// Defaults to the resource name suffix, if not specified. For backward
+  /// compatibility, if function with given name is not found, then the system
+  /// will try to use function named "function". For Node.js this is name of a
+  /// function exported by the module specified in `source_location`.
+  core.String? entryPoint;
+
+  /// User-provided build-time environment variables for the function
+  core.Map<core.String, core.String>? environmentVariables;
+
+  /// The runtime in which to run the function.
+  ///
+  /// Required when deploying a new function, optional when updating an existing
+  /// function. For a complete list of possible choices, see the \[`gcloud`
+  /// command
+  /// reference\](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime).
+  core.String? runtime;
+
+  /// The location of the function source code.
+  Source? source;
+
+  /// A permanent fixed identifier for source.
+  ///
+  /// Output only.
+  SourceProvenance? sourceProvenance;
+
+  /// Name of the Cloud Build Custom Worker Pool that should be used to build
+  /// the function.
+  ///
+  /// The format of this field is
+  /// `projects/{project}/locations/{region}/workerPools/{workerPool}` where
+  /// {project} and {region} are the project id and region respectively where
+  /// the worker pool is defined and {workerPool} is the short name of the
+  /// worker pool. If the project id is not the same as the function, then the
+  /// Cloud Functions Service Agent
+  /// (service-@gcf-admin-robot.iam.gserviceaccount.com) must be granted the
+  /// role Cloud Build Custom Workers Builder
+  /// (roles/cloudbuild.customworkers.builder) in the project.
+  core.String? workerPool;
+
+  BuildConfig({
+    this.build,
+    this.dockerRepository,
+    this.entryPoint,
+    this.environmentVariables,
+    this.runtime,
+    this.source,
+    this.sourceProvenance,
+    this.workerPool,
+  });
+
+  BuildConfig.fromJson(core.Map _json)
+      : this(
+          build:
+              _json.containsKey('build') ? _json['build'] as core.String : null,
+          dockerRepository: _json.containsKey('dockerRepository')
+              ? _json['dockerRepository'] as core.String
+              : null,
+          entryPoint: _json.containsKey('entryPoint')
+              ? _json['entryPoint'] as core.String
+              : null,
+          environmentVariables: _json.containsKey('environmentVariables')
+              ? (_json['environmentVariables']
+                      as core.Map<core.String, core.dynamic>)
+                  .map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          runtime: _json.containsKey('runtime')
+              ? _json['runtime'] as core.String
+              : null,
+          source: _json.containsKey('source')
+              ? Source.fromJson(
+                  _json['source'] as core.Map<core.String, core.dynamic>)
+              : null,
+          sourceProvenance: _json.containsKey('sourceProvenance')
+              ? SourceProvenance.fromJson(_json['sourceProvenance']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          workerPool: _json.containsKey('workerPool')
+              ? _json['workerPool'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (build != null) 'build': build!,
+        if (dockerRepository != null) 'dockerRepository': dockerRepository!,
+        if (entryPoint != null) 'entryPoint': entryPoint!,
+        if (environmentVariables != null)
+          'environmentVariables': environmentVariables!,
+        if (runtime != null) 'runtime': runtime!,
+        if (source != null) 'source': source!,
+        if (sourceProvenance != null) 'sourceProvenance': sourceProvenance!,
+        if (workerPool != null) 'workerPool': workerPool!,
+      };
+}
+
+/// Filters events based on exact matches on the CloudEvents attributes.
+class EventFilter {
+  /// The name of a CloudEvents attribute.
+  ///
+  /// Required.
+  core.String? attribute;
+
+  /// The value for the attribute.
+  ///
+  /// Required.
+  core.String? value;
+
+  EventFilter({
+    this.attribute,
+    this.value,
+  });
+
+  EventFilter.fromJson(core.Map _json)
+      : this(
+          attribute: _json.containsKey('attribute')
+              ? _json['attribute'] as core.String
+              : null,
+          value:
+              _json.containsKey('value') ? _json['value'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (attribute != null) 'attribute': attribute!,
+        if (value != null) 'value': value!,
+      };
+}
+
+/// Describes EventTrigger, used to request events to be sent from another
+/// service.
+class EventTrigger {
+  /// Criteria used to filter events.
+  core.List<EventFilter>? eventFilters;
+
+  /// The type of event to observe.
+  ///
+  /// For example: `google.cloud.audit.log.v1.written` or
+  /// `google.cloud.pubsub.topic.v1.messagePublished`.
+  ///
+  /// Required.
+  core.String? eventType;
+
+  /// The name of a Pub/Sub topic in the same project that will be used as the
+  /// transport topic for the event delivery.
+  ///
+  /// Format: `projects/{project}/topics/{topic}`. This is only valid for events
+  /// of type `google.cloud.pubsub.topic.v1.messagePublished`. The topic
+  /// provided here will not be deleted at function deletion.
+  ///
+  /// Optional.
+  core.String? pubsubTopic;
+
+  /// If unset, then defaults to ignoring failures (i.e. not retrying them).
+  ///
+  /// Optional.
+  /// Possible string values are:
+  /// - "RETRY_POLICY_UNSPECIFIED" : Not specified.
+  /// - "RETRY_POLICY_DO_NOT_RETRY" : Do not retry.
+  /// - "RETRY_POLICY_RETRY" : Retry on any failure, retry up to 7 days with an
+  /// exponential backoff (capped at 10 seconds).
+  core.String? retryPolicy;
+
+  /// The email of the trigger's service account.
+  ///
+  /// The service account must have permission to invoke Cloud Run services, the
+  /// permission is `run.routes.invoke`. If empty, defaults to the Compute
+  /// Engine default service account:
+  /// `{project_number}-compute@developer.gserviceaccount.com`.
+  ///
+  /// Optional.
+  core.String? serviceAccountEmail;
+
+  /// The resource name of the Eventarc trigger.
+  ///
+  /// The format of this field is
+  /// `projects/{project}/locations/{region}/triggers/{trigger}`.
+  ///
+  /// Output only.
+  core.String? trigger;
+
+  /// The region that the trigger will be in.
+  ///
+  /// The trigger will only receive events originating in this region. It can be
+  /// the same region as the function, a different region or multi-region, or
+  /// the global region. If not provided, defaults to the same region as the
+  /// function.
+  core.String? triggerRegion;
+
+  EventTrigger({
+    this.eventFilters,
+    this.eventType,
+    this.pubsubTopic,
+    this.retryPolicy,
+    this.serviceAccountEmail,
+    this.trigger,
+    this.triggerRegion,
+  });
+
+  EventTrigger.fromJson(core.Map _json)
+      : this(
+          eventFilters: _json.containsKey('eventFilters')
+              ? (_json['eventFilters'] as core.List)
+                  .map((value) => EventFilter.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          eventType: _json.containsKey('eventType')
+              ? _json['eventType'] as core.String
+              : null,
+          pubsubTopic: _json.containsKey('pubsubTopic')
+              ? _json['pubsubTopic'] as core.String
+              : null,
+          retryPolicy: _json.containsKey('retryPolicy')
+              ? _json['retryPolicy'] as core.String
+              : null,
+          serviceAccountEmail: _json.containsKey('serviceAccountEmail')
+              ? _json['serviceAccountEmail'] as core.String
+              : null,
+          trigger: _json.containsKey('trigger')
+              ? _json['trigger'] as core.String
+              : null,
+          triggerRegion: _json.containsKey('triggerRegion')
+              ? _json['triggerRegion'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (eventFilters != null) 'eventFilters': eventFilters!,
+        if (eventType != null) 'eventType': eventType!,
+        if (pubsubTopic != null) 'pubsubTopic': pubsubTopic!,
+        if (retryPolicy != null) 'retryPolicy': retryPolicy!,
+        if (serviceAccountEmail != null)
+          'serviceAccountEmail': serviceAccountEmail!,
+        if (trigger != null) 'trigger': trigger!,
+        if (triggerRegion != null) 'triggerRegion': triggerRegion!,
+      };
+}
+
+/// Represents a textual expression in the Common Expression Language (CEL)
+/// syntax.
+///
+/// CEL is a C-like expression language. The syntax and semantics of CEL are
+/// documented at https://github.com/google/cel-spec. Example (Comparison):
+/// title: "Summary size limit" description: "Determines if a summary is less
+/// than 100 chars" expression: "document.summary.size() \< 100" Example
+/// (Equality): title: "Requestor is owner" description: "Determines if
+/// requestor is the document owner" expression: "document.owner ==
+/// request.auth.claims.email" Example (Logic): title: "Public documents"
+/// description: "Determine whether the document should be publicly visible"
+/// expression: "document.type != 'private' && document.type != 'internal'"
+/// Example (Data Manipulation): title: "Notification string" description:
+/// "Create a notification string with a timestamp." expression: "'New message
+/// received at ' + string(document.create_time)" The exact variables and
+/// functions that may be referenced within an expression are determined by the
+/// service that evaluates it. See the service documentation for additional
+/// information.
+typedef Expr = $Expr;
+
+/// Describes a Cloud Function that contains user computation executed in
+/// response to an event.
+///
+/// It encapsulate function and triggers configurations.
+class Function_ {
+  /// Describes the Build step of the function that builds a container from the
+  /// given source.
+  BuildConfig? buildConfig;
+
+  /// User-provided description of a function.
+  core.String? description;
+
+  /// Describe whether the function is gen1 or gen2.
+  /// Possible string values are:
+  /// - "ENVIRONMENT_UNSPECIFIED" : Unspecified
+  /// - "GEN_1" : Gen 1
+  /// - "GEN_2" : Gen 2
+  core.String? environment;
+
+  /// An Eventarc trigger managed by Google Cloud Functions that fires events in
+  /// response to a condition in another service.
+  EventTrigger? eventTrigger;
+
+  /// Labels associated with this Cloud Function.
+  core.Map<core.String, core.String>? labels;
+
+  /// A user-defined name of the function.
+  ///
+  /// Function names must be unique globally and match pattern `projects / *
+  /// /locations / * /functions / * `
+  core.String? name;
+
+  /// Describes the Service being deployed.
+  ///
+  /// Currently deploys services to Cloud Run (fully managed).
+  ServiceConfig? serviceConfig;
+
+  /// State of the function.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : Not specified. Invalid state.
+  /// - "ACTIVE" : Function has been successfully deployed and is serving.
+  /// - "FAILED" : Function deployment failed and the function isn’t serving.
+  /// - "DEPLOYING" : Function is being created or updated.
+  /// - "DELETING" : Function is being deleted.
+  /// - "UNKNOWN" : Function deployment failed and the function serving state is
+  /// undefined. The function should be updated or deleted to move it out of
+  /// this state.
+  core.String? state;
+
+  /// State Messages for this Cloud Function.
+  ///
+  /// Output only.
+  core.List<GoogleCloudFunctionsV2betaStateMessage>? stateMessages;
+
+  /// The last update timestamp of a Cloud Function.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  Function_({
+    this.buildConfig,
+    this.description,
+    this.environment,
+    this.eventTrigger,
+    this.labels,
+    this.name,
+    this.serviceConfig,
+    this.state,
+    this.stateMessages,
+    this.updateTime,
+  });
+
+  Function_.fromJson(core.Map _json)
+      : this(
+          buildConfig: _json.containsKey('buildConfig')
+              ? BuildConfig.fromJson(
+                  _json['buildConfig'] as core.Map<core.String, core.dynamic>)
+              : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          environment: _json.containsKey('environment')
+              ? _json['environment'] as core.String
+              : null,
+          eventTrigger: _json.containsKey('eventTrigger')
+              ? EventTrigger.fromJson(
+                  _json['eventTrigger'] as core.Map<core.String, core.dynamic>)
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          serviceConfig: _json.containsKey('serviceConfig')
+              ? ServiceConfig.fromJson(
+                  _json['serviceConfig'] as core.Map<core.String, core.dynamic>)
+              : null,
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+          stateMessages: _json.containsKey('stateMessages')
+              ? (_json['stateMessages'] as core.List)
+                  .map((value) =>
+                      GoogleCloudFunctionsV2betaStateMessage.fromJson(
+                          value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (buildConfig != null) 'buildConfig': buildConfig!,
+        if (description != null) 'description': description!,
+        if (environment != null) 'environment': environment!,
+        if (eventTrigger != null) 'eventTrigger': eventTrigger!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (serviceConfig != null) 'serviceConfig': serviceConfig!,
+        if (state != null) 'state': state!,
+        if (stateMessages != null) 'stateMessages': stateMessages!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Request of `GenerateDownloadUrl` method.
+typedef GenerateDownloadUrlRequest = $Empty;
+
+/// Response of `GenerateDownloadUrl` method.
+class GenerateDownloadUrlResponse {
+  /// The generated Google Cloud Storage signed URL that should be used for
+  /// function source code download.
+  core.String? downloadUrl;
+
+  GenerateDownloadUrlResponse({
+    this.downloadUrl,
+  });
+
+  GenerateDownloadUrlResponse.fromJson(core.Map _json)
+      : this(
+          downloadUrl: _json.containsKey('downloadUrl')
+              ? _json['downloadUrl'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (downloadUrl != null) 'downloadUrl': downloadUrl!,
+      };
+}
+
+/// Request of `GenerateSourceUploadUrl` method.
+typedef GenerateUploadUrlRequest = $Empty;
+
+/// Response of `GenerateSourceUploadUrl` method.
+class GenerateUploadUrlResponse {
+  /// The location of the source code in the upload bucket.
+  ///
+  /// Once the archive is uploaded using the `upload_url` use this field to set
+  /// the `function.build_config.source.storage_source` during CreateFunction
+  /// and UpdateFunction. Generation defaults to 0, as Cloud Storage provides a
+  /// new generation only upon uploading a new object or version of an object.
+  StorageSource? storageSource;
+
+  /// The generated Google Cloud Storage signed URL that should be used for a
+  /// function source code upload.
+  ///
+  /// The uploaded file should be a zip archive which contains a function.
+  core.String? uploadUrl;
+
+  GenerateUploadUrlResponse({
+    this.storageSource,
+    this.uploadUrl,
+  });
+
+  GenerateUploadUrlResponse.fromJson(core.Map _json)
+      : this(
+          storageSource: _json.containsKey('storageSource')
+              ? StorageSource.fromJson(
+                  _json['storageSource'] as core.Map<core.String, core.dynamic>)
+              : null,
+          uploadUrl: _json.containsKey('uploadUrl')
+              ? _json['uploadUrl'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (storageSource != null) 'storageSource': storageSource!,
+        if (uploadUrl != null) 'uploadUrl': uploadUrl!,
+      };
+}
+
+/// Informational messages about the state of the Cloud Function or Operation.
+class GoogleCloudFunctionsV2betaStateMessage {
+  /// The message.
+  core.String? message;
+
+  /// Severity of the state message.
+  /// Possible string values are:
+  /// - "SEVERITY_UNSPECIFIED" : Not specified. Invalid severity.
+  /// - "ERROR" : ERROR-level severity.
+  /// - "WARNING" : WARNING-level severity.
+  /// - "INFO" : INFO-level severity.
+  core.String? severity;
+
+  /// One-word CamelCase type of the state message.
+  core.String? type;
+
+  GoogleCloudFunctionsV2betaStateMessage({
+    this.message,
+    this.severity,
+    this.type,
+  });
+
+  GoogleCloudFunctionsV2betaStateMessage.fromJson(core.Map _json)
+      : this(
+          message: _json.containsKey('message')
+              ? _json['message'] as core.String
+              : null,
+          severity: _json.containsKey('severity')
+              ? _json['severity'] as core.String
+              : null,
+          type: _json.containsKey('type') ? _json['type'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (message != null) 'message': message!,
+        if (severity != null) 'severity': severity!,
+        if (type != null) 'type': type!,
+      };
+}
+
+/// Response for the `ListFunctions` method.
+class ListFunctionsResponse {
+  /// The functions that match the request.
+  core.List<Function_>? functions;
+
+  /// A token, which can be sent as `page_token` to retrieve the next page.
+  ///
+  /// If this field is omitted, there are no subsequent pages.
+  core.String? nextPageToken;
+
+  /// Locations that could not be reached.
+  ///
+  /// The response does not include any functions from these locations.
+  core.List<core.String>? unreachable;
+
+  ListFunctionsResponse({
+    this.functions,
+    this.nextPageToken,
+    this.unreachable,
+  });
+
+  ListFunctionsResponse.fromJson(core.Map _json)
+      : this(
+          functions: _json.containsKey('functions')
+              ? (_json['functions'] as core.List)
+                  .map((value) => Function_.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          unreachable: _json.containsKey('unreachable')
+              ? (_json['unreachable'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (functions != null) 'functions': functions!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (unreachable != null) 'unreachable': unreachable!,
+      };
+}
+
+/// The response message for Locations.ListLocations.
+class ListLocationsResponse {
+  /// A list of locations that matches the specified filter in the request.
+  core.List<Location>? locations;
+
+  /// The standard List next-page token.
+  core.String? nextPageToken;
+
+  ListLocationsResponse({
+    this.locations,
+    this.nextPageToken,
+  });
+
+  ListLocationsResponse.fromJson(core.Map _json)
+      : this(
+          locations: _json.containsKey('locations')
+              ? (_json['locations'] as core.List)
+                  .map((value) => Location.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (locations != null) 'locations': locations!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// The response message for Operations.ListOperations.
+class ListOperationsResponse {
+  /// The standard List next-page token.
+  core.String? nextPageToken;
+
+  /// A list of operations that matches the specified filter in the request.
+  core.List<Operation>? operations;
+
+  ListOperationsResponse({
+    this.nextPageToken,
+    this.operations,
+  });
+
+  ListOperationsResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          operations: _json.containsKey('operations')
+              ? (_json['operations'] as core.List)
+                  .map((value) => Operation.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (operations != null) 'operations': operations!,
+      };
+}
+
+/// Response for the `ListRuntimes` method.
+class ListRuntimesResponse {
+  /// The runtimes that match the request.
+  core.List<Runtime>? runtimes;
+
+  ListRuntimesResponse({
+    this.runtimes,
+  });
+
+  ListRuntimesResponse.fromJson(core.Map _json)
+      : this(
+          runtimes: _json.containsKey('runtimes')
+              ? (_json['runtimes'] as core.List)
+                  .map((value) => Runtime.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (runtimes != null) 'runtimes': runtimes!,
+      };
+}
+
+/// A resource that represents Google Cloud Platform location.
+typedef Location = $Location;
+
+/// This resource represents a long-running operation that is the result of a
+/// network API call.
+class Operation {
+  /// 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.
+  core.bool? done;
+
+  /// The error result of the operation in case of failure or cancellation.
+  Status? error;
+
+  /// 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.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? metadata;
+
+  /// 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}`.
+  core.String? name;
+
+  /// 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`.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? response;
+
+  Operation({
+    this.done,
+    this.error,
+    this.metadata,
+    this.name,
+    this.response,
+  });
+
+  Operation.fromJson(core.Map _json)
+      : this(
+          done: _json.containsKey('done') ? _json['done'] as core.bool : null,
+          error: _json.containsKey('error')
+              ? Status.fromJson(
+                  _json['error'] as core.Map<core.String, core.dynamic>)
+              : null,
+          metadata: _json.containsKey('metadata')
+              ? _json['metadata'] as core.Map<core.String, core.dynamic>
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          response: _json.containsKey('response')
+              ? _json['response'] as core.Map<core.String, core.dynamic>
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (done != null) 'done': done!,
+        if (error != null) 'error': error!,
+        if (metadata != null) 'metadata': metadata!,
+        if (name != null) 'name': name!,
+        if (response != null) 'response': response!,
+      };
+}
+
+/// An Identity and Access Management (IAM) policy, which specifies access
+/// controls for Google Cloud resources.
+///
+/// A `Policy` is a collection of `bindings`. A `binding` binds one or more
+/// `members`, or principals, to a single `role`. Principals can be user
+/// accounts, service accounts, Google groups, and domains (such as G Suite). A
+/// `role` is a named list of permissions; each `role` can be an IAM predefined
+/// role or a user-created custom role. For some types of Google Cloud
+/// resources, a `binding` can also specify a `condition`, which is a logical
+/// expression that allows access to a resource only if the expression evaluates
+/// to `true`. A condition can add constraints based on attributes of the
+/// request, the resource, or both. To learn which resources support conditions
+/// in their IAM policies, see the
+/// [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+/// **JSON example:** { "bindings": \[ { "role":
+/// "roles/resourcemanager.organizationAdmin", "members": \[
+/// "user:mike@example.com", "group:admins@example.com", "domain:google.com",
+/// "serviceAccount:my-project-id@appspot.gserviceaccount.com" \] }, { "role":
+/// "roles/resourcemanager.organizationViewer", "members": \[
+/// "user:eve@example.com" \], "condition": { "title": "expirable access",
+/// "description": "Does not grant access after Sep 2020", "expression":
+/// "request.time \< timestamp('2020-10-01T00:00:00.000Z')", } } \], "etag":
+/// "BwWWja0YfJA=", "version": 3 } **YAML example:** bindings: - members: -
+/// user:mike@example.com - group:admins@example.com - domain:google.com -
+/// serviceAccount:my-project-id@appspot.gserviceaccount.com role:
+/// roles/resourcemanager.organizationAdmin - members: - user:eve@example.com
+/// role: roles/resourcemanager.organizationViewer condition: title: expirable
+/// access description: Does not grant access after Sep 2020 expression:
+/// request.time \< timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
+/// version: 3 For a description of IAM and its features, see the
+/// [IAM documentation](https://cloud.google.com/iam/docs/).
+class Policy {
+  /// Specifies cloud audit logging configuration for this policy.
+  core.List<AuditConfig>? auditConfigs;
+
+  /// Associates a list of `members`, or principals, with a `role`.
+  ///
+  /// Optionally, may specify a `condition` that determines how and when the
+  /// `bindings` are applied. Each of the `bindings` must contain at least one
+  /// principal. The `bindings` in a `Policy` can refer to up to 1,500
+  /// principals; up to 250 of these principals can be Google groups. Each
+  /// occurrence of a principal counts towards these limits. For example, if the
+  /// `bindings` grant 50 different roles to `user:alice@example.com`, and not
+  /// to any other principal, then you can add another 1,450 principals to the
+  /// `bindings` in the `Policy`.
+  core.List<Binding>? bindings;
+
+  /// `etag` is used for optimistic concurrency control as a way to help prevent
+  /// simultaneous updates of a policy from overwriting each other.
+  ///
+  /// It is strongly suggested that systems make use of the `etag` in the
+  /// read-modify-write cycle to perform policy updates in order to avoid race
+  /// conditions: An `etag` is returned in the response to `getIamPolicy`, and
+  /// systems are expected to put that etag in the request to `setIamPolicy` to
+  /// ensure that their change will be applied to the same version of the
+  /// policy. **Important:** If you use IAM Conditions, you must include the
+  /// `etag` field whenever you call `setIamPolicy`. If you omit this field,
+  /// then IAM allows you to overwrite a version `3` policy with a version `1`
+  /// policy, and all of the conditions in the version `3` policy are lost.
+  core.String? etag;
+  core.List<core.int> get etagAsBytes => convert.base64.decode(etag!);
+
+  set etagAsBytes(core.List<core.int> _bytes) {
+    etag =
+        convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
+  }
+
+  /// Specifies the format of the policy.
+  ///
+  /// Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
+  /// are rejected. Any operation that affects conditional role bindings must
+  /// specify version `3`. This requirement applies to the following operations:
+  /// * Getting a policy that includes a conditional role binding * Adding a
+  /// conditional role binding to a policy * Changing a conditional role binding
+  /// in a policy * Removing any role binding, with or without a condition, from
+  /// a policy that includes conditions **Important:** If you use IAM
+  /// Conditions, you must include the `etag` field whenever you call
+  /// `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a
+  /// version `3` policy with a version `1` policy, and all of the conditions in
+  /// the version `3` policy are lost. If a policy does not include any
+  /// conditions, operations on that policy may specify any valid version or
+  /// leave the field unset. To learn which resources support conditions in
+  /// their IAM policies, see the
+  /// [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+  core.int? version;
+
+  Policy({
+    this.auditConfigs,
+    this.bindings,
+    this.etag,
+    this.version,
+  });
+
+  Policy.fromJson(core.Map _json)
+      : this(
+          auditConfigs: _json.containsKey('auditConfigs')
+              ? (_json['auditConfigs'] as core.List)
+                  .map((value) => AuditConfig.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          bindings: _json.containsKey('bindings')
+              ? (_json['bindings'] as core.List)
+                  .map((value) => Binding.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          etag: _json.containsKey('etag') ? _json['etag'] as core.String : null,
+          version: _json.containsKey('version')
+              ? _json['version'] as core.int
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (auditConfigs != null) 'auditConfigs': auditConfigs!,
+        if (bindings != null) 'bindings': bindings!,
+        if (etag != null) 'etag': etag!,
+        if (version != null) 'version': version!,
+      };
+}
+
+/// Location of the source in a Google Cloud Source Repository.
+class RepoSource {
+  /// Regex matching branches to build.
+  ///
+  /// The syntax of the regular expressions accepted is the syntax accepted by
+  /// RE2 and described at https://github.com/google/re2/wiki/Syntax
+  core.String? branchName;
+
+  /// Explicit commit SHA to build.
+  core.String? commitSha;
+
+  /// Directory, relative to the source root, in which to run the build.
+  ///
+  /// This must be a relative path. If a step's `dir` is specified and is an
+  /// absolute path, this value is ignored for that step's execution. eg.
+  /// helloworld (no leading slash allowed)
+  core.String? dir;
+
+  /// Only trigger a build if the revision regex does NOT match the revision
+  /// regex.
+  core.bool? invertRegex;
+
+  /// ID of the project that owns the Cloud Source Repository.
+  ///
+  /// If omitted, the project ID requesting the build is assumed.
+  core.String? projectId;
+
+  /// Name of the Cloud Source Repository.
+  core.String? repoName;
+
+  /// Regex matching tags to build.
+  ///
+  /// The syntax of the regular expressions accepted is the syntax accepted by
+  /// RE2 and described at https://github.com/google/re2/wiki/Syntax
+  core.String? tagName;
+
+  RepoSource({
+    this.branchName,
+    this.commitSha,
+    this.dir,
+    this.invertRegex,
+    this.projectId,
+    this.repoName,
+    this.tagName,
+  });
+
+  RepoSource.fromJson(core.Map _json)
+      : this(
+          branchName: _json.containsKey('branchName')
+              ? _json['branchName'] as core.String
+              : null,
+          commitSha: _json.containsKey('commitSha')
+              ? _json['commitSha'] as core.String
+              : null,
+          dir: _json.containsKey('dir') ? _json['dir'] as core.String : null,
+          invertRegex: _json.containsKey('invertRegex')
+              ? _json['invertRegex'] as core.bool
+              : null,
+          projectId: _json.containsKey('projectId')
+              ? _json['projectId'] as core.String
+              : null,
+          repoName: _json.containsKey('repoName')
+              ? _json['repoName'] as core.String
+              : null,
+          tagName: _json.containsKey('tagName')
+              ? _json['tagName'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (branchName != null) 'branchName': branchName!,
+        if (commitSha != null) 'commitSha': commitSha!,
+        if (dir != null) 'dir': dir!,
+        if (invertRegex != null) 'invertRegex': invertRegex!,
+        if (projectId != null) 'projectId': projectId!,
+        if (repoName != null) 'repoName': repoName!,
+        if (tagName != null) 'tagName': tagName!,
+      };
+}
+
+/// Describes a runtime and any special information (e.g., deprecation status)
+/// related to it.
+class Runtime {
+  /// The user facing name, eg 'Go 1.13', 'Node.js 12', etc.
+  core.String? displayName;
+
+  /// The environment for the runtime.
+  /// Possible string values are:
+  /// - "ENVIRONMENT_UNSPECIFIED" : Unspecified
+  /// - "GEN_1" : Gen 1
+  /// - "GEN_2" : Gen 2
+  core.String? environment;
+
+  /// The name of the runtime, e.g., 'go113', 'nodejs12', etc.
+  core.String? name;
+
+  /// The stage of life this runtime is in, e.g., BETA, GA, etc.
+  /// Possible string values are:
+  /// - "RUNTIME_STAGE_UNSPECIFIED" : Not specified.
+  /// - "DEVELOPMENT" : The runtime is in development.
+  /// - "ALPHA" : The runtime is in the Alpha stage.
+  /// - "BETA" : The runtime is in the Beta stage.
+  /// - "GA" : The runtime is generally available.
+  /// - "DEPRECATED" : The runtime is deprecated.
+  /// - "DECOMMISSIONED" : The runtime is no longer supported.
+  core.String? stage;
+
+  /// Warning messages, e.g., a deprecation warning.
+  core.List<core.String>? warnings;
+
+  Runtime({
+    this.displayName,
+    this.environment,
+    this.name,
+    this.stage,
+    this.warnings,
+  });
+
+  Runtime.fromJson(core.Map _json)
+      : this(
+          displayName: _json.containsKey('displayName')
+              ? _json['displayName'] as core.String
+              : null,
+          environment: _json.containsKey('environment')
+              ? _json['environment'] as core.String
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          stage:
+              _json.containsKey('stage') ? _json['stage'] as core.String : null,
+          warnings: _json.containsKey('warnings')
+              ? (_json['warnings'] as core.List)
+                  .map((value) => value as core.String)
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (displayName != null) 'displayName': displayName!,
+        if (environment != null) 'environment': environment!,
+        if (name != null) 'name': name!,
+        if (stage != null) 'stage': stage!,
+        if (warnings != null) 'warnings': warnings!,
+      };
+}
+
+/// Describes the Service being deployed.
+///
+/// Currently Supported : Cloud Run (fully managed).
+class ServiceConfig {
+  /// Whether 100% of traffic is routed to the latest revision.
+  ///
+  /// On CreateFunction and UpdateFunction, when set to true, the revision being
+  /// deployed will serve 100% of traffic, ignoring any traffic split settings,
+  /// if any. On GetFunction, true will be returned if the latest revision is
+  /// serving 100% of traffic.
+  core.bool? allTrafficOnLatestRevision;
+
+  /// The amount of memory available for a function.
+  ///
+  /// Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is
+  /// supplied the value is interpreted as bytes. See
+  /// https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
+  /// a full description.
+  core.String? availableMemory;
+
+  /// Environment variables that shall be available during function execution.
+  core.Map<core.String, core.String>? environmentVariables;
+
+  /// The ingress settings for the function, controlling what traffic can reach
+  /// it.
+  /// Possible string values are:
+  /// - "INGRESS_SETTINGS_UNSPECIFIED" : Unspecified.
+  /// - "ALLOW_ALL" : Allow HTTP traffic from public and private sources.
+  /// - "ALLOW_INTERNAL_ONLY" : Allow HTTP traffic from only private VPC
+  /// sources.
+  /// - "ALLOW_INTERNAL_AND_GCLB" : Allow HTTP traffic from private VPC sources
+  /// and through GCLB.
+  core.String? ingressSettings;
+
+  /// The limit on the maximum number of function instances that may coexist at
+  /// a given time.
+  ///
+  /// In some cases, such as rapid traffic surges, Cloud Functions may, for a
+  /// short period of time, create more instances than the specified max
+  /// instances limit. If your function cannot tolerate this temporary behavior,
+  /// you may want to factor in a safety margin and set a lower max instances
+  /// value than your function can tolerate. See the
+  /// [Max Instances](https://cloud.google.com/functions/docs/max-instances)
+  /// Guide for more details.
+  core.int? maxInstanceCount;
+
+  /// The limit on the minimum number of function instances that may coexist at
+  /// a given time.
+  ///
+  /// Function instances are kept in idle state for a short period after they
+  /// finished executing the request to reduce cold start time for subsequent
+  /// requests. Setting a minimum instance count will ensure that the given
+  /// number of instances are kept running in idle state always. This can help
+  /// with cold start times when jump in incoming request count occurs after the
+  /// idle instance would have been stopped in the default case.
+  core.int? minInstanceCount;
+
+  /// Name of the service associated with a Function.
+  ///
+  /// The format of this field is
+  /// `projects/{project}/locations/{region}/services/{service}`
+  ///
+  /// Output only.
+  core.String? service;
+
+  /// The email of the service's service account.
+  ///
+  /// If empty, defaults to
+  /// `{project_number}-compute@developer.gserviceaccount.com`.
+  core.String? serviceAccountEmail;
+
+  /// The function execution timeout.
+  ///
+  /// Execution is considered failed and can be terminated if the function is
+  /// not completed at the end of the timeout period. Defaults to 60 seconds.
+  core.int? timeoutSeconds;
+
+  /// URI of the Service deployed.
+  ///
+  /// Output only.
+  core.String? uri;
+
+  /// The Serverless VPC Access connector that this cloud function can connect
+  /// to.
+  ///
+  /// The format of this field is `projects / * /locations / * /connectors / *
+  /// `.
+  core.String? vpcConnector;
+
+  /// The egress settings for the connector, controlling what traffic is
+  /// diverted through it.
+  /// Possible string values are:
+  /// - "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED" : Unspecified.
+  /// - "PRIVATE_RANGES_ONLY" : Use the VPC Access Connector only for private IP
+  /// space from RFC1918.
+  /// - "ALL_TRAFFIC" : Force the use of VPC Access Connector for all egress
+  /// traffic from the function.
+  core.String? vpcConnectorEgressSettings;
+
+  ServiceConfig({
+    this.allTrafficOnLatestRevision,
+    this.availableMemory,
+    this.environmentVariables,
+    this.ingressSettings,
+    this.maxInstanceCount,
+    this.minInstanceCount,
+    this.service,
+    this.serviceAccountEmail,
+    this.timeoutSeconds,
+    this.uri,
+    this.vpcConnector,
+    this.vpcConnectorEgressSettings,
+  });
+
+  ServiceConfig.fromJson(core.Map _json)
+      : this(
+          allTrafficOnLatestRevision:
+              _json.containsKey('allTrafficOnLatestRevision')
+                  ? _json['allTrafficOnLatestRevision'] as core.bool
+                  : null,
+          availableMemory: _json.containsKey('availableMemory')
+              ? _json['availableMemory'] as core.String
+              : null,
+          environmentVariables: _json.containsKey('environmentVariables')
+              ? (_json['environmentVariables']
+                      as core.Map<core.String, core.dynamic>)
+                  .map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          ingressSettings: _json.containsKey('ingressSettings')
+              ? _json['ingressSettings'] as core.String
+              : null,
+          maxInstanceCount: _json.containsKey('maxInstanceCount')
+              ? _json['maxInstanceCount'] as core.int
+              : null,
+          minInstanceCount: _json.containsKey('minInstanceCount')
+              ? _json['minInstanceCount'] as core.int
+              : null,
+          service: _json.containsKey('service')
+              ? _json['service'] as core.String
+              : null,
+          serviceAccountEmail: _json.containsKey('serviceAccountEmail')
+              ? _json['serviceAccountEmail'] as core.String
+              : null,
+          timeoutSeconds: _json.containsKey('timeoutSeconds')
+              ? _json['timeoutSeconds'] as core.int
+              : null,
+          uri: _json.containsKey('uri') ? _json['uri'] as core.String : null,
+          vpcConnector: _json.containsKey('vpcConnector')
+              ? _json['vpcConnector'] as core.String
+              : null,
+          vpcConnectorEgressSettings:
+              _json.containsKey('vpcConnectorEgressSettings')
+                  ? _json['vpcConnectorEgressSettings'] as core.String
+                  : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (allTrafficOnLatestRevision != null)
+          'allTrafficOnLatestRevision': allTrafficOnLatestRevision!,
+        if (availableMemory != null) 'availableMemory': availableMemory!,
+        if (environmentVariables != null)
+          'environmentVariables': environmentVariables!,
+        if (ingressSettings != null) 'ingressSettings': ingressSettings!,
+        if (maxInstanceCount != null) 'maxInstanceCount': maxInstanceCount!,
+        if (minInstanceCount != null) 'minInstanceCount': minInstanceCount!,
+        if (service != null) 'service': service!,
+        if (serviceAccountEmail != null)
+          'serviceAccountEmail': serviceAccountEmail!,
+        if (timeoutSeconds != null) 'timeoutSeconds': timeoutSeconds!,
+        if (uri != null) 'uri': uri!,
+        if (vpcConnector != null) 'vpcConnector': vpcConnector!,
+        if (vpcConnectorEgressSettings != null)
+          'vpcConnectorEgressSettings': vpcConnectorEgressSettings!,
+      };
+}
+
+/// Request message for `SetIamPolicy` method.
+class SetIamPolicyRequest {
+  /// REQUIRED: The complete policy to be applied to the `resource`.
+  ///
+  /// The size of the policy is limited to a few 10s of KB. An empty policy is a
+  /// valid policy but certain Cloud Platform services (such as Projects) might
+  /// reject them.
+  Policy? policy;
+
+  /// OPTIONAL: A FieldMask specifying which fields of the policy to modify.
+  ///
+  /// Only the fields in the mask will be modified. If no mask is provided, the
+  /// following default mask is used: `paths: "bindings, etag"`
+  core.String? updateMask;
+
+  SetIamPolicyRequest({
+    this.policy,
+    this.updateMask,
+  });
+
+  SetIamPolicyRequest.fromJson(core.Map _json)
+      : this(
+          policy: _json.containsKey('policy')
+              ? Policy.fromJson(
+                  _json['policy'] as core.Map<core.String, core.dynamic>)
+              : null,
+          updateMask: _json.containsKey('updateMask')
+              ? _json['updateMask'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (policy != null) 'policy': policy!,
+        if (updateMask != null) 'updateMask': updateMask!,
+      };
+}
+
+/// The location of the function source code.
+class Source {
+  /// If provided, get the source from this location in a Cloud Source
+  /// Repository.
+  RepoSource? repoSource;
+
+  /// If provided, get the source from this location in Google Cloud Storage.
+  StorageSource? storageSource;
+
+  Source({
+    this.repoSource,
+    this.storageSource,
+  });
+
+  Source.fromJson(core.Map _json)
+      : this(
+          repoSource: _json.containsKey('repoSource')
+              ? RepoSource.fromJson(
+                  _json['repoSource'] as core.Map<core.String, core.dynamic>)
+              : null,
+          storageSource: _json.containsKey('storageSource')
+              ? StorageSource.fromJson(
+                  _json['storageSource'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (repoSource != null) 'repoSource': repoSource!,
+        if (storageSource != null) 'storageSource': storageSource!,
+      };
+}
+
+/// Provenance of the source.
+///
+/// Ways to find the original source, or verify that some source was used for
+/// this build.
+class SourceProvenance {
+  /// A copy of the build's `source.repo_source`, if exists, with any revisions
+  /// resolved.
+  RepoSource? resolvedRepoSource;
+
+  /// A copy of the build's `source.storage_source`, if exists, with any
+  /// generations resolved.
+  StorageSource? resolvedStorageSource;
+
+  SourceProvenance({
+    this.resolvedRepoSource,
+    this.resolvedStorageSource,
+  });
+
+  SourceProvenance.fromJson(core.Map _json)
+      : this(
+          resolvedRepoSource: _json.containsKey('resolvedRepoSource')
+              ? RepoSource.fromJson(_json['resolvedRepoSource']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          resolvedStorageSource: _json.containsKey('resolvedStorageSource')
+              ? StorageSource.fromJson(_json['resolvedStorageSource']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (resolvedRepoSource != null)
+          'resolvedRepoSource': resolvedRepoSource!,
+        if (resolvedStorageSource != null)
+          'resolvedStorageSource': resolvedStorageSource!,
+      };
+}
+
+/// 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).
+typedef Status = $Status;
+
+/// Location of the source in an archive file in Google Cloud Storage.
+class StorageSource {
+  /// Google Cloud Storage bucket containing the source (see
+  /// [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
+  core.String? bucket;
+
+  /// Google Cloud Storage generation for the object.
+  ///
+  /// If the generation is omitted, the latest generation will be used.
+  core.String? generation;
+
+  /// Google Cloud Storage object containing the source.
+  ///
+  /// This object must be a gzipped archive file (`.tar.gz`) containing source
+  /// to build.
+  core.String? object;
+
+  StorageSource({
+    this.bucket,
+    this.generation,
+    this.object,
+  });
+
+  StorageSource.fromJson(core.Map _json)
+      : this(
+          bucket: _json.containsKey('bucket')
+              ? _json['bucket'] as core.String
+              : null,
+          generation: _json.containsKey('generation')
+              ? _json['generation'] as core.String
+              : null,
+          object: _json.containsKey('object')
+              ? _json['object'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (bucket != null) 'bucket': bucket!,
+        if (generation != null) 'generation': generation!,
+        if (object != null) 'object': object!,
+      };
+}
+
+/// Request message for `TestIamPermissions` method.
+typedef TestIamPermissionsRequest = $TestIamPermissionsRequest;
+
+/// Response message for `TestIamPermissions` method.
+typedef TestIamPermissionsResponse = $TestIamPermissionsResponse;
diff --git a/generated/googleapis_beta/lib/cloudsupport/v2beta.dart b/generated/googleapis_beta/lib/cloudsupport/v2beta.dart
index 1e3ed7a..15fca60 100644
--- a/generated/googleapis_beta/lib/cloudsupport/v2beta.dart
+++ b/generated/googleapis_beta/lib/cloudsupport/v2beta.dart
@@ -370,11 +370,6 @@
   /// operator) can be used to search across displayName, description, and
   /// comments (e.g. "my search").
   ///
-  /// [orderBy] - A comma separated list of fields to order by, followed by
-  /// `asc` or `desc` postfix. This list is case-insensitive, default sorting
-  /// order is ascending, redundant space characters are insignificant. Example:
-  /// `name asc,update_time, create_time desc`
-  ///
   /// [pageSize] - The maximum number of cases fetched with each request.
   /// Defaults to 10.
   ///
@@ -394,14 +389,12 @@
   async.Future<ListCasesResponse> list(
     core.String parent, {
     core.String? filter,
-    core.String? orderBy,
     core.int? pageSize,
     core.String? pageToken,
     core.String? $fields,
   }) async {
     final _queryParams = <core.String, core.List<core.String>>{
       if (filter != null) 'filter': [filter],
-      if (orderBy != null) 'orderBy': [orderBy],
       if (pageSize != null) 'pageSize': ['${pageSize}'],
       if (pageToken != null) 'pageToken': [pageToken],
       if ($fields != null) 'fields': [$fields],
@@ -421,8 +414,8 @@
   /// Update the specified case.
   ///
   /// Only a subset of fields (display_name, description, time_zone,
-  /// subscriber_email_addresses, related_resources, severity, primary_contact,
-  /// and labels) can be updated.
+  /// subscriber_email_addresses, related_resources, severity, priority,
+  /// primary_contact, and labels) can be updated.
   ///
   /// [request] - The metadata request object.
   ///
@@ -1020,7 +1013,25 @@
   /// The resource name for the case.
   core.String? name;
 
+  /// The priority of this case.
+  ///
+  /// If this is set, do not set severity.
+  /// Possible string values are:
+  /// - "PRIORITY_UNSPECIFIED" : Severity is undefined or has not been set yet.
+  /// - "P0" : Extreme impact on a production service. Service is hard down.
+  /// - "P1" : Critical impact on a production service. Service is currently
+  /// unusable.
+  /// - "P2" : Severe impact on a production service. Service is usable but
+  /// greatly impaired.
+  /// - "P3" : Medium impact on a production service. Service is available, but
+  /// moderately impaired.
+  /// - "P4" : General questions or minor issues. Production service is fully
+  /// available.
+  core.String? priority;
+
   /// The severity of this case.
+  ///
+  /// Deprecated. Use priority instead.
   /// Possible string values are:
   /// - "SEVERITY_UNSPECIFIED" : Severity is undefined or has not been set yet.
   /// - "S0" : Extreme impact on a production service. Service is hard down.
@@ -1075,6 +1086,7 @@
     this.displayName,
     this.escalated,
     this.name,
+    this.priority,
     this.severity,
     this.state,
     this.subscriberEmailAddresses,
@@ -1106,6 +1118,9 @@
               ? _json['escalated'] as core.bool
               : null,
           name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          priority: _json.containsKey('priority')
+              ? _json['priority'] as core.String
+              : null,
           severity: _json.containsKey('severity')
               ? _json['severity'] as core.String
               : null,
@@ -1136,6 +1151,7 @@
         if (displayName != null) 'displayName': displayName!,
         if (escalated != null) 'escalated': escalated!,
         if (name != null) 'name': name!,
+        if (priority != null) 'priority': priority!,
         if (severity != null) 'severity': severity!,
         if (state != null) 'state': state!,
         if (subscriberEmailAddresses != null)
diff --git a/generated/googleapis_beta/lib/documentai/v1beta3.dart b/generated/googleapis_beta/lib/documentai/v1beta3.dart
index 0d53ac3..4080e94 100644
--- a/generated/googleapis_beta/lib/documentai/v1beta3.dart
+++ b/generated/googleapis_beta/lib/documentai/v1beta3.dart
@@ -3842,7 +3842,7 @@
   /// are cleared for widespread use. By Alpha, all significant design issues
   /// are resolved and we are in the process of verifying functionality. Alpha
   /// customers need to apply for access, agree to applicable terms, and have
-  /// their projects allowlisted. Alpha releases don’t have to be feature
+  /// their projects allowlisted. Alpha releases don't have to be feature
   /// complete, no SLAs are provided, and there are no technical support
   /// obligations, but they will be far enough along that customers can actually
   /// use them in test environments or for limited-use tests -- just like they
@@ -3855,7 +3855,7 @@
   /// - "GA" : GA features are open to all developers and are considered stable
   /// and fully qualified for production use.
   /// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
-  /// removed. For more information, see the “Deprecation Policy” section of our
+  /// removed. For more information, see the "Deprecation Policy" section of our
   /// [Terms of Service](https://cloud.google.com/terms/) and the
   /// [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation)
   /// documentation.
@@ -4408,10 +4408,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
 
 /// Represents civil time (or occasionally physical time).
diff --git a/generated/googleapis_beta/lib/fcmdata/v1beta1.dart b/generated/googleapis_beta/lib/fcmdata/v1beta1.dart
index 1025e00..78c890d 100644
--- a/generated/googleapis_beta/lib/fcmdata/v1beta1.dart
+++ b/generated/googleapis_beta/lib/fcmdata/v1beta1.dart
@@ -486,8 +486,8 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
diff --git a/generated/googleapis_beta/lib/gkehub/v2alpha.dart b/generated/googleapis_beta/lib/gkehub/v2alpha.dart
new file mode 100644
index 0000000..4bd6d13
--- /dev/null
+++ b/generated/googleapis_beta/lib/gkehub/v2alpha.dart
@@ -0,0 +1,1412 @@
+// This is a generated file (see the discoveryapis_generator project).
+
+// ignore_for_file: camel_case_types
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_string_interpolations
+
+/// GKE Hub API - v2alpha
+///
+/// For more information, see
+/// <https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster>
+///
+/// Create an instance of [GKEHubApi] to access these resources:
+///
+/// - [ProjectsResource]
+///   - [ProjectsLocationsResource]
+///     - [ProjectsLocationsFeatureConfigsResource]
+///     - [ProjectsLocationsMembershipsResource]
+///       - [ProjectsLocationsMembershipsFeaturesResource]
+///     - [ProjectsLocationsOperationsResource]
+library gkehub.v2alpha;
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
+import 'package:http/http.dart' as http;
+
+// ignore: deprecated_member_use_from_same_package
+import '../shared.dart';
+import '../src/user_agent.dart';
+
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
+    show ApiRequestError, DetailedApiRequestError;
+
+class GKEHubApi {
+  /// See, edit, configure, and delete your Google Cloud data and see the email
+  /// address for your Google Account.
+  static const cloudPlatformScope =
+      'https://www.googleapis.com/auth/cloud-platform';
+
+  final commons.ApiRequester _requester;
+
+  ProjectsResource get projects => ProjectsResource(_requester);
+
+  GKEHubApi(http.Client client,
+      {core.String rootUrl = 'https://gkehub.googleapis.com/',
+      core.String servicePath = ''})
+      : _requester =
+            commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
+}
+
+class ProjectsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsResource get locations =>
+      ProjectsLocationsResource(_requester);
+
+  ProjectsResource(commons.ApiRequester client) : _requester = client;
+}
+
+class ProjectsLocationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsFeatureConfigsResource get featureConfigs =>
+      ProjectsLocationsFeatureConfigsResource(_requester);
+  ProjectsLocationsMembershipsResource get memberships =>
+      ProjectsLocationsMembershipsResource(_requester);
+  ProjectsLocationsOperationsResource get operations =>
+      ProjectsLocationsOperationsResource(_requester);
+
+  ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
+
+  /// Gets information about a location.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Resource name for the location.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Location].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Location> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Location.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists information about the supported locations for this service.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The resource that owns the locations collection, if applicable.
+  /// Value must have pattern `^projects/\[^/\]+$`.
+  ///
+  /// [filter] - A filter to narrow down results to a preferred subset. The
+  /// filtering language accepts strings like "displayName=tokyo", and is
+  /// documented in more detail in \[AIP-160\](https://google.aip.dev/160).
+  ///
+  /// [pageSize] - The maximum number of results to return. If not set, the
+  /// service selects a default.
+  ///
+  /// [pageToken] - A page token received from the `next_page_token` field in
+  /// the response. Send that page token to receive the subsequent page.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListLocationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListLocationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name') + '/locations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListLocationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsFeatureConfigsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsFeatureConfigsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates FeatureConfig under a given parent.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The name of parent where the FeatureConfig will be
+  /// created. Specified in the format
+  /// `projects/{project}/locations/global/featureConfigs/{feature_type}/{feature_config}/`.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [featureConfigId] - The ID of the feature config to create.
+  ///
+  /// [requestId] - Idempotent request UUID.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> create(
+    FeatureConfig request,
+    core.String parent, {
+    core.String? featureConfigId,
+    core.String? requestId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (featureConfigId != null) 'featureConfigId': [featureConfigId],
+      if (requestId != null) 'requestId': [requestId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v2alpha/' + core.Uri.encodeFull('$parent') + '/featureConfigs';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Removes a FeatureConfig.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the membershipFeature to be deleted.
+  /// Specified in the format `projects / * /locations / * /featureConfigs / *
+  /// *`.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/featureConfigs/.*$`.
+  ///
+  /// [requestId] - Idempotent request UUID.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(
+    core.String name, {
+    core.String? requestId,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (requestId != null) 'requestId': [requestId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// ========= FeatureConfig Services ========= Gets details of a
+  /// featureConfig.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The FeatureConfig resource name in the format `projects
+  /// / * /locations / * /featureConfigs / * *`.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/featureConfigs/.*$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [FeatureConfig].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<FeatureConfig> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return FeatureConfig.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists all FeatureConfigs in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent where the FeatureConfigs will be listed.
+  /// In the format: `projects / * /locations / * `.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - Lists FeatureConfigs that match the filter expression,
+  /// following the syntax outlined in https://google.aip.dev/160.
+  ///
+  /// [orderBy] - One or more fields to compare and use to sort the output. See
+  /// https://google.aip.dev/132#ordering.
+  ///
+  /// [pageSize] - When requesting a 'page' of resources, `page_size` specifies
+  /// number of resources to return. If unspecified or set to 0, all resources
+  /// will be returned.
+  ///
+  /// [pageToken] - Token returned by previous call to `ListFeatures` which
+  /// specifies the position in the list from where to continue listing the
+  /// resources.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListFeatureConfigsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListFeatureConfigsResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v2alpha/' + core.Uri.encodeFull('$parent') + '/featureConfigs';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListFeatureConfigsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsMembershipsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsMembershipsFeaturesResource get features =>
+      ProjectsLocationsMembershipsFeaturesResource(_requester);
+
+  ProjectsLocationsMembershipsResource(commons.ApiRequester client)
+      : _requester = client;
+}
+
+class ProjectsLocationsMembershipsFeaturesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsMembershipsFeaturesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Creates membershipFeature under a given parent.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The name of parent where the MembershipFeature will
+  /// be created. Specified in the format `projects / * /locations / *
+  /// /memberships / * /features / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/memberships/\[^/\]+$`.
+  ///
+  /// [requestId] - Idempotent request UUID.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> create(
+    MembershipFeature request,
+    core.String parent, {
+    core.String? requestId,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (requestId != null) 'requestId': [requestId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$parent') + '/features';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Removes a membershipFeature.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The name of the membershipFeature to be deleted.
+  /// Specified in the format `projects / * /locations / * /memberships / *
+  /// /features / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/memberships/\[^/\]+/features/\[^/\]+$`.
+  ///
+  /// [requestId] - Idempotent request UUID.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> delete(
+    core.String name, {
+    core.String? requestId,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (requestId != null) 'requestId': [requestId],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'DELETE',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// ========= MembershipFeature Services ========= Gets details of a
+  /// membershipFeature.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Required. The MembershipFeature resource name in the format
+  /// `projects / * /locations / * /memberships / * /features / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/memberships/\[^/\]+/features/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [MembershipFeature].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<MembershipFeature> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return MembershipFeature.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists MembershipFeatures in a given project and location.
+  ///
+  /// Request parameters:
+  ///
+  /// [parent] - Required. The parent where the MembershipFeature will be
+  /// listed. In the format: `projects / * /locations / * /memberships / * `.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/memberships/\[^/\]+$`.
+  ///
+  /// [filter] - Lists MembershipFeatures that match the filter expression,
+  /// following the syntax outlined in https://google.aip.dev/160. Examples: -
+  /// Feature with the name "helloworld" in project "foo-proj" and membership
+  /// "member-bar": name =
+  /// "projects/foo-proj/locations/global/memberships/member-bar/features/helloworld"
+  /// - Features that have a label called `foo`: labels.foo:* - Features that
+  /// have a label called `foo` whose value is `bar`: labels.foo = bar
+  ///
+  /// [orderBy] - One or more fields to compare and use to sort the output. See
+  /// https://google.aip.dev/132#ordering.
+  ///
+  /// [pageSize] - When requesting a 'page' of resources, `page_size` specifies
+  /// number of resources to return. If unspecified or set to 0, all resources
+  /// will be returned.
+  ///
+  /// [pageToken] - Token returned by previous call to `ListFeatures` which
+  /// specifies the position in the list from where to continue listing the
+  /// resources.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListMembershipFeaturesResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListMembershipFeaturesResponse> list(
+    core.String parent, {
+    core.String? filter,
+    core.String? orderBy,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (orderBy != null) 'orderBy': [orderBy],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$parent') + '/features';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListMembershipFeaturesResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Updates an existing MembershipFeature.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - Output only. The resource name of the membershipFeature, in the
+  /// format:
+  /// `projects/{project}/locations/{location}/memberships/{membership}/features/{feature}`.
+  /// Note that `membershipFeatures` is shortened to `features` in the resource
+  /// name. (see http://go/aip/122#collection-identifiers)
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/memberships/\[^/\]+/features/\[^/\]+$`.
+  ///
+  /// [requestId] - Idempotent request UUID.
+  ///
+  /// [updateMask] - Required. Mask of fields to update.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> patch(
+    MembershipFeature request,
+    core.String name, {
+    core.String? requestId,
+    core.String? updateMask,
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (requestId != null) 'requestId': [requestId],
+      if (updateMask != null) 'updateMask': [updateMask],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'PATCH',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsOperationsResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsOperationsResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Starts asynchronous cancellation on a long-running operation.
+  ///
+  /// The server makes a best effort to cancel the operation, but success is not
+  /// guaranteed. If the server doesn't support this method, it returns
+  /// `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation
+  /// or other methods to check whether the cancellation succeeded or whether
+  /// the operation completed despite cancellation. On successful cancellation,
+  /// the operation is not deleted; instead, it becomes an operation with an
+  /// Operation.error value with a google.rpc.Status.code of 1, corresponding to
+  /// `Code.CANCELLED`.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource to be cancelled.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Empty].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Empty> cancel(
+    CancelOperationRequest request,
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name') + ':cancel';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// 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.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation resource.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Operation].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Operation> get(
+    core.String name, {
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name');
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Lists operations that match the specified filter in the request.
+  ///
+  /// If the server doesn't support this method, it returns `UNIMPLEMENTED`.
+  /// NOTE: the `name` binding allows API services to override the binding to
+  /// use different resource name schemes, such as `users / * /operations`. To
+  /// override the binding, API services can add a binding such as
+  /// `"/v1/{name=users / * }/operations"` to their service configuration. For
+  /// backwards compatibility, the default name includes the operations
+  /// collection id, however overriding users must ensure the name binding is
+  /// the parent resource, without the operations collection id.
+  ///
+  /// Request parameters:
+  ///
+  /// [name] - The name of the operation's parent resource.
+  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
+  ///
+  /// [filter] - The standard list filter.
+  ///
+  /// [pageSize] - The standard list page size.
+  ///
+  /// [pageToken] - The standard list page token.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [ListOperationsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<ListOperationsResponse> list(
+    core.String name, {
+    core.String? filter,
+    core.int? pageSize,
+    core.String? pageToken,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (filter != null) 'filter': [filter],
+      if (pageSize != null) 'pageSize': ['${pageSize}'],
+      if (pageToken != null) 'pageToken': [pageToken],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v2alpha/' + core.Uri.encodeFull('$name') + '/operations';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return ListOperationsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+/// The request message for Operations.CancelOperation.
+typedef CancelOperationRequest = $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 `{}`.
+typedef Empty = $Empty;
+
+/// FeatureConfig contains configurations for a Fleet feature.
+///
+/// FeatureConfig can be applied to MembershipFeature(s) to setup per-membership
+/// FeatureSpec.
+class FeatureConfig {
+  /// When the FeatureConfig resource was created.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// When the FeatureConfig resource was deleted.
+  ///
+  /// Output only.
+  core.String? deleteTime;
+
+  /// GCP labels for this FeatureConfig.
+  core.Map<core.String, core.String>? labels;
+
+  /// Resource name of this FeatureConfig, in the format:
+  /// `projects/{project}/locations/global/FeatureConfigs/{feature_type}/{feature_config}`
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Input only.
+  ///
+  /// Immutable. User input of feature spec. Note that this field is immutable.
+  /// Must create a new FeatureConfig if a new feature spec is needed.
+  FeatureSpec? spec;
+
+  /// Lifecycle information of the FeatureConfig.
+  FeatureConfigState? state;
+
+  /// Google-generated UUID for this resource.
+  ///
+  /// This is unique across all FeatureConfig resources. If a Membership
+  /// resource is deleted and another resource with the same name is created, it
+  /// gets a different unique_id.
+  ///
+  /// Output only.
+  core.String? uniqueId;
+
+  /// When the FeatureConfig resource was last updated.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  FeatureConfig({
+    this.createTime,
+    this.deleteTime,
+    this.labels,
+    this.name,
+    this.spec,
+    this.state,
+    this.uniqueId,
+    this.updateTime,
+  });
+
+  FeatureConfig.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          deleteTime: _json.containsKey('deleteTime')
+              ? _json['deleteTime'] as core.String
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          spec: _json.containsKey('spec')
+              ? FeatureSpec.fromJson(
+                  _json['spec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          state: _json.containsKey('state')
+              ? FeatureConfigState.fromJson(
+                  _json['state'] as core.Map<core.String, core.dynamic>)
+              : null,
+          uniqueId: _json.containsKey('uniqueId')
+              ? _json['uniqueId'] as core.String
+              : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (deleteTime != null) 'deleteTime': deleteTime!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (spec != null) 'spec': spec!,
+        if (state != null) 'state': state!,
+        if (uniqueId != null) 'uniqueId': uniqueId!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// Information of the FeatureConfig applied on the MembershipFeature.
+class FeatureConfigRef {
+  /// Input only.
+  ///
+  /// Resource name of FeatureConfig, in the format:
+  /// `projects/{project}/locations/global/featureConfigs/{feature_config}`.
+  core.String? config;
+
+  /// When the FeatureConfig was last applied and copied to FeatureSpec.
+  ///
+  /// Output only.
+  core.String? configUpdateTime;
+
+  /// An id that uniquely identify a FeatureConfig object.
+  ///
+  /// Output only.
+  core.String? uuid;
+
+  FeatureConfigRef({
+    this.config,
+    this.configUpdateTime,
+    this.uuid,
+  });
+
+  FeatureConfigRef.fromJson(core.Map _json)
+      : this(
+          config: _json.containsKey('config')
+              ? _json['config'] as core.String
+              : null,
+          configUpdateTime: _json.containsKey('configUpdateTime')
+              ? _json['configUpdateTime'] as core.String
+              : null,
+          uuid: _json.containsKey('uuid') ? _json['uuid'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (config != null) 'config': config!,
+        if (configUpdateTime != null) 'configUpdateTime': configUpdateTime!,
+        if (uuid != null) 'uuid': uuid!,
+      };
+}
+
+/// FeatureConfigState describes the state of a FeatureConfig resource.
+class FeatureConfigState {
+  /// The current state of the FeatureConfig resource.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : The code is not set.
+  /// - "CREATING" : The FeatureConfig is being created.
+  /// - "ACTIVE" : The FeatureConfig has been created.
+  /// - "DELETING" : The FeatureConfig is being deleted.
+  core.String? state;
+
+  FeatureConfigState({
+    this.state,
+  });
+
+  FeatureConfigState.fromJson(core.Map _json)
+      : this(
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (state != null) 'state': state!,
+      };
+}
+
+/// FeatureSpec contains user input per-feature spec information.
+typedef FeatureSpec = $Empty;
+
+/// FeatureState contains high-level state information and per-feature state
+/// information for this MembershipFeature.
+class FeatureState {
+  /// The high-level state of this MembershipFeature.
+  State? state;
+
+  FeatureState({
+    this.state,
+  });
+
+  FeatureState.fromJson(core.Map _json)
+      : this(
+          state: _json.containsKey('state')
+              ? State.fromJson(
+                  _json['state'] as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (state != null) 'state': state!,
+      };
+}
+
+/// 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).
+typedef GoogleRpcStatus = $Status;
+
+/// Response message for the `GkeHubFeature.ListFeatureConfigs` method.
+class ListFeatureConfigsResponse {
+  /// The list of FeatureConfig(s).
+  core.List<FeatureConfig>? featureConfigs;
+
+  /// A token to request the next page of resources from the
+  /// `ListFeatureConfigs` method.
+  ///
+  /// The value of an empty string means that there are no more resources to
+  /// return.
+  core.String? nextPageToken;
+
+  ListFeatureConfigsResponse({
+    this.featureConfigs,
+    this.nextPageToken,
+  });
+
+  ListFeatureConfigsResponse.fromJson(core.Map _json)
+      : this(
+          featureConfigs: _json.containsKey('featureConfigs')
+              ? (_json['featureConfigs'] as core.List)
+                  .map((value) => FeatureConfig.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (featureConfigs != null) 'featureConfigs': featureConfigs!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// The response message for Locations.ListLocations.
+class ListLocationsResponse {
+  /// A list of locations that matches the specified filter in the request.
+  core.List<Location>? locations;
+
+  /// The standard List next-page token.
+  core.String? nextPageToken;
+
+  ListLocationsResponse({
+    this.locations,
+    this.nextPageToken,
+  });
+
+  ListLocationsResponse.fromJson(core.Map _json)
+      : this(
+          locations: _json.containsKey('locations')
+              ? (_json['locations'] as core.List)
+                  .map((value) => Location.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (locations != null) 'locations': locations!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// Response message for the `GkeHubFeature.ListMembershipFeatures` method.
+class ListMembershipFeaturesResponse {
+  /// The list of matching MembershipFeatures.
+  core.List<MembershipFeature>? membershipFeatures;
+
+  /// A token to request the next page of resources from the
+  /// `ListMembershipFeatures` method.
+  ///
+  /// The value of an empty string means that there are no more resources to
+  /// return.
+  core.String? nextPageToken;
+
+  ListMembershipFeaturesResponse({
+    this.membershipFeatures,
+    this.nextPageToken,
+  });
+
+  ListMembershipFeaturesResponse.fromJson(core.Map _json)
+      : this(
+          membershipFeatures: _json.containsKey('membershipFeatures')
+              ? (_json['membershipFeatures'] as core.List)
+                  .map((value) => MembershipFeature.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (membershipFeatures != null)
+          'membershipFeatures': membershipFeatures!,
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+      };
+}
+
+/// The response message for Operations.ListOperations.
+class ListOperationsResponse {
+  /// The standard List next-page token.
+  core.String? nextPageToken;
+
+  /// A list of operations that matches the specified filter in the request.
+  core.List<Operation>? operations;
+
+  ListOperationsResponse({
+    this.nextPageToken,
+    this.operations,
+  });
+
+  ListOperationsResponse.fromJson(core.Map _json)
+      : this(
+          nextPageToken: _json.containsKey('nextPageToken')
+              ? _json['nextPageToken'] as core.String
+              : null,
+          operations: _json.containsKey('operations')
+              ? (_json['operations'] as core.List)
+                  .map((value) => Operation.fromJson(
+                      value as core.Map<core.String, core.dynamic>))
+                  .toList()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
+        if (operations != null) 'operations': operations!,
+      };
+}
+
+/// A resource that represents Google Cloud Platform location.
+typedef Location = $Location;
+
+/// MembershipFeature represents the settings and status of a Fleet Feature
+/// enabled on a single Fleet Membership.
+class MembershipFeature {
+  /// When the MembershipFeature resource was created.
+  ///
+  /// Output only.
+  core.String? createTime;
+
+  /// When the MembershipFeature resource was deleted.
+  ///
+  /// Output only.
+  core.String? deleteTime;
+
+  /// Reference information for a FeatureConfig applied on the
+  /// MembershipFeature.
+  FeatureConfigRef? featureConfigRef;
+
+  /// GCP labels for this MembershipFeature.
+  core.Map<core.String, core.String>? labels;
+
+  /// The resource name of the membershipFeature, in the format:
+  /// `projects/{project}/locations/{location}/memberships/{membership}/features/{feature}`.
+  ///
+  /// Note that `membershipFeatures` is shortened to `features` in the resource
+  /// name. (see http://go/aip/122#collection-identifiers)
+  ///
+  /// Output only.
+  core.String? name;
+
+  /// Lifecycle information of the resource itself.
+  ResourceState? resourceState;
+
+  /// Spec of this membershipFeature.
+  ///
+  /// Output only.
+  FeatureSpec? spec;
+
+  /// State of the this membershipFeature.
+  ///
+  /// Output only.
+  FeatureState? state;
+
+  /// When the MembershipFeature resource was last updated.
+  ///
+  /// Output only.
+  core.String? updateTime;
+
+  MembershipFeature({
+    this.createTime,
+    this.deleteTime,
+    this.featureConfigRef,
+    this.labels,
+    this.name,
+    this.resourceState,
+    this.spec,
+    this.state,
+    this.updateTime,
+  });
+
+  MembershipFeature.fromJson(core.Map _json)
+      : this(
+          createTime: _json.containsKey('createTime')
+              ? _json['createTime'] as core.String
+              : null,
+          deleteTime: _json.containsKey('deleteTime')
+              ? _json['deleteTime'] as core.String
+              : null,
+          featureConfigRef: _json.containsKey('featureConfigRef')
+              ? FeatureConfigRef.fromJson(_json['featureConfigRef']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+          labels: _json.containsKey('labels')
+              ? (_json['labels'] as core.Map<core.String, core.dynamic>).map(
+                  (key, item) => core.MapEntry(
+                    key,
+                    item as core.String,
+                  ),
+                )
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          resourceState: _json.containsKey('resourceState')
+              ? ResourceState.fromJson(
+                  _json['resourceState'] as core.Map<core.String, core.dynamic>)
+              : null,
+          spec: _json.containsKey('spec')
+              ? FeatureSpec.fromJson(
+                  _json['spec'] as core.Map<core.String, core.dynamic>)
+              : null,
+          state: _json.containsKey('state')
+              ? FeatureState.fromJson(
+                  _json['state'] as core.Map<core.String, core.dynamic>)
+              : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (createTime != null) 'createTime': createTime!,
+        if (deleteTime != null) 'deleteTime': deleteTime!,
+        if (featureConfigRef != null) 'featureConfigRef': featureConfigRef!,
+        if (labels != null) 'labels': labels!,
+        if (name != null) 'name': name!,
+        if (resourceState != null) 'resourceState': resourceState!,
+        if (spec != null) 'spec': spec!,
+        if (state != null) 'state': state!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
+
+/// This resource represents a long-running operation that is the result of a
+/// network API call.
+class Operation {
+  /// 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.
+  core.bool? done;
+
+  /// The error result of the operation in case of failure or cancellation.
+  GoogleRpcStatus? error;
+
+  /// 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.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? metadata;
+
+  /// 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}`.
+  core.String? name;
+
+  /// 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`.
+  ///
+  /// The values for Object must be JSON objects. It can consist of `num`,
+  /// `String`, `bool` and `null` as well as `Map` and `List` values.
+  core.Map<core.String, core.Object?>? response;
+
+  Operation({
+    this.done,
+    this.error,
+    this.metadata,
+    this.name,
+    this.response,
+  });
+
+  Operation.fromJson(core.Map _json)
+      : this(
+          done: _json.containsKey('done') ? _json['done'] as core.bool : null,
+          error: _json.containsKey('error')
+              ? GoogleRpcStatus.fromJson(
+                  _json['error'] as core.Map<core.String, core.dynamic>)
+              : null,
+          metadata: _json.containsKey('metadata')
+              ? _json['metadata'] as core.Map<core.String, core.dynamic>
+              : null,
+          name: _json.containsKey('name') ? _json['name'] as core.String : null,
+          response: _json.containsKey('response')
+              ? _json['response'] as core.Map<core.String, core.dynamic>
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (done != null) 'done': done!,
+        if (error != null) 'error': error!,
+        if (metadata != null) 'metadata': metadata!,
+        if (name != null) 'name': name!,
+        if (response != null) 'response': response!,
+      };
+}
+
+/// ResourceState describes the state of a MembershipFeature *resource* in the
+/// GkeHub API.
+///
+/// See `FeatureState` for the "running state" of the MembershipFeature.
+class ResourceState {
+  /// The current state of the Feature resource in the Hub API.
+  ///
+  /// Output only.
+  /// Possible string values are:
+  /// - "STATE_UNSPECIFIED" : State is unknown or not set.
+  /// - "ENABLING" : The MembershipFeature is being enabled, and the
+  /// MembershipFeature resource is being created. Once complete, the
+  /// corresponding MembershipFeature will be enabled in this Hub.
+  /// - "ACTIVE" : The MembershipFeature is enabled in this Hub, and the
+  /// MembershipFeature resource is fully available.
+  /// - "DISABLING" : The MembershipFeature is being disabled in this Hub, and
+  /// the MembershipFeature resource is being deleted.
+  /// - "UPDATING" : The MembershipFeature resource is being updated.
+  /// - "SERVICE_UPDATING" : The MembershipFeature resource is being updated by
+  /// the Hub Service.
+  core.String? state;
+
+  ResourceState({
+    this.state,
+  });
+
+  ResourceState.fromJson(core.Map _json)
+      : this(
+          state:
+              _json.containsKey('state') ? _json['state'] as core.String : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (state != null) 'state': state!,
+      };
+}
+
+/// High-level state of a MembershipFeature.
+class State {
+  /// The high-level, machine-readable status of this MembershipFeature.
+  /// Possible string values are:
+  /// - "CODE_UNSPECIFIED" : Unknown or not set.
+  /// - "OK" : The MembershipFeature is operating normally.
+  /// - "WARNING" : The MembershipFeature has encountered an issue, and is
+  /// operating in a degraded state. The MembershipFeature may need intervention
+  /// to return to normal operation. See the description and any associated
+  /// MembershipFeature-specific details for more information.
+  /// - "ERROR" : The MembershipFeature is not operating or is in a severely
+  /// degraded state. The MembershipFeature may need intervention to return to
+  /// normal operation. See the description and any associated
+  /// MembershipFeature-specific details for more information.
+  core.String? code;
+
+  /// A human-readable description of the current status.
+  core.String? description;
+
+  /// The time this status and any related Feature-specific details were
+  /// updated.
+  core.String? updateTime;
+
+  State({
+    this.code,
+    this.description,
+    this.updateTime,
+  });
+
+  State.fromJson(core.Map _json)
+      : this(
+          code: _json.containsKey('code') ? _json['code'] as core.String : null,
+          description: _json.containsKey('description')
+              ? _json['description'] as core.String
+              : null,
+          updateTime: _json.containsKey('updateTime')
+              ? _json['updateTime'] as core.String
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (code != null) 'code': code!,
+        if (description != null) 'description': description!,
+        if (updateTime != null) 'updateTime': updateTime!,
+      };
+}
diff --git a/generated/googleapis_beta/lib/metastore/v1beta.dart b/generated/googleapis_beta/lib/metastore/v1beta.dart
index 8c6fba6..f12331f 100644
--- a/generated/googleapis_beta/lib/metastore/v1beta.dart
+++ b/generated/googleapis_beta/lib/metastore/v1beta.dart
@@ -26,6 +26,8 @@
 ///     - [ProjectsLocationsOperationsResource]
 ///     - [ProjectsLocationsServicesResource]
 ///       - [ProjectsLocationsServicesBackupsResource]
+///       - [ProjectsLocationsServicesDatabasesResource]
+///         - [ProjectsLocationsServicesDatabasesTablesResource]
 ///       - [ProjectsLocationsServicesMetadataImportsResource]
 library metastore.v1beta;
 
@@ -317,6 +319,8 @@
 
   ProjectsLocationsServicesBackupsResource get backups =>
       ProjectsLocationsServicesBackupsResource(_requester);
+  ProjectsLocationsServicesDatabasesResource get databases =>
+      ProjectsLocationsServicesDatabasesResource(_requester);
   ProjectsLocationsServicesMetadataImportsResource get metadataImports =>
       ProjectsLocationsServicesMetadataImportsResource(_requester);
 
@@ -700,6 +704,53 @@
     return Operation.fromJson(_response as core.Map<core.String, core.dynamic>);
   }
 
+  /// Removes the attached IAM policies for a resource
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - Required. The relative resource name of the dataplane
+  /// resource to remove IAM policy, in the following
+  /// form:projects/{project_id}/locations/{location_id}/services/{service_id}/databases/{database_id}
+  /// or
+  /// projects/{project_id}/locations/{location_id}/services/{service_id}/databases/{database_id}/tables/{table_id}.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/services/\[^/\]+/.*$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [RemoveIamPolicyResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<RemoveIamPolicyResponse> removeIamPolicy(
+    RemoveIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1beta/' + core.Uri.encodeFull('$resource') + ':removeIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return RemoveIamPolicyResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+
   /// Restores a service from a backup.
   ///
   /// [request] - The metadata request object.
@@ -1215,6 +1266,327 @@
   }
 }
 
+class ProjectsLocationsServicesDatabasesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsServicesDatabasesTablesResource get tables =>
+      ProjectsLocationsServicesDatabasesTablesResource(_requester);
+
+  ProjectsLocationsServicesDatabasesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Gets the access control policy for a resource.
+  ///
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/services/\[^/\]+/databases/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy.Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected.Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset.The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1beta/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the access control policy on the specified resource.
+  ///
+  /// Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and
+  /// PERMISSION_DENIED errors.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/services/\[^/\]+/databases/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> setIamPolicy(
+    SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1beta/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  ///
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a NOT_FOUND error.Note: This operation is designed to be
+  /// used for building permission-aware UIs and command-line tools, not for
+  /// authorization checking. This operation may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/services/\[^/\]+/databases/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TestIamPermissionsResponse> testIamPermissions(
+    TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1beta/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
+class ProjectsLocationsServicesDatabasesTablesResource {
+  final commons.ApiRequester _requester;
+
+  ProjectsLocationsServicesDatabasesTablesResource(commons.ApiRequester client)
+      : _requester = client;
+
+  /// Gets the access control policy for a resource.
+  ///
+  /// Returns an empty policy if the resource exists and does not have a policy
+  /// set.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/services/\[^/\]+/databases/\[^/\]+/tables/\[^/\]+$`.
+  ///
+  /// [options_requestedPolicyVersion] - Optional. The maximum policy version
+  /// that will be used to format the policy.Valid values are 0, 1, and 3.
+  /// Requests specifying an invalid value will be rejected.Requests for
+  /// policies with any conditional role bindings must specify version 3.
+  /// Policies with no conditional role bindings may specify any valid value or
+  /// leave the field unset.The policy in the response might use the policy
+  /// version that you specified, or it might use a lower policy version. For
+  /// example, if you specify version 3, but the policy has no conditional role
+  /// bindings, the response uses version 1.To learn which resources support
+  /// conditions in their IAM policies, see the IAM documentation
+  /// (https://cloud.google.com/iam/help/conditions/resource-policies).
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> getIamPolicy(
+    core.String resource, {
+    core.int? options_requestedPolicyVersion,
+    core.String? $fields,
+  }) async {
+    final _queryParams = <core.String, core.List<core.String>>{
+      if (options_requestedPolicyVersion != null)
+        'options.requestedPolicyVersion': ['${options_requestedPolicyVersion}'],
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1beta/' + core.Uri.encodeFull('$resource') + ':getIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'GET',
+      queryParams: _queryParams,
+    );
+    return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Sets the access control policy on the specified resource.
+  ///
+  /// Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and
+  /// PERMISSION_DENIED errors.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy is being
+  /// specified. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/services/\[^/\]+/databases/\[^/\]+/tables/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [Policy].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<Policy> setIamPolicy(
+    SetIamPolicyRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url = 'v1beta/' + core.Uri.encodeFull('$resource') + ':setIamPolicy';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return Policy.fromJson(_response as core.Map<core.String, core.dynamic>);
+  }
+
+  /// Returns permissions that a caller has on the specified resource.
+  ///
+  /// If the resource does not exist, this will return an empty set of
+  /// permissions, not a NOT_FOUND error.Note: This operation is designed to be
+  /// used for building permission-aware UIs and command-line tools, not for
+  /// authorization checking. This operation may "fail open" without warning.
+  ///
+  /// [request] - The metadata request object.
+  ///
+  /// Request parameters:
+  ///
+  /// [resource] - REQUIRED: The resource for which the policy detail is being
+  /// requested. See the operation documentation for the appropriate value for
+  /// this field.
+  /// Value must have pattern
+  /// `^projects/\[^/\]+/locations/\[^/\]+/services/\[^/\]+/databases/\[^/\]+/tables/\[^/\]+$`.
+  ///
+  /// [$fields] - Selector specifying which fields to include in a partial
+  /// response.
+  ///
+  /// Completes with a [TestIamPermissionsResponse].
+  ///
+  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
+  /// error.
+  ///
+  /// If the used [http.Client] completes with an error when making a REST call,
+  /// this method will complete with the same error.
+  async.Future<TestIamPermissionsResponse> testIamPermissions(
+    TestIamPermissionsRequest request,
+    core.String resource, {
+    core.String? $fields,
+  }) async {
+    final _body = convert.json.encode(request);
+    final _queryParams = <core.String, core.List<core.String>>{
+      if ($fields != null) 'fields': [$fields],
+    };
+
+    final _url =
+        'v1beta/' + core.Uri.encodeFull('$resource') + ':testIamPermissions';
+
+    final _response = await _requester.request(
+      _url,
+      'POST',
+      body: _body,
+      queryParams: _queryParams,
+    );
+    return TestIamPermissionsResponse.fromJson(
+        _response as core.Map<core.String, core.dynamic>);
+  }
+}
+
 class ProjectsLocationsServicesMetadataImportsResource {
   final commons.ApiRequester _requester;
 
@@ -2927,6 +3299,30 @@
       };
 }
 
+/// Request message for DataprocMetastore.RemoveIamPolicy.
+typedef RemoveIamPolicyRequest = $Empty;
+
+/// Response message for DataprocMetastore.RemoveIamPolicy.
+class RemoveIamPolicyResponse {
+  /// whether related policies are removed
+  core.bool? success;
+
+  RemoveIamPolicyResponse({
+    this.success,
+  });
+
+  RemoveIamPolicyResponse.fromJson(core.Map _json)
+      : this(
+          success: _json.containsKey('success')
+              ? _json['success'] as core.bool
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (success != null) 'success': success!,
+      };
+}
+
 /// The details of a metadata restore operation.
 class Restore {
   /// The relative resource name of the metastore service backup to restore
diff --git a/generated/googleapis_beta/lib/osconfig/v1alpha.dart b/generated/googleapis_beta/lib/osconfig/v1alpha.dart
index 86fe64b..798cb04 100644
--- a/generated/googleapis_beta/lib/osconfig/v1alpha.dart
+++ b/generated/googleapis_beta/lib/osconfig/v1alpha.dart
@@ -1171,10 +1171,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef Date = $Date;
 
 /// A generic empty message that you can re-use to avoid defining duplicated
diff --git a/generated/googleapis_beta/lib/policysimulator/v1beta1.dart b/generated/googleapis_beta/lib/policysimulator/v1beta1.dart
index dba48f9..1d7696a 100644
--- a/generated/googleapis_beta/lib/policysimulator/v1beta1.dart
+++ b/generated/googleapis_beta/lib/policysimulator/v1beta1.dart
@@ -1907,10 +1907,10 @@
 /// The time of day and time zone are either specified elsewhere or are
 /// insignificant. The date is relative to the Gregorian Calendar. This can
 /// represent one of the following: * A full date, with non-zero year, month,
-/// and day values * A month and day value, with a zero year, such as an
-/// anniversary * A year on its own, with zero month and day values * A year and
-/// month value, with a zero day, such as a credit card expiration date Related
-/// types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
+/// and day values * A month and day, with a zero year (e.g., an anniversary) *
+/// A year on its own, with a zero month and a zero day * A year and month, with
+/// a zero day (e.g., a credit card expiration date) Related types: *
+/// google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
 typedef GoogleTypeDate = $Date;
 
 /// Represents a textual expression in the Common Expression Language (CEL)
diff --git a/generated/googleapis_beta/lib/prod_tt_sasportal/v1alpha1.dart b/generated/googleapis_beta/lib/prod_tt_sasportal/v1alpha1.dart
index 2d117be..a8e9862 100644
--- a/generated/googleapis_beta/lib/prod_tt_sasportal/v1alpha1.dart
+++ b/generated/googleapis_beta/lib/prod_tt_sasportal/v1alpha1.dart
@@ -3952,7 +3952,74 @@
 }
 
 /// Device data overridable by both SAS Portal and registration requests.
-typedef SasPortalDeviceMetadata = $SasPortalDeviceMetadata;
+class SasPortalDeviceMetadata {
+  /// If populated, the Antenna Model Pattern to use.
+  ///
+  /// Format is: RecordCreatorId:PatternId
+  core.String? antennaModel;
+
+  /// CCG.
+  ///
+  /// A group of CBSDs in the same ICG requesting a common primary channel
+  /// assignment. See CBRSA-TS-2001 V3.0.0 for more details.
+  core.String? commonChannelGroup;
+
+  /// ICG.
+  ///
+  /// A group of CBSDs that manage their own interference with the group. See
+  /// CBRSA-TS-2001 V3.0.0 for more details.
+  core.String? interferenceCoordinationGroup;
+
+  /// Whether a CPI has validated to have coordinated with the National Quiet
+  /// Zone office.
+  ///
+  /// Output only.
+  core.bool? nrqzValidated;
+
+  /// National Radio Quiet Zone validation info.
+  ///
+  /// Output only.
+  SasPortalNrqzValidation? nrqzValidation;
+
+  SasPortalDeviceMetadata({
+    this.antennaModel,
+    this.commonChannelGroup,
+    this.interferenceCoordinationGroup,
+    this.nrqzValidated,
+    this.nrqzValidation,
+  });
+
+  SasPortalDeviceMetadata.fromJson(core.Map _json)
+      : this(
+          antennaModel: _json.containsKey('antennaModel')
+              ? _json['antennaModel'] as core.String
+              : null,
+          commonChannelGroup: _json.containsKey('commonChannelGroup')
+              ? _json['commonChannelGroup'] as core.String
+              : null,
+          interferenceCoordinationGroup:
+              _json.containsKey('interferenceCoordinationGroup')
+                  ? _json['interferenceCoordinationGroup'] as core.String
+                  : null,
+          nrqzValidated: _json.containsKey('nrqzValidated')
+              ? _json['nrqzValidated'] as core.bool
+              : null,
+          nrqzValidation: _json.containsKey('nrqzValidation')
+              ? SasPortalNrqzValidation.fromJson(_json['nrqzValidation']
+                  as core.Map<core.String, core.dynamic>)
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (antennaModel != null) 'antennaModel': antennaModel!,
+        if (commonChannelGroup != null)
+          'commonChannelGroup': commonChannelGroup!,
+        if (interferenceCoordinationGroup != null)
+          'interferenceCoordinationGroup': interferenceCoordinationGroup!,
+        if (nrqzValidated != null) 'nrqzValidated': nrqzValidated!,
+        if (nrqzValidation != null) 'nrqzValidation': nrqzValidation!,
+      };
+}
 
 /// Information about the model of the device.
 typedef SasPortalDeviceModel = $SasPortalDeviceModel;
@@ -4162,6 +4229,52 @@
 /// The Node.
 typedef SasPortalNode = $SasPortalNode;
 
+/// Information about National Radio Quiet Zone validation.
+///
+/// The presence of the field indicates the device has been validated.
+class SasPortalNrqzValidation {
+  /// Validation case id.
+  core.String? caseId;
+
+  /// CPI who signed the validation.
+  core.String? cpiId;
+
+  /// Device latitude associated with the validation.
+  core.double? latitude;
+
+  /// Device longitude associated with the validation.
+  core.double? longitude;
+
+  SasPortalNrqzValidation({
+    this.caseId,
+    this.cpiId,
+    this.latitude,
+    this.longitude,
+  });
+
+  SasPortalNrqzValidation.fromJson(core.Map _json)
+      : this(
+          caseId: _json.containsKey('caseId')
+              ? _json['caseId'] as core.String
+              : null,
+          cpiId:
+              _json.containsKey('cpiId') ? _json['cpiId'] as core.String : null,
+          latitude: _json.containsKey('latitude')
+              ? (_json['latitude'] as core.num).toDouble()
+              : null,
+          longitude: _json.containsKey('longitude')
+              ? (_json['longitude'] as core.num).toDouble()
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (caseId != null) 'caseId': caseId!,
+        if (cpiId != null) 'cpiId': cpiId!,
+        if (latitude != null) 'latitude': latitude!,
+        if (longitude != null) 'longitude': longitude!,
+      };
+}
+
 /// This resource represents a long-running operation that is the result of a
 /// network API call.
 class SasPortalOperation {
diff --git a/generated/googleapis_beta/lib/sasportal/v1alpha1.dart b/generated/googleapis_beta/lib/sasportal/v1alpha1.dart
index 2c46357..3b389c2 100644
--- a/generated/googleapis_beta/lib/sasportal/v1alpha1.dart
+++ b/generated/googleapis_beta/lib/sasportal/v1alpha1.dart
@@ -3879,7 +3879,63 @@
 }
 
 /// Device data overridable by both SAS Portal and registration requests.
-typedef SasPortalDeviceMetadata = $SasPortalDeviceMetadata;
+class SasPortalDeviceMetadata {
+  /// If populated, the Antenna Model Pattern to use.
+  ///
+  /// Format is: RecordCreatorId:PatternId
+  core.String? antennaModel;
+
+  /// CCG.
+  ///
+  /// A group of CBSDs in the same ICG requesting a common primary channel
+  /// assignment. See CBRSA-TS-2001 V3.0.0 for more details.
+  core.String? commonChannelGroup;
+
+  /// ICG.
+  ///
+  /// A group of CBSDs that manage their own interference with the group. See
+  /// CBRSA-TS-2001 V3.0.0 for more details.
+  core.String? interferenceCoordinationGroup;
+
+  /// Whether a CPI has validated to have coordinated with the National Quiet
+  /// Zone office.
+  ///
+  /// Output only.
+  core.bool? nrqzValidated;
+
+  SasPortalDeviceMetadata({
+    this.antennaModel,
+    this.commonChannelGroup,
+    this.interferenceCoordinationGroup,
+    this.nrqzValidated,
+  });
+
+  SasPortalDeviceMetadata.fromJson(core.Map _json)
+      : this(
+          antennaModel: _json.containsKey('antennaModel')
+              ? _json['antennaModel'] as core.String
+              : null,
+          commonChannelGroup: _json.containsKey('commonChannelGroup')
+              ? _json['commonChannelGroup'] as core.String
+              : null,
+          interferenceCoordinationGroup:
+              _json.containsKey('interferenceCoordinationGroup')
+                  ? _json['interferenceCoordinationGroup'] as core.String
+                  : null,
+          nrqzValidated: _json.containsKey('nrqzValidated')
+              ? _json['nrqzValidated'] as core.bool
+              : null,
+        );
+
+  core.Map<core.String, core.dynamic> toJson() => {
+        if (antennaModel != null) 'antennaModel': antennaModel!,
+        if (commonChannelGroup != null)
+          'commonChannelGroup': commonChannelGroup!,
+        if (interferenceCoordinationGroup != null)
+          'interferenceCoordinationGroup': interferenceCoordinationGroup!,
+        if (nrqzValidated != null) 'nrqzValidated': nrqzValidated!,
+      };
+}
 
 /// Information about the model of the device.
 typedef SasPortalDeviceModel = $SasPortalDeviceModel;
diff --git a/generated/googleapis_beta/lib/shared.dart b/generated/googleapis_beta/lib/shared.dart
index 609d7b7..eb3604a 100644
--- a/generated/googleapis_beta/lib/shared.dart
+++ b/generated/googleapis_beta/lib/shared.dart
@@ -144,6 +144,7 @@
 /// Used by:
 ///
 /// - bigqueryconnection:v1beta1 : AuditLogConfig
+/// - cloudfunctions:v2beta : AuditLogConfig
 /// - domains:v1beta1 : AuditLogConfig
 /// - metastore:v1beta : AuditLogConfig
 /// - networkconnectivity:v1alpha1 : AuditLogConfig
@@ -439,6 +440,8 @@
 /// - bigqueryconnection:v1beta1 : Empty
 /// - clouderrorreporting:v1beta1 : DeleteEventsResponse
 /// - clouderrorreporting:v1beta1 : ReportErrorEventResponse
+/// - cloudfunctions:v2beta : GenerateDownloadUrlRequest
+/// - cloudfunctions:v2beta : GenerateUploadUrlRequest
 /// - cloudsupport:v2beta : CloseCaseRequest
 /// - containeranalysis:v1beta1 : Empty
 /// - datacatalog:v1beta1 : Empty
@@ -474,9 +477,13 @@
 /// - firebasestorage:v1beta : AddFirebaseRequest
 /// - firebasestorage:v1beta : Empty
 /// - firebasestorage:v1beta : RemoveFirebaseRequest
+/// - gkehub:v2alpha : CancelOperationRequest
+/// - gkehub:v2alpha : Empty
+/// - gkehub:v2alpha : FeatureSpec
 /// - lifesciences:v2beta : CancelOperationRequest
 /// - lifesciences:v2beta : Empty
 /// - metastore:v1beta : Empty
+/// - metastore:v1beta : RemoveIamPolicyRequest
 /// - networkconnectivity:v1alpha1 : Empty
 /// - networkconnectivity:v1alpha1 : GoogleLongrunningCancelOperationRequest
 /// - networksecurity:v1beta1 : CancelOperationRequest
@@ -501,7 +508,6 @@
 /// - tpu:v2alpha1 : GenerateServiceIdentityRequest
 /// - tpu:v2alpha1 : StartNodeRequest
 /// - tpu:v2alpha1 : StopNodeRequest
-/// - transcoder:v1beta1 : Empty
 class $Empty {
   $Empty();
 
@@ -514,34 +520,6 @@
 
 /// Used by:
 ///
-/// - transcoder:v1beta1 : Aes128Encryption
-/// - transcoder:v1beta1 : SampleAesEncryption
-class $Encryption {
-  /// URI of the key delivery service.
-  ///
-  /// This URI is inserted into the M3U8 header.
-  ///
-  /// Required.
-  core.String? keyUri;
-
-  $Encryption({
-    this.keyUri,
-  });
-
-  $Encryption.fromJson(core.Map _json)
-      : this(
-          keyUri: _json.containsKey('keyUri')
-              ? _json['keyUri'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (keyUri != null) 'keyUri': keyUri!,
-      };
-}
-
-/// Used by:
-///
 /// - toolresults:v1beta3 : EnvironmentDimensionValueEntry
 /// - toolresults:v1beta3 : StepDimensionValueEntry
 /// - toolresults:v1beta3 : StepLabelsEntry
@@ -570,6 +548,7 @@
 /// Used by:
 ///
 /// - bigqueryconnection:v1beta1 : Expr
+/// - cloudfunctions:v2beta : Expr
 /// - containeranalysis:v1beta1 : Expr
 /// - datacatalog:v1beta1 : Expr
 /// - domains:v1beta1 : Expr
@@ -754,9 +733,11 @@
 
 /// Used by:
 ///
+/// - cloudfunctions:v2beta : Location
 /// - datastream:v1alpha1 : Location
 /// - documentai:v1beta3 : GoogleCloudLocationLocation
 /// - domains:v1beta1 : Location
+/// - gkehub:v2alpha : Location
 /// - lifesciences:v2beta : Location
 /// - networkconnectivity:v1alpha1 : Location
 /// - networksecurity:v1beta1 : Location
@@ -1361,57 +1342,6 @@
 
 /// Used by:
 ///
-/// - prod_tt_sasportal:v1alpha1 : SasPortalDeviceMetadata
-/// - sasportal:v1alpha1 : SasPortalDeviceMetadata
-class $SasPortalDeviceMetadata {
-  /// If populated, the Antenna Model Pattern to use.
-  ///
-  /// Format is: RecordCreatorId:PatternId
-  core.String? antennaModel;
-
-  /// CCG.
-  ///
-  /// A group of CBSDs in the same ICG requesting a common primary channel
-  /// assignment. See CBRSA-TS-2001 V3.0.0 for more details.
-  core.String? commonChannelGroup;
-
-  /// ICG.
-  ///
-  /// A group of CBSDs that manage their own interference with the group. See
-  /// CBRSA-TS-2001 V3.0.0 for more details.
-  core.String? interferenceCoordinationGroup;
-
-  $SasPortalDeviceMetadata({
-    this.antennaModel,
-    this.commonChannelGroup,
-    this.interferenceCoordinationGroup,
-  });
-
-  $SasPortalDeviceMetadata.fromJson(core.Map _json)
-      : this(
-          antennaModel: _json.containsKey('antennaModel')
-              ? _json['antennaModel'] as core.String
-              : null,
-          commonChannelGroup: _json.containsKey('commonChannelGroup')
-              ? _json['commonChannelGroup'] as core.String
-              : null,
-          interferenceCoordinationGroup:
-              _json.containsKey('interferenceCoordinationGroup')
-                  ? _json['interferenceCoordinationGroup'] as core.String
-                  : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (antennaModel != null) 'antennaModel': antennaModel!,
-        if (commonChannelGroup != null)
-          'commonChannelGroup': commonChannelGroup!,
-        if (interferenceCoordinationGroup != null)
-          'interferenceCoordinationGroup': interferenceCoordinationGroup!,
-      };
-}
-
-/// Used by:
-///
 /// - prod_tt_sasportal:v1alpha1 : SasPortalDeviceModel
 /// - sasportal:v1alpha1 : SasPortalDeviceModel
 class $SasPortalDeviceModel {
@@ -2268,6 +2198,7 @@
 /// Used by:
 ///
 /// - alertcenter:v1beta1 : Status
+/// - cloudfunctions:v2beta : Status
 /// - containeranalysis:v1beta1 : Status
 /// - dataflow:v1b3 : Status
 /// - datalabeling:v1beta1 : GoogleRpcStatus
@@ -2275,6 +2206,7 @@
 /// - documentai:v1beta3 : GoogleRpcStatus
 /// - domains:v1beta1 : Status
 /// - firebase:v1beta1 : Status
+/// - gkehub:v2alpha : GoogleRpcStatus
 /// - lifesciences:v2beta : Status
 /// - metastore:v1beta : Status
 /// - networkconnectivity:v1alpha1 : GoogleRpcStatus
@@ -2335,6 +2267,7 @@
 /// Used by:
 ///
 /// - bigqueryconnection:v1beta1 : TestIamPermissionsRequest
+/// - cloudfunctions:v2beta : TestIamPermissionsRequest
 /// - containeranalysis:v1beta1 : TestIamPermissionsRequest
 /// - datacatalog:v1beta1 : TestIamPermissionsRequest
 /// - domains:v1beta1 : TestIamPermissionsRequest
@@ -2370,6 +2303,7 @@
 /// Used by:
 ///
 /// - bigqueryconnection:v1beta1 : TestIamPermissionsResponse
+/// - cloudfunctions:v2beta : TestIamPermissionsResponse
 /// - containeranalysis:v1beta1 : TestIamPermissionsResponse
 /// - datacatalog:v1beta1 : TestIamPermissionsResponse
 /// - domains:v1beta1 : TestIamPermissionsResponse
diff --git a/generated/googleapis_beta/lib/sqladmin/v1beta4.dart b/generated/googleapis_beta/lib/sqladmin/v1beta4.dart
index 3cec778..03a4c41 100644
--- a/generated/googleapis_beta/lib/sqladmin/v1beta4.dart
+++ b/generated/googleapis_beta/lib/sqladmin/v1beta4.dart
@@ -3270,6 +3270,9 @@
 
 /// A Cloud SQL instance resource.
 class DatabaseInstance {
+  /// List all maintenance versions applicable on the instance
+  core.List<core.String>? availableMaintenanceVersions;
+
   /// The backend type.
   ///
   /// `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server
@@ -3390,6 +3393,9 @@
   /// This is always `sql#instance`.
   core.String? kind;
 
+  /// The current software version on the instance.
+  core.String? maintenanceVersion;
+
   /// The name of the instance which will act as primary in the replication
   /// setup.
   core.String? masterInstanceName;
@@ -3484,6 +3490,7 @@
   core.List<core.String>? suspensionReason;
 
   DatabaseInstance({
+    this.availableMaintenanceVersions,
     this.backendType,
     this.connectionName,
     this.createTime,
@@ -3499,6 +3506,7 @@
     this.ipAddresses,
     this.ipv6Address,
     this.kind,
+    this.maintenanceVersion,
     this.masterInstanceName,
     this.maxDiskSize,
     this.name,
@@ -3522,6 +3530,12 @@
 
   DatabaseInstance.fromJson(core.Map _json)
       : this(
+          availableMaintenanceVersions:
+              _json.containsKey('availableMaintenanceVersions')
+                  ? (_json['availableMaintenanceVersions'] as core.List)
+                      .map((value) => value as core.String)
+                      .toList()
+                  : null,
           backendType: _json.containsKey('backendType')
               ? _json['backendType'] as core.String
               : null,
@@ -3573,6 +3587,9 @@
               ? _json['ipv6Address'] as core.String
               : null,
           kind: _json.containsKey('kind') ? _json['kind'] as core.String : null,
+          maintenanceVersion: _json.containsKey('maintenanceVersion')
+              ? _json['maintenanceVersion'] as core.String
+              : null,
           masterInstanceName: _json.containsKey('masterInstanceName')
               ? _json['masterInstanceName'] as core.String
               : null,
@@ -3642,6 +3659,8 @@
         );
 
   core.Map<core.String, core.dynamic> toJson() => {
+        if (availableMaintenanceVersions != null)
+          'availableMaintenanceVersions': availableMaintenanceVersions!,
         if (backendType != null) 'backendType': backendType!,
         if (connectionName != null) 'connectionName': connectionName!,
         if (createTime != null) 'createTime': createTime!,
@@ -3660,6 +3679,8 @@
         if (ipAddresses != null) 'ipAddresses': ipAddresses!,
         if (ipv6Address != null) 'ipv6Address': ipv6Address!,
         if (kind != null) 'kind': kind!,
+        if (maintenanceVersion != null)
+          'maintenanceVersion': maintenanceVersion!,
         if (masterInstanceName != null)
           'masterInstanceName': masterInstanceName!,
         if (maxDiskSize != null) 'maxDiskSize': maxDiskSize!,
diff --git a/generated/googleapis_beta/lib/src/user_agent.dart b/generated/googleapis_beta/lib/src/user_agent.dart
index 85caedc..2a5da81 100644
--- a/generated/googleapis_beta/lib/src/user_agent.dart
+++ b/generated/googleapis_beta/lib/src/user_agent.dart
@@ -2,6 +2,6 @@
 
 /// Request headers used by all libraries in this package
 final requestHeaders = {
-  'user-agent': 'google-api-dart-client/8.0.0-dev',
-  'x-goog-api-client': 'gl-dart/${commons.dartVersion} gdcl/8.0.0-dev',
+  'user-agent': 'google-api-dart-client/8.0.0',
+  'x-goog-api-client': 'gl-dart/${commons.dartVersion} gdcl/8.0.0',
 };
diff --git a/generated/googleapis_beta/lib/transcoder/v1beta1.dart b/generated/googleapis_beta/lib/transcoder/v1beta1.dart
deleted file mode 100644
index 109a0b0..0000000
--- a/generated/googleapis_beta/lib/transcoder/v1beta1.dart
+++ /dev/null
@@ -1,2738 +0,0 @@
-// This is a generated file (see the discoveryapis_generator project).
-
-// ignore_for_file: camel_case_types
-// ignore_for_file: comment_references
-// ignore_for_file: file_names
-// ignore_for_file: library_names
-// ignore_for_file: lines_longer_than_80_chars
-// ignore_for_file: non_constant_identifier_names
-// ignore_for_file: prefer_expression_function_bodies
-// ignore_for_file: prefer_interpolation_to_compose_strings
-// ignore_for_file: unnecessary_brace_in_string_interps
-// ignore_for_file: unnecessary_lambdas
-// ignore_for_file: unnecessary_string_interpolations
-
-/// Transcoder API - v1beta1
-///
-/// This API converts video files into formats suitable for consumer
-/// distribution.
-///
-/// For more information, see <https://cloud.google.com/transcoder/docs/>
-///
-/// Create an instance of [TranscoderApi] to access these resources:
-///
-/// - [ProjectsResource]
-///   - [ProjectsLocationsResource]
-///     - [ProjectsLocationsJobTemplatesResource]
-///     - [ProjectsLocationsJobsResource]
-library transcoder.v1beta1;
-
-import 'dart:async' as async;
-import 'dart:convert' as convert;
-import 'dart:core' as core;
-
-import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
-import 'package:http/http.dart' as http;
-
-// ignore: deprecated_member_use_from_same_package
-import '../shared.dart';
-import '../src/user_agent.dart';
-
-export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
-    show ApiRequestError, DetailedApiRequestError;
-
-/// This API converts video files into formats suitable for consumer
-/// distribution.
-class TranscoderApi {
-  /// See, edit, configure, and delete your Google Cloud data and see the email
-  /// address for your Google Account.
-  static const cloudPlatformScope =
-      'https://www.googleapis.com/auth/cloud-platform';
-
-  final commons.ApiRequester _requester;
-
-  ProjectsResource get projects => ProjectsResource(_requester);
-
-  TranscoderApi(http.Client client,
-      {core.String rootUrl = 'https://transcoder.googleapis.com/',
-      core.String servicePath = ''})
-      : _requester =
-            commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
-}
-
-class ProjectsResource {
-  final commons.ApiRequester _requester;
-
-  ProjectsLocationsResource get locations =>
-      ProjectsLocationsResource(_requester);
-
-  ProjectsResource(commons.ApiRequester client) : _requester = client;
-}
-
-class ProjectsLocationsResource {
-  final commons.ApiRequester _requester;
-
-  ProjectsLocationsJobTemplatesResource get jobTemplates =>
-      ProjectsLocationsJobTemplatesResource(_requester);
-  ProjectsLocationsJobsResource get jobs =>
-      ProjectsLocationsJobsResource(_requester);
-
-  ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
-}
-
-class ProjectsLocationsJobTemplatesResource {
-  final commons.ApiRequester _requester;
-
-  ProjectsLocationsJobTemplatesResource(commons.ApiRequester client)
-      : _requester = client;
-
-  /// Creates a job template in the specified region.
-  ///
-  /// [request] - The metadata request object.
-  ///
-  /// Request parameters:
-  ///
-  /// [parent] - Required. The parent location to create this job template.
-  /// Format: `projects/{project}/locations/{location}`
-  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
-  ///
-  /// [jobTemplateId] - Required. The ID to use for the job template, which will
-  /// become the final component of the job template's resource name. This value
-  /// should be 4-63 characters, and valid characters must match the regular
-  /// expression `a-zA-Z*`.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [JobTemplate].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<JobTemplate> create(
-    JobTemplate request,
-    core.String parent, {
-    core.String? jobTemplateId,
-    core.String? $fields,
-  }) async {
-    final _body = convert.json.encode(request);
-    final _queryParams = <core.String, core.List<core.String>>{
-      if (jobTemplateId != null) 'jobTemplateId': [jobTemplateId],
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1beta1/' + core.Uri.encodeFull('$parent') + '/jobTemplates';
-
-    final _response = await _requester.request(
-      _url,
-      'POST',
-      body: _body,
-      queryParams: _queryParams,
-    );
-    return JobTemplate.fromJson(
-        _response as core.Map<core.String, core.dynamic>);
-  }
-
-  /// Deletes a job template.
-  ///
-  /// Request parameters:
-  ///
-  /// [name] - Required. The name of the job template to delete.
-  /// `projects/{project}/locations/{location}/jobTemplates/{job_template}`
-  /// Value must have pattern
-  /// `^projects/\[^/\]+/locations/\[^/\]+/jobTemplates/\[^/\]+$`.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [Empty].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<Empty> delete(
-    core.String name, {
-    core.String? $fields,
-  }) async {
-    final _queryParams = <core.String, core.List<core.String>>{
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1beta1/' + core.Uri.encodeFull('$name');
-
-    final _response = await _requester.request(
-      _url,
-      'DELETE',
-      queryParams: _queryParams,
-    );
-    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
-  }
-
-  /// Returns the job template data.
-  ///
-  /// Request parameters:
-  ///
-  /// [name] - Required. The name of the job template to retrieve. Format:
-  /// `projects/{project}/locations/{location}/jobTemplates/{job_template}`
-  /// Value must have pattern
-  /// `^projects/\[^/\]+/locations/\[^/\]+/jobTemplates/\[^/\]+$`.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [JobTemplate].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<JobTemplate> get(
-    core.String name, {
-    core.String? $fields,
-  }) async {
-    final _queryParams = <core.String, core.List<core.String>>{
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1beta1/' + core.Uri.encodeFull('$name');
-
-    final _response = await _requester.request(
-      _url,
-      'GET',
-      queryParams: _queryParams,
-    );
-    return JobTemplate.fromJson(
-        _response as core.Map<core.String, core.dynamic>);
-  }
-
-  /// Lists job templates in the specified region.
-  ///
-  /// Request parameters:
-  ///
-  /// [parent] - Required. The parent location from which to retrieve the
-  /// collection of job templates. Format:
-  /// `projects/{project}/locations/{location}`
-  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
-  ///
-  /// [pageSize] - The maximum number of items to return.
-  ///
-  /// [pageToken] - The `next_page_token` value returned from a previous List
-  /// request, if any.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [ListJobTemplatesResponse].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<ListJobTemplatesResponse> list(
-    core.String parent, {
-    core.int? pageSize,
-    core.String? pageToken,
-    core.String? $fields,
-  }) async {
-    final _queryParams = <core.String, core.List<core.String>>{
-      if (pageSize != null) 'pageSize': ['${pageSize}'],
-      if (pageToken != null) 'pageToken': [pageToken],
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1beta1/' + core.Uri.encodeFull('$parent') + '/jobTemplates';
-
-    final _response = await _requester.request(
-      _url,
-      'GET',
-      queryParams: _queryParams,
-    );
-    return ListJobTemplatesResponse.fromJson(
-        _response as core.Map<core.String, core.dynamic>);
-  }
-}
-
-class ProjectsLocationsJobsResource {
-  final commons.ApiRequester _requester;
-
-  ProjectsLocationsJobsResource(commons.ApiRequester client)
-      : _requester = client;
-
-  /// Creates a job in the specified region.
-  ///
-  /// [request] - The metadata request object.
-  ///
-  /// Request parameters:
-  ///
-  /// [parent] - Required. The parent location to create and process this job.
-  /// Format: `projects/{project}/locations/{location}`
-  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [Job].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<Job> create(
-    Job request,
-    core.String parent, {
-    core.String? $fields,
-  }) async {
-    final _body = convert.json.encode(request);
-    final _queryParams = <core.String, core.List<core.String>>{
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1beta1/' + core.Uri.encodeFull('$parent') + '/jobs';
-
-    final _response = await _requester.request(
-      _url,
-      'POST',
-      body: _body,
-      queryParams: _queryParams,
-    );
-    return Job.fromJson(_response as core.Map<core.String, core.dynamic>);
-  }
-
-  /// Deletes a job.
-  ///
-  /// Request parameters:
-  ///
-  /// [name] - Required. The name of the job to delete. Format:
-  /// `projects/{project}/locations/{location}/jobs/{job}`
-  /// Value must have pattern
-  /// `^projects/\[^/\]+/locations/\[^/\]+/jobs/\[^/\]+$`.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [Empty].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<Empty> delete(
-    core.String name, {
-    core.String? $fields,
-  }) async {
-    final _queryParams = <core.String, core.List<core.String>>{
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1beta1/' + core.Uri.encodeFull('$name');
-
-    final _response = await _requester.request(
-      _url,
-      'DELETE',
-      queryParams: _queryParams,
-    );
-    return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
-  }
-
-  /// Returns the job data.
-  ///
-  /// Request parameters:
-  ///
-  /// [name] - Required. The name of the job to retrieve. Format:
-  /// `projects/{project}/locations/{location}/jobs/{job}`
-  /// Value must have pattern
-  /// `^projects/\[^/\]+/locations/\[^/\]+/jobs/\[^/\]+$`.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [Job].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<Job> get(
-    core.String name, {
-    core.String? $fields,
-  }) async {
-    final _queryParams = <core.String, core.List<core.String>>{
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1beta1/' + core.Uri.encodeFull('$name');
-
-    final _response = await _requester.request(
-      _url,
-      'GET',
-      queryParams: _queryParams,
-    );
-    return Job.fromJson(_response as core.Map<core.String, core.dynamic>);
-  }
-
-  /// Lists jobs in the specified region.
-  ///
-  /// Request parameters:
-  ///
-  /// [parent] - Required. Format: `projects/{project}/locations/{location}`
-  /// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
-  ///
-  /// [pageSize] - The maximum number of items to return.
-  ///
-  /// [pageToken] - The `next_page_token` value returned from a previous List
-  /// request, if any.
-  ///
-  /// [$fields] - Selector specifying which fields to include in a partial
-  /// response.
-  ///
-  /// Completes with a [ListJobsResponse].
-  ///
-  /// Completes with a [commons.ApiRequestError] if the API endpoint returned an
-  /// error.
-  ///
-  /// If the used [http.Client] completes with an error when making a REST call,
-  /// this method will complete with the same error.
-  async.Future<ListJobsResponse> list(
-    core.String parent, {
-    core.int? pageSize,
-    core.String? pageToken,
-    core.String? $fields,
-  }) async {
-    final _queryParams = <core.String, core.List<core.String>>{
-      if (pageSize != null) 'pageSize': ['${pageSize}'],
-      if (pageToken != null) 'pageToken': [pageToken],
-      if ($fields != null) 'fields': [$fields],
-    };
-
-    final _url = 'v1beta1/' + core.Uri.encodeFull('$parent') + '/jobs';
-
-    final _response = await _requester.request(
-      _url,
-      'GET',
-      queryParams: _queryParams,
-    );
-    return ListJobsResponse.fromJson(
-        _response as core.Map<core.String, core.dynamic>);
-  }
-}
-
-/// Ad break.
-class AdBreak {
-  /// Start time in seconds for the ad break, relative to the output file
-  /// timeline.
-  ///
-  /// The default is `0s`.
-  core.String? startTimeOffset;
-
-  AdBreak({
-    this.startTimeOffset,
-  });
-
-  AdBreak.fromJson(core.Map _json)
-      : this(
-          startTimeOffset: _json.containsKey('startTimeOffset')
-              ? _json['startTimeOffset'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (startTimeOffset != null) 'startTimeOffset': startTimeOffset!,
-      };
-}
-
-/// Configuration for AES-128 encryption.
-typedef Aes128Encryption = $Encryption;
-
-/// Animation types.
-class Animation {
-  /// End previous animation.
-  AnimationEnd? animationEnd;
-
-  /// Display overlay object with fade animation.
-  AnimationFade? animationFade;
-
-  /// Display static overlay object.
-  AnimationStatic? animationStatic;
-
-  Animation({
-    this.animationEnd,
-    this.animationFade,
-    this.animationStatic,
-  });
-
-  Animation.fromJson(core.Map _json)
-      : this(
-          animationEnd: _json.containsKey('animationEnd')
-              ? AnimationEnd.fromJson(
-                  _json['animationEnd'] as core.Map<core.String, core.dynamic>)
-              : null,
-          animationFade: _json.containsKey('animationFade')
-              ? AnimationFade.fromJson(
-                  _json['animationFade'] as core.Map<core.String, core.dynamic>)
-              : null,
-          animationStatic: _json.containsKey('animationStatic')
-              ? AnimationStatic.fromJson(_json['animationStatic']
-                  as core.Map<core.String, core.dynamic>)
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (animationEnd != null) 'animationEnd': animationEnd!,
-        if (animationFade != null) 'animationFade': animationFade!,
-        if (animationStatic != null) 'animationStatic': animationStatic!,
-      };
-}
-
-/// End previous overlay animation from the video.
-///
-/// Without AnimationEnd, the overlay object will keep the state of previous
-/// animation until the end of the video.
-class AnimationEnd {
-  /// The time to end overlay object, in seconds.
-  ///
-  /// Default: 0
-  core.String? startTimeOffset;
-
-  AnimationEnd({
-    this.startTimeOffset,
-  });
-
-  AnimationEnd.fromJson(core.Map _json)
-      : this(
-          startTimeOffset: _json.containsKey('startTimeOffset')
-              ? _json['startTimeOffset'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (startTimeOffset != null) 'startTimeOffset': startTimeOffset!,
-      };
-}
-
-/// Display overlay object with fade animation.
-class AnimationFade {
-  /// The time to end the fade animation, in seconds.
-  ///
-  /// Default: `start_time_offset` + 1s
-  core.String? endTimeOffset;
-
-  /// Type of fade animation: `FADE_IN` or `FADE_OUT`.
-  ///
-  /// Required.
-  /// Possible string values are:
-  /// - "FADE_TYPE_UNSPECIFIED" : The fade type is not specified.
-  /// - "FADE_IN" : Fade the overlay object into view.
-  /// - "FADE_OUT" : Fade the overlay object out of view.
-  core.String? fadeType;
-
-  /// The time to start the fade animation, in seconds.
-  ///
-  /// Default: 0
-  core.String? startTimeOffset;
-
-  /// Normalized coordinates based on output video resolution.
-  ///
-  /// Valid values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the
-  /// overlay object. For example, use the x and y coordinates {0,0} to position
-  /// the top-left corner of the overlay animation in the top-left corner of the
-  /// output video.
-  NormalizedCoordinate? xy;
-
-  AnimationFade({
-    this.endTimeOffset,
-    this.fadeType,
-    this.startTimeOffset,
-    this.xy,
-  });
-
-  AnimationFade.fromJson(core.Map _json)
-      : this(
-          endTimeOffset: _json.containsKey('endTimeOffset')
-              ? _json['endTimeOffset'] as core.String
-              : null,
-          fadeType: _json.containsKey('fadeType')
-              ? _json['fadeType'] as core.String
-              : null,
-          startTimeOffset: _json.containsKey('startTimeOffset')
-              ? _json['startTimeOffset'] as core.String
-              : null,
-          xy: _json.containsKey('xy')
-              ? NormalizedCoordinate.fromJson(
-                  _json['xy'] as core.Map<core.String, core.dynamic>)
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (endTimeOffset != null) 'endTimeOffset': endTimeOffset!,
-        if (fadeType != null) 'fadeType': fadeType!,
-        if (startTimeOffset != null) 'startTimeOffset': startTimeOffset!,
-        if (xy != null) 'xy': xy!,
-      };
-}
-
-/// Display static overlay object.
-class AnimationStatic {
-  /// The time to start displaying the overlay object, in seconds.
-  ///
-  /// Default: 0
-  core.String? startTimeOffset;
-
-  /// Normalized coordinates based on output video resolution.
-  ///
-  /// Valid values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the
-  /// overlay object. For example, use the x and y coordinates {0,0} to position
-  /// the top-left corner of the overlay animation in the top-left corner of the
-  /// output video.
-  NormalizedCoordinate? xy;
-
-  AnimationStatic({
-    this.startTimeOffset,
-    this.xy,
-  });
-
-  AnimationStatic.fromJson(core.Map _json)
-      : this(
-          startTimeOffset: _json.containsKey('startTimeOffset')
-              ? _json['startTimeOffset'] as core.String
-              : null,
-          xy: _json.containsKey('xy')
-              ? NormalizedCoordinate.fromJson(
-                  _json['xy'] as core.Map<core.String, core.dynamic>)
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (startTimeOffset != null) 'startTimeOffset': startTimeOffset!,
-        if (xy != null) 'xy': xy!,
-      };
-}
-
-/// Audio preprocessing configuration.
-class Audio {
-  /// Enable boosting high frequency components.
-  ///
-  /// The default is `false`.
-  core.bool? highBoost;
-
-  /// Enable boosting low frequency components.
-  ///
-  /// The default is `false`.
-  core.bool? lowBoost;
-
-  /// Specify audio loudness normalization in loudness units relative to full
-  /// scale (LUFS).
-  ///
-  /// Enter a value between -24 and 0 (the default), where: * -24 is the
-  /// Advanced Television Systems Committee (ATSC A/85) standard * -23 is the EU
-  /// R128 broadcast standard * -19 is the prior standard for online mono audio
-  /// * -18 is the ReplayGain standard * -16 is the prior standard for stereo
-  /// audio * -14 is the new online audio standard recommended by Spotify, as
-  /// well as Amazon Echo * 0 disables normalization
-  core.double? lufs;
-
-  Audio({
-    this.highBoost,
-    this.lowBoost,
-    this.lufs,
-  });
-
-  Audio.fromJson(core.Map _json)
-      : this(
-          highBoost: _json.containsKey('highBoost')
-              ? _json['highBoost'] as core.bool
-              : null,
-          lowBoost: _json.containsKey('lowBoost')
-              ? _json['lowBoost'] as core.bool
-              : null,
-          lufs: _json.containsKey('lufs')
-              ? (_json['lufs'] as core.num).toDouble()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (highBoost != null) 'highBoost': highBoost!,
-        if (lowBoost != null) 'lowBoost': lowBoost!,
-        if (lufs != null) 'lufs': lufs!,
-      };
-}
-
-/// The mapping for the `Job.edit_list` atoms with audio `EditAtom.inputs`.
-class AudioAtom {
-  /// List of `Channel`s for this audio stream.
-  ///
-  /// for in-depth explanation.
-  core.List<AudioChannel>? channels;
-
-  /// The `EditAtom.key` that references the atom with audio inputs in the
-  /// `Job.edit_list`.
-  ///
-  /// Required.
-  core.String? key;
-
-  AudioAtom({
-    this.channels,
-    this.key,
-  });
-
-  AudioAtom.fromJson(core.Map _json)
-      : this(
-          channels: _json.containsKey('channels')
-              ? (_json['channels'] as core.List)
-                  .map((value) => AudioChannel.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          key: _json.containsKey('key') ? _json['key'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (channels != null) 'channels': channels!,
-        if (key != null) 'key': key!,
-      };
-}
-
-/// The audio channel.
-class AudioChannel {
-  /// List of `Job.inputs` for this audio channel.
-  core.List<AudioChannelInput>? inputs;
-
-  AudioChannel({
-    this.inputs,
-  });
-
-  AudioChannel.fromJson(core.Map _json)
-      : this(
-          inputs: _json.containsKey('inputs')
-              ? (_json['inputs'] as core.List)
-                  .map((value) => AudioChannelInput.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (inputs != null) 'inputs': inputs!,
-      };
-}
-
-/// Identifies which input file, track, and channel should be used.
-class AudioChannelInput {
-  /// The zero-based index of the channel in the input file.
-  ///
-  /// Required.
-  core.int? channel;
-
-  /// Audio volume control in dB.
-  ///
-  /// Negative values decrease volume, positive values increase. The default is
-  /// 0.
-  core.double? gainDb;
-
-  /// The `Input.key` that identifies the input file.
-  ///
-  /// Required.
-  core.String? key;
-
-  /// The zero-based index of the track in the input file.
-  ///
-  /// Required.
-  core.int? track;
-
-  AudioChannelInput({
-    this.channel,
-    this.gainDb,
-    this.key,
-    this.track,
-  });
-
-  AudioChannelInput.fromJson(core.Map _json)
-      : this(
-          channel: _json.containsKey('channel')
-              ? _json['channel'] as core.int
-              : null,
-          gainDb: _json.containsKey('gainDb')
-              ? (_json['gainDb'] as core.num).toDouble()
-              : null,
-          key: _json.containsKey('key') ? _json['key'] as core.String : null,
-          track: _json.containsKey('track') ? _json['track'] as core.int : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (channel != null) 'channel': channel!,
-        if (gainDb != null) 'gainDb': gainDb!,
-        if (key != null) 'key': key!,
-        if (track != null) 'track': track!,
-      };
-}
-
-/// Audio stream resource.
-class AudioStream {
-  /// Audio bitrate in bits per second.
-  ///
-  /// Must be between 1 and 10,000,000.
-  ///
-  /// Required.
-  core.int? bitrateBps;
-
-  /// Number of audio channels.
-  ///
-  /// Must be between 1 and 6. The default is 2.
-  core.int? channelCount;
-
-  /// A list of channel names specifying layout of the audio channels.
-  ///
-  /// This only affects the metadata embedded in the container headers, if
-  /// supported by the specified format. The default is `["fl", "fr"]`.
-  /// Supported channel names: - 'fl' - Front left channel - 'fr' - Front right
-  /// channel - 'sl' - Side left channel - 'sr' - Side right channel - 'fc' -
-  /// Front center channel - 'lfe' - Low frequency
-  core.List<core.String>? channelLayout;
-
-  /// The codec for this audio stream.
-  ///
-  /// The default is `"aac"`. Supported audio codecs: - 'aac' - 'aac-he' -
-  /// 'aac-he-v2' - 'mp3' - 'ac3' - 'eac3'
-  core.String? codec;
-
-  /// The mapping for the `Job.edit_list` atoms with audio `EditAtom.inputs`.
-  core.List<AudioAtom>? mapping;
-
-  /// The audio sample rate in Hertz.
-  ///
-  /// The default is 48000 Hertz.
-  core.int? sampleRateHertz;
-
-  AudioStream({
-    this.bitrateBps,
-    this.channelCount,
-    this.channelLayout,
-    this.codec,
-    this.mapping,
-    this.sampleRateHertz,
-  });
-
-  AudioStream.fromJson(core.Map _json)
-      : this(
-          bitrateBps: _json.containsKey('bitrateBps')
-              ? _json['bitrateBps'] as core.int
-              : null,
-          channelCount: _json.containsKey('channelCount')
-              ? _json['channelCount'] as core.int
-              : null,
-          channelLayout: _json.containsKey('channelLayout')
-              ? (_json['channelLayout'] as core.List)
-                  .map((value) => value as core.String)
-                  .toList()
-              : null,
-          codec:
-              _json.containsKey('codec') ? _json['codec'] as core.String : null,
-          mapping: _json.containsKey('mapping')
-              ? (_json['mapping'] as core.List)
-                  .map((value) => AudioAtom.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          sampleRateHertz: _json.containsKey('sampleRateHertz')
-              ? _json['sampleRateHertz'] as core.int
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (bitrateBps != null) 'bitrateBps': bitrateBps!,
-        if (channelCount != null) 'channelCount': channelCount!,
-        if (channelLayout != null) 'channelLayout': channelLayout!,
-        if (codec != null) 'codec': codec!,
-        if (mapping != null) 'mapping': mapping!,
-        if (sampleRateHertz != null) 'sampleRateHertz': sampleRateHertz!,
-      };
-}
-
-/// Color preprocessing configuration.
-class Color {
-  /// Control brightness of the video.
-  ///
-  /// Enter a value between -1 and 1, where -1 is minimum brightness and 1 is
-  /// maximum brightness. 0 is no change. The default is 0.
-  core.double? brightness;
-
-  /// Control black and white contrast of the video.
-  ///
-  /// Enter a value between -1 and 1, where -1 is minimum contrast and 1 is
-  /// maximum contrast. 0 is no change. The default is 0.
-  core.double? contrast;
-
-  /// Control color saturation of the video.
-  ///
-  /// Enter a value between -1 and 1, where -1 is fully desaturated and 1 is
-  /// maximum saturation. 0 is no change. The default is 0.
-  core.double? saturation;
-
-  Color({
-    this.brightness,
-    this.contrast,
-    this.saturation,
-  });
-
-  Color.fromJson(core.Map _json)
-      : this(
-          brightness: _json.containsKey('brightness')
-              ? (_json['brightness'] as core.num).toDouble()
-              : null,
-          contrast: _json.containsKey('contrast')
-              ? (_json['contrast'] as core.num).toDouble()
-              : null,
-          saturation: _json.containsKey('saturation')
-              ? (_json['saturation'] as core.num).toDouble()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (brightness != null) 'brightness': brightness!,
-        if (contrast != null) 'contrast': contrast!,
-        if (saturation != null) 'saturation': saturation!,
-      };
-}
-
-/// Video cropping configuration for the input video.
-///
-/// The cropped input video is scaled to match the output resolution.
-class Crop {
-  /// The number of pixels to crop from the bottom.
-  ///
-  /// The default is 0.
-  core.int? bottomPixels;
-
-  /// The number of pixels to crop from the left.
-  ///
-  /// The default is 0.
-  core.int? leftPixels;
-
-  /// The number of pixels to crop from the right.
-  ///
-  /// The default is 0.
-  core.int? rightPixels;
-
-  /// The number of pixels to crop from the top.
-  ///
-  /// The default is 0.
-  core.int? topPixels;
-
-  Crop({
-    this.bottomPixels,
-    this.leftPixels,
-    this.rightPixels,
-    this.topPixels,
-  });
-
-  Crop.fromJson(core.Map _json)
-      : this(
-          bottomPixels: _json.containsKey('bottomPixels')
-              ? _json['bottomPixels'] as core.int
-              : null,
-          leftPixels: _json.containsKey('leftPixels')
-              ? _json['leftPixels'] as core.int
-              : null,
-          rightPixels: _json.containsKey('rightPixels')
-              ? _json['rightPixels'] as core.int
-              : null,
-          topPixels: _json.containsKey('topPixels')
-              ? _json['topPixels'] as core.int
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (bottomPixels != null) 'bottomPixels': bottomPixels!,
-        if (leftPixels != null) 'leftPixels': leftPixels!,
-        if (rightPixels != null) 'rightPixels': rightPixels!,
-        if (topPixels != null) 'topPixels': topPixels!,
-      };
-}
-
-/// Deblock preprocessing configuration.
-class Deblock {
-  /// Enable deblocker.
-  ///
-  /// The default is `false`.
-  core.bool? enabled;
-
-  /// Set strength of the deblocker.
-  ///
-  /// Enter a value between 0 and 1. The higher the value, the stronger the
-  /// block removal. 0 is no deblocking. The default is 0.
-  core.double? strength;
-
-  Deblock({
-    this.enabled,
-    this.strength,
-  });
-
-  Deblock.fromJson(core.Map _json)
-      : this(
-          enabled: _json.containsKey('enabled')
-              ? _json['enabled'] as core.bool
-              : null,
-          strength: _json.containsKey('strength')
-              ? (_json['strength'] as core.num).toDouble()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (enabled != null) 'enabled': enabled!,
-        if (strength != null) 'strength': strength!,
-      };
-}
-
-/// Denoise preprocessing configuration.
-class Denoise {
-  /// Set strength of the denoise.
-  ///
-  /// Enter a value between 0 and 1. The higher the value, the smoother the
-  /// image. 0 is no denoising. The default is 0.
-  core.double? strength;
-
-  /// Set the denoiser mode.
-  ///
-  /// The default is `"standard"`. Supported denoiser modes: - 'standard' -
-  /// 'grain'
-  core.String? tune;
-
-  Denoise({
-    this.strength,
-    this.tune,
-  });
-
-  Denoise.fromJson(core.Map _json)
-      : this(
-          strength: _json.containsKey('strength')
-              ? (_json['strength'] as core.num).toDouble()
-              : null,
-          tune: _json.containsKey('tune') ? _json['tune'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (strength != null) 'strength': strength!,
-        if (tune != null) 'tune': tune!,
-      };
-}
-
-/// Edit atom.
-class EditAtom {
-  /// End time in seconds for the atom, relative to the input file timeline.
-  ///
-  /// When `end_time_offset` is not specified, the `inputs` are used until the
-  /// end of the atom.
-  core.String? endTimeOffset;
-
-  /// List of `Input.key`s identifying files that should be used in this atom.
-  ///
-  /// The listed `inputs` must have the same timeline.
-  core.List<core.String>? inputs;
-
-  /// A unique key for this atom.
-  ///
-  /// Must be specified when using advanced mapping.
-  core.String? key;
-
-  /// Start time in seconds for the atom, relative to the input file timeline.
-  ///
-  /// The default is `0s`.
-  core.String? startTimeOffset;
-
-  EditAtom({
-    this.endTimeOffset,
-    this.inputs,
-    this.key,
-    this.startTimeOffset,
-  });
-
-  EditAtom.fromJson(core.Map _json)
-      : this(
-          endTimeOffset: _json.containsKey('endTimeOffset')
-              ? _json['endTimeOffset'] as core.String
-              : null,
-          inputs: _json.containsKey('inputs')
-              ? (_json['inputs'] as core.List)
-                  .map((value) => value as core.String)
-                  .toList()
-              : null,
-          key: _json.containsKey('key') ? _json['key'] as core.String : null,
-          startTimeOffset: _json.containsKey('startTimeOffset')
-              ? _json['startTimeOffset'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (endTimeOffset != null) 'endTimeOffset': endTimeOffset!,
-        if (inputs != null) 'inputs': inputs!,
-        if (key != null) 'key': key!,
-        if (startTimeOffset != null) 'startTimeOffset': startTimeOffset!,
-      };
-}
-
-/// Encoding of an input file such as an audio, video, or text track.
-///
-/// Elementary streams must be packaged before mapping and sharing between
-/// different output formats.
-class ElementaryStream {
-  /// Encoding of an audio stream.
-  AudioStream? audioStream;
-
-  /// A unique key for this elementary stream.
-  core.String? key;
-
-  /// Encoding of a text stream.
-  ///
-  /// For example, closed captions or subtitles.
-  TextStream? textStream;
-
-  /// Encoding of a video stream.
-  VideoStream? videoStream;
-
-  ElementaryStream({
-    this.audioStream,
-    this.key,
-    this.textStream,
-    this.videoStream,
-  });
-
-  ElementaryStream.fromJson(core.Map _json)
-      : this(
-          audioStream: _json.containsKey('audioStream')
-              ? AudioStream.fromJson(
-                  _json['audioStream'] as core.Map<core.String, core.dynamic>)
-              : null,
-          key: _json.containsKey('key') ? _json['key'] as core.String : null,
-          textStream: _json.containsKey('textStream')
-              ? TextStream.fromJson(
-                  _json['textStream'] as core.Map<core.String, core.dynamic>)
-              : null,
-          videoStream: _json.containsKey('videoStream')
-              ? VideoStream.fromJson(
-                  _json['videoStream'] as core.Map<core.String, core.dynamic>)
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (audioStream != null) 'audioStream': audioStream!,
-        if (key != null) 'key': key!,
-        if (textStream != null) 'textStream': textStream!,
-        if (videoStream != null) 'videoStream': videoStream!,
-      };
-}
-
-/// 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 `{}`.
-typedef Empty = $Empty;
-
-/// Encryption settings.
-class Encryption {
-  /// Configuration for AES-128 encryption.
-  Aes128Encryption? aes128;
-
-  /// 128 bit Initialization Vector (IV) represented as lowercase hexadecimal
-  /// digits.
-  ///
-  /// Required.
-  core.String? iv;
-
-  /// 128 bit encryption key represented as lowercase hexadecimal digits.
-  ///
-  /// Required.
-  core.String? key;
-
-  /// Configuration for MPEG Common Encryption (MPEG-CENC).
-  MpegCommonEncryption? mpegCenc;
-
-  /// Configuration for SAMPLE-AES encryption.
-  SampleAesEncryption? sampleAes;
-
-  Encryption({
-    this.aes128,
-    this.iv,
-    this.key,
-    this.mpegCenc,
-    this.sampleAes,
-  });
-
-  Encryption.fromJson(core.Map _json)
-      : this(
-          aes128: _json.containsKey('aes128')
-              ? Aes128Encryption.fromJson(
-                  _json['aes128'] as core.Map<core.String, core.dynamic>)
-              : null,
-          iv: _json.containsKey('iv') ? _json['iv'] as core.String : null,
-          key: _json.containsKey('key') ? _json['key'] as core.String : null,
-          mpegCenc: _json.containsKey('mpegCenc')
-              ? MpegCommonEncryption.fromJson(
-                  _json['mpegCenc'] as core.Map<core.String, core.dynamic>)
-              : null,
-          sampleAes: _json.containsKey('sampleAes')
-              ? SampleAesEncryption.fromJson(
-                  _json['sampleAes'] as core.Map<core.String, core.dynamic>)
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (aes128 != null) 'aes128': aes128!,
-        if (iv != null) 'iv': iv!,
-        if (key != null) 'key': key!,
-        if (mpegCenc != null) 'mpegCenc': mpegCenc!,
-        if (sampleAes != null) 'sampleAes': sampleAes!,
-      };
-}
-
-/// Additional information about the reasons for the failure.
-class FailureDetail {
-  /// A description of the failure.
-  core.String? description;
-
-  FailureDetail({
-    this.description,
-  });
-
-  FailureDetail.fromJson(core.Map _json)
-      : this(
-          description: _json.containsKey('description')
-              ? _json['description'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (description != null) 'description': description!,
-      };
-}
-
-/// Overlaid jpeg image.
-class Image {
-  /// Target image opacity.
-  ///
-  /// Valid values are from `1.0` (solid, default) to `0.0` (transparent),
-  /// exclusive. Set this to a value greater than `0.0`.
-  core.double? alpha;
-
-  /// Normalized image resolution, based on output video resolution.
-  ///
-  /// Valid values: `0.0`–`1.0`. To respect the original image aspect ratio, set
-  /// either `x` or `y` to `0.0`. To use the original image resolution, set both
-  /// `x` and `y` to `0.0`.
-  NormalizedCoordinate? resolution;
-
-  /// URI of the JPEG image in Cloud Storage.
-  ///
-  /// For example, `gs://bucket/inputs/image.jpeg`. JPEG is the only supported
-  /// image type.
-  ///
-  /// Required.
-  core.String? uri;
-
-  Image({
-    this.alpha,
-    this.resolution,
-    this.uri,
-  });
-
-  Image.fromJson(core.Map _json)
-      : this(
-          alpha: _json.containsKey('alpha')
-              ? (_json['alpha'] as core.num).toDouble()
-              : null,
-          resolution: _json.containsKey('resolution')
-              ? NormalizedCoordinate.fromJson(
-                  _json['resolution'] as core.Map<core.String, core.dynamic>)
-              : null,
-          uri: _json.containsKey('uri') ? _json['uri'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (alpha != null) 'alpha': alpha!,
-        if (resolution != null) 'resolution': resolution!,
-        if (uri != null) 'uri': uri!,
-      };
-}
-
-/// Input asset.
-class Input {
-  /// A unique key for this input.
-  ///
-  /// Must be specified when using advanced mapping and edit lists.
-  core.String? key;
-
-  /// Preprocessing configurations.
-  PreprocessingConfig? preprocessingConfig;
-
-  /// URI of the media.
-  ///
-  /// Input files must be at least 5 seconds in duration and stored in Cloud
-  /// Storage (for example, `gs://bucket/inputs/file.mp4`). If empty, the value
-  /// will be populated from `Job.input_uri`.
-  core.String? uri;
-
-  Input({
-    this.key,
-    this.preprocessingConfig,
-    this.uri,
-  });
-
-  Input.fromJson(core.Map _json)
-      : this(
-          key: _json.containsKey('key') ? _json['key'] as core.String : null,
-          preprocessingConfig: _json.containsKey('preprocessingConfig')
-              ? PreprocessingConfig.fromJson(_json['preprocessingConfig']
-                  as core.Map<core.String, core.dynamic>)
-              : null,
-          uri: _json.containsKey('uri') ? _json['uri'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (key != null) 'key': key!,
-        if (preprocessingConfig != null)
-          'preprocessingConfig': preprocessingConfig!,
-        if (uri != null) 'uri': uri!,
-      };
-}
-
-/// Transcoding job resource.
-class Job {
-  /// The configuration for this job.
-  JobConfig? config;
-
-  /// The time the job was created.
-  ///
-  /// Output only.
-  core.String? createTime;
-
-  /// The time the transcoding finished.
-  ///
-  /// Output only.
-  core.String? endTime;
-
-  /// List of failure details.
-  ///
-  /// This property may contain additional information about the failure when
-  /// `failure_reason` is present. *Note*: This feature is not yet available.
-  ///
-  /// Output only.
-  core.List<FailureDetail>? failureDetails;
-
-  /// A description of the reason for the failure.
-  ///
-  /// This property is always present when `state` is `FAILED`.
-  ///
-  /// Output only.
-  core.String? failureReason;
-
-  /// Input only.
-  ///
-  /// Specify the `input_uri` to populate empty `uri` fields in each element of
-  /// `Job.config.inputs` or `JobTemplate.config.inputs` when using template.
-  /// URI of the media. Input files must be at least 5 seconds in duration and
-  /// stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`).
-  core.String? inputUri;
-
-  /// The resource name of the job.
-  ///
-  /// Format: `projects/{project}/locations/{location}/jobs/{job}`
-  core.String? name;
-
-  /// The origin URI.
-  ///
-  /// *Note*: This feature is not yet available.
-  ///
-  /// Output only.
-  OriginUri? originUri;
-
-  /// Input only.
-  ///
-  /// Specify the `output_uri` to populate an empty `Job.config.output.uri` or
-  /// `JobTemplate.config.output.uri` when using template. URI for the output
-  /// file(s). For example, `gs://my-bucket/outputs/`.
-  core.String? outputUri;
-
-  /// Specify the priority of the job.
-  ///
-  /// Enter a value between 0 and 100, where 0 is the lowest priority and 100 is
-  /// the highest priority. The default is 0.
-  core.int? priority;
-
-  /// Estimated fractional progress, from `0` to `1` for each step.
-  ///
-  /// *Note*: This feature is not yet available.
-  ///
-  /// Output only.
-  Progress? progress;
-
-  /// The time the transcoding started.
-  ///
-  /// Output only.
-  core.String? startTime;
-
-  /// The current state of the job.
-  ///
-  /// Output only.
-  /// Possible string values are:
-  /// - "PROCESSING_STATE_UNSPECIFIED" : The processing state is not specified.
-  /// - "PENDING" : The job is enqueued and will be picked up for processing
-  /// soon.
-  /// - "RUNNING" : The job is being processed.
-  /// - "SUCCEEDED" : The job has been completed successfully.
-  /// - "FAILED" : The job has failed. For additional information, see
-  /// `failure_reason` and `failure_details`
-  core.String? state;
-
-  /// Input only.
-  ///
-  /// Specify the `template_id` to use for populating `Job.config`. The default
-  /// is `preset/web-hd`. Preset Transcoder templates: - `preset/{preset_id}` -
-  /// User defined JobTemplate: `{job_template_id}`
-  core.String? templateId;
-
-  /// Job time to live value in days, which will be effective after job
-  /// completion.
-  ///
-  /// Job should be deleted automatically after the given TTL. Enter a value
-  /// between 1 and 90. The default is 30.
-  core.int? ttlAfterCompletionDays;
-
-  Job({
-    this.config,
-    this.createTime,
-    this.endTime,
-    this.failureDetails,
-    this.failureReason,
-    this.inputUri,
-    this.name,
-    this.originUri,
-    this.outputUri,
-    this.priority,
-    this.progress,
-    this.startTime,
-    this.state,
-    this.templateId,
-    this.ttlAfterCompletionDays,
-  });
-
-  Job.fromJson(core.Map _json)
-      : this(
-          config: _json.containsKey('config')
-              ? JobConfig.fromJson(
-                  _json['config'] as core.Map<core.String, core.dynamic>)
-              : null,
-          createTime: _json.containsKey('createTime')
-              ? _json['createTime'] as core.String
-              : null,
-          endTime: _json.containsKey('endTime')
-              ? _json['endTime'] as core.String
-              : null,
-          failureDetails: _json.containsKey('failureDetails')
-              ? (_json['failureDetails'] as core.List)
-                  .map((value) => FailureDetail.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          failureReason: _json.containsKey('failureReason')
-              ? _json['failureReason'] as core.String
-              : null,
-          inputUri: _json.containsKey('inputUri')
-              ? _json['inputUri'] as core.String
-              : null,
-          name: _json.containsKey('name') ? _json['name'] as core.String : null,
-          originUri: _json.containsKey('originUri')
-              ? OriginUri.fromJson(
-                  _json['originUri'] as core.Map<core.String, core.dynamic>)
-              : null,
-          outputUri: _json.containsKey('outputUri')
-              ? _json['outputUri'] as core.String
-              : null,
-          priority: _json.containsKey('priority')
-              ? _json['priority'] as core.int
-              : null,
-          progress: _json.containsKey('progress')
-              ? Progress.fromJson(
-                  _json['progress'] as core.Map<core.String, core.dynamic>)
-              : null,
-          startTime: _json.containsKey('startTime')
-              ? _json['startTime'] as core.String
-              : null,
-          state:
-              _json.containsKey('state') ? _json['state'] as core.String : null,
-          templateId: _json.containsKey('templateId')
-              ? _json['templateId'] as core.String
-              : null,
-          ttlAfterCompletionDays: _json.containsKey('ttlAfterCompletionDays')
-              ? _json['ttlAfterCompletionDays'] as core.int
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (config != null) 'config': config!,
-        if (createTime != null) 'createTime': createTime!,
-        if (endTime != null) 'endTime': endTime!,
-        if (failureDetails != null) 'failureDetails': failureDetails!,
-        if (failureReason != null) 'failureReason': failureReason!,
-        if (inputUri != null) 'inputUri': inputUri!,
-        if (name != null) 'name': name!,
-        if (originUri != null) 'originUri': originUri!,
-        if (outputUri != null) 'outputUri': outputUri!,
-        if (priority != null) 'priority': priority!,
-        if (progress != null) 'progress': progress!,
-        if (startTime != null) 'startTime': startTime!,
-        if (state != null) 'state': state!,
-        if (templateId != null) 'templateId': templateId!,
-        if (ttlAfterCompletionDays != null)
-          'ttlAfterCompletionDays': ttlAfterCompletionDays!,
-      };
-}
-
-/// Job configuration
-class JobConfig {
-  /// List of ad breaks.
-  ///
-  /// Specifies where to insert ad break tags in the output manifests.
-  core.List<AdBreak>? adBreaks;
-
-  /// List of `Edit atom`s.
-  ///
-  /// Defines the ultimate timeline of the resulting file or manifest.
-  core.List<EditAtom>? editList;
-
-  /// List of elementary streams.
-  core.List<ElementaryStream>? elementaryStreams;
-
-  /// List of input assets stored in Cloud Storage.
-  core.List<Input>? inputs;
-
-  /// List of output manifests.
-  core.List<Manifest>? manifests;
-
-  /// List of multiplexing settings for output streams.
-  core.List<MuxStream>? muxStreams;
-
-  /// Output configuration.
-  Output? output;
-
-  /// List of overlays on the output video, in descending Z-order.
-  core.List<Overlay>? overlays;
-
-  /// Destination on Pub/Sub.
-  PubsubDestination? pubsubDestination;
-
-  /// List of output sprite sheets.
-  core.List<SpriteSheet>? spriteSheets;
-
-  JobConfig({
-    this.adBreaks,
-    this.editList,
-    this.elementaryStreams,
-    this.inputs,
-    this.manifests,
-    this.muxStreams,
-    this.output,
-    this.overlays,
-    this.pubsubDestination,
-    this.spriteSheets,
-  });
-
-  JobConfig.fromJson(core.Map _json)
-      : this(
-          adBreaks: _json.containsKey('adBreaks')
-              ? (_json['adBreaks'] as core.List)
-                  .map((value) => AdBreak.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          editList: _json.containsKey('editList')
-              ? (_json['editList'] as core.List)
-                  .map((value) => EditAtom.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          elementaryStreams: _json.containsKey('elementaryStreams')
-              ? (_json['elementaryStreams'] as core.List)
-                  .map((value) => ElementaryStream.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          inputs: _json.containsKey('inputs')
-              ? (_json['inputs'] as core.List)
-                  .map((value) => Input.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          manifests: _json.containsKey('manifests')
-              ? (_json['manifests'] as core.List)
-                  .map((value) => Manifest.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          muxStreams: _json.containsKey('muxStreams')
-              ? (_json['muxStreams'] as core.List)
-                  .map((value) => MuxStream.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          output: _json.containsKey('output')
-              ? Output.fromJson(
-                  _json['output'] as core.Map<core.String, core.dynamic>)
-              : null,
-          overlays: _json.containsKey('overlays')
-              ? (_json['overlays'] as core.List)
-                  .map((value) => Overlay.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          pubsubDestination: _json.containsKey('pubsubDestination')
-              ? PubsubDestination.fromJson(_json['pubsubDestination']
-                  as core.Map<core.String, core.dynamic>)
-              : null,
-          spriteSheets: _json.containsKey('spriteSheets')
-              ? (_json['spriteSheets'] as core.List)
-                  .map((value) => SpriteSheet.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (adBreaks != null) 'adBreaks': adBreaks!,
-        if (editList != null) 'editList': editList!,
-        if (elementaryStreams != null) 'elementaryStreams': elementaryStreams!,
-        if (inputs != null) 'inputs': inputs!,
-        if (manifests != null) 'manifests': manifests!,
-        if (muxStreams != null) 'muxStreams': muxStreams!,
-        if (output != null) 'output': output!,
-        if (overlays != null) 'overlays': overlays!,
-        if (pubsubDestination != null) 'pubsubDestination': pubsubDestination!,
-        if (spriteSheets != null) 'spriteSheets': spriteSheets!,
-      };
-}
-
-/// Transcoding job template resource.
-class JobTemplate {
-  /// The configuration for this template.
-  JobConfig? config;
-
-  /// The resource name of the job template.
-  ///
-  /// Format:
-  /// `projects/{project}/locations/{location}/jobTemplates/{job_template}`
-  core.String? name;
-
-  JobTemplate({
-    this.config,
-    this.name,
-  });
-
-  JobTemplate.fromJson(core.Map _json)
-      : this(
-          config: _json.containsKey('config')
-              ? JobConfig.fromJson(
-                  _json['config'] as core.Map<core.String, core.dynamic>)
-              : null,
-          name: _json.containsKey('name') ? _json['name'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (config != null) 'config': config!,
-        if (name != null) 'name': name!,
-      };
-}
-
-/// Response message for `TranscoderService.ListJobTemplates`.
-class ListJobTemplatesResponse {
-  /// List of job templates in the specified region.
-  core.List<JobTemplate>? jobTemplates;
-
-  /// The pagination token.
-  core.String? nextPageToken;
-
-  ListJobTemplatesResponse({
-    this.jobTemplates,
-    this.nextPageToken,
-  });
-
-  ListJobTemplatesResponse.fromJson(core.Map _json)
-      : this(
-          jobTemplates: _json.containsKey('jobTemplates')
-              ? (_json['jobTemplates'] as core.List)
-                  .map((value) => JobTemplate.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          nextPageToken: _json.containsKey('nextPageToken')
-              ? _json['nextPageToken'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (jobTemplates != null) 'jobTemplates': jobTemplates!,
-        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
-      };
-}
-
-/// Response message for `TranscoderService.ListJobs`.
-class ListJobsResponse {
-  /// List of jobs in the specified region.
-  core.List<Job>? jobs;
-
-  /// The pagination token.
-  core.String? nextPageToken;
-
-  ListJobsResponse({
-    this.jobs,
-    this.nextPageToken,
-  });
-
-  ListJobsResponse.fromJson(core.Map _json)
-      : this(
-          jobs: _json.containsKey('jobs')
-              ? (_json['jobs'] as core.List)
-                  .map((value) => Job.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          nextPageToken: _json.containsKey('nextPageToken')
-              ? _json['nextPageToken'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (jobs != null) 'jobs': jobs!,
-        if (nextPageToken != null) 'nextPageToken': nextPageToken!,
-      };
-}
-
-/// Manifest configuration.
-class Manifest {
-  /// The name of the generated file.
-  ///
-  /// The default is `"manifest"` with the extension suffix corresponding to the
-  /// `Manifest.type`.
-  core.String? fileName;
-
-  /// List of user given `MuxStream.key`s that should appear in this manifest.
-  ///
-  /// When `Manifest.type` is `HLS`, a media manifest with name `MuxStream.key`
-  /// and `.m3u8` extension is generated for each element of the
-  /// `Manifest.mux_streams`.
-  ///
-  /// Required.
-  core.List<core.String>? muxStreams;
-
-  /// Type of the manifest, can be "HLS" or "DASH".
-  ///
-  /// Required.
-  /// Possible string values are:
-  /// - "MANIFEST_TYPE_UNSPECIFIED" : The manifest type is not specified.
-  /// - "HLS" : Create `"HLS"` manifest. The corresponding file extension is
-  /// `".m3u8"`.
-  /// - "DASH" : Create `"DASH"` manifest. The corresponding file extension is
-  /// `".mpd"`.
-  core.String? type;
-
-  Manifest({
-    this.fileName,
-    this.muxStreams,
-    this.type,
-  });
-
-  Manifest.fromJson(core.Map _json)
-      : this(
-          fileName: _json.containsKey('fileName')
-              ? _json['fileName'] as core.String
-              : null,
-          muxStreams: _json.containsKey('muxStreams')
-              ? (_json['muxStreams'] as core.List)
-                  .map((value) => value as core.String)
-                  .toList()
-              : null,
-          type: _json.containsKey('type') ? _json['type'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (fileName != null) 'fileName': fileName!,
-        if (muxStreams != null) 'muxStreams': muxStreams!,
-        if (type != null) 'type': type!,
-      };
-}
-
-/// Configuration for MPEG Common Encryption (MPEG-CENC).
-class MpegCommonEncryption {
-  /// 128 bit Key ID represented as lowercase hexadecimal digits for use with
-  /// common encryption.
-  ///
-  /// Required.
-  core.String? keyId;
-
-  /// Specify the encryption scheme.
-  ///
-  /// Supported encryption schemes: - 'cenc' - 'cbcs'
-  ///
-  /// Required.
-  core.String? scheme;
-
-  MpegCommonEncryption({
-    this.keyId,
-    this.scheme,
-  });
-
-  MpegCommonEncryption.fromJson(core.Map _json)
-      : this(
-          keyId:
-              _json.containsKey('keyId') ? _json['keyId'] as core.String : null,
-          scheme: _json.containsKey('scheme')
-              ? _json['scheme'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (keyId != null) 'keyId': keyId!,
-        if (scheme != null) 'scheme': scheme!,
-      };
-}
-
-/// Multiplexing settings for output stream.
-class MuxStream {
-  /// The container format.
-  ///
-  /// The default is `"mp4"` Supported container formats: - 'ts' - 'fmp4'- the
-  /// corresponding file extension is `".m4s"` - 'mp4' - 'vtt'
-  core.String? container;
-
-  /// List of `ElementaryStream.key`s multiplexed in this stream.
-  core.List<core.String>? elementaryStreams;
-
-  /// Encryption settings.
-  Encryption? encryption;
-
-  /// The name of the generated file.
-  ///
-  /// The default is `MuxStream.key` with the extension suffix corresponding to
-  /// the `MuxStream.container`. Individual segments also have an incremental
-  /// 10-digit zero-padded suffix starting from 0 before the extension, such as
-  /// `"mux_stream0000000123.ts"`.
-  core.String? fileName;
-
-  /// A unique key for this multiplexed stream.
-  ///
-  /// HLS media manifests will be named `MuxStream.key` with the `".m3u8"`
-  /// extension suffix.
-  core.String? key;
-
-  /// Segment settings for `"ts"`, `"fmp4"` and `"vtt"`.
-  SegmentSettings? segmentSettings;
-
-  MuxStream({
-    this.container,
-    this.elementaryStreams,
-    this.encryption,
-    this.fileName,
-    this.key,
-    this.segmentSettings,
-  });
-
-  MuxStream.fromJson(core.Map _json)
-      : this(
-          container: _json.containsKey('container')
-              ? _json['container'] as core.String
-              : null,
-          elementaryStreams: _json.containsKey('elementaryStreams')
-              ? (_json['elementaryStreams'] as core.List)
-                  .map((value) => value as core.String)
-                  .toList()
-              : null,
-          encryption: _json.containsKey('encryption')
-              ? Encryption.fromJson(
-                  _json['encryption'] as core.Map<core.String, core.dynamic>)
-              : null,
-          fileName: _json.containsKey('fileName')
-              ? _json['fileName'] as core.String
-              : null,
-          key: _json.containsKey('key') ? _json['key'] as core.String : null,
-          segmentSettings: _json.containsKey('segmentSettings')
-              ? SegmentSettings.fromJson(_json['segmentSettings']
-                  as core.Map<core.String, core.dynamic>)
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (container != null) 'container': container!,
-        if (elementaryStreams != null) 'elementaryStreams': elementaryStreams!,
-        if (encryption != null) 'encryption': encryption!,
-        if (fileName != null) 'fileName': fileName!,
-        if (key != null) 'key': key!,
-        if (segmentSettings != null) 'segmentSettings': segmentSettings!,
-      };
-}
-
-/// 2D normalized coordinates.
-///
-/// Default: `{0.0, 0.0}`
-class NormalizedCoordinate {
-  /// Normalized x coordinate.
-  core.double? x;
-
-  /// Normalized y coordinate.
-  core.double? y;
-
-  NormalizedCoordinate({
-    this.x,
-    this.y,
-  });
-
-  NormalizedCoordinate.fromJson(core.Map _json)
-      : this(
-          x: _json.containsKey('x')
-              ? (_json['x'] as core.num).toDouble()
-              : null,
-          y: _json.containsKey('y')
-              ? (_json['y'] as core.num).toDouble()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (x != null) 'x': x!,
-        if (y != null) 'y': y!,
-      };
-}
-
-/// The origin URI.
-class OriginUri {
-  /// Dash manifest URI.
-  ///
-  /// If multiple Dash manifests are created, only the first one is listed.
-  core.String? dash;
-
-  /// HLS manifest URI per https://tools.ietf.org/html/rfc8216#section-4.3.4.
-  ///
-  /// If multiple HLS manifests are created, only the first one is listed.
-  core.String? hls;
-
-  OriginUri({
-    this.dash,
-    this.hls,
-  });
-
-  OriginUri.fromJson(core.Map _json)
-      : this(
-          dash: _json.containsKey('dash') ? _json['dash'] as core.String : null,
-          hls: _json.containsKey('hls') ? _json['hls'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (dash != null) 'dash': dash!,
-        if (hls != null) 'hls': hls!,
-      };
-}
-
-/// Location of output file(s) in a Cloud Storage bucket.
-class Output {
-  /// URI for the output file(s).
-  ///
-  /// For example, `gs://my-bucket/outputs/`. If empty the value is populated
-  /// from `Job.output_uri`.
-  core.String? uri;
-
-  Output({
-    this.uri,
-  });
-
-  Output.fromJson(core.Map _json)
-      : this(
-          uri: _json.containsKey('uri') ? _json['uri'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (uri != null) 'uri': uri!,
-      };
-}
-
-/// Overlay configuration.
-class Overlay {
-  /// List of Animations.
-  ///
-  /// The list should be chronological, without any time overlap.
-  core.List<Animation>? animations;
-
-  /// Image overlay.
-  Image? image;
-
-  Overlay({
-    this.animations,
-    this.image,
-  });
-
-  Overlay.fromJson(core.Map _json)
-      : this(
-          animations: _json.containsKey('animations')
-              ? (_json['animations'] as core.List)
-                  .map((value) => Animation.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          image: _json.containsKey('image')
-              ? Image.fromJson(
-                  _json['image'] as core.Map<core.String, core.dynamic>)
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (animations != null) 'animations': animations!,
-        if (image != null) 'image': image!,
-      };
-}
-
-/// Pad filter configuration for the input video.
-///
-/// The padded input video is scaled after padding with black to match the
-/// output resolution.
-class Pad {
-  /// The number of pixels to add to the bottom.
-  ///
-  /// The default is 0.
-  core.int? bottomPixels;
-
-  /// The number of pixels to add to the left.
-  ///
-  /// The default is 0.
-  core.int? leftPixels;
-
-  /// The number of pixels to add to the right.
-  ///
-  /// The default is 0.
-  core.int? rightPixels;
-
-  /// The number of pixels to add to the top.
-  ///
-  /// The default is 0.
-  core.int? topPixels;
-
-  Pad({
-    this.bottomPixels,
-    this.leftPixels,
-    this.rightPixels,
-    this.topPixels,
-  });
-
-  Pad.fromJson(core.Map _json)
-      : this(
-          bottomPixels: _json.containsKey('bottomPixels')
-              ? _json['bottomPixels'] as core.int
-              : null,
-          leftPixels: _json.containsKey('leftPixels')
-              ? _json['leftPixels'] as core.int
-              : null,
-          rightPixels: _json.containsKey('rightPixels')
-              ? _json['rightPixels'] as core.int
-              : null,
-          topPixels: _json.containsKey('topPixels')
-              ? _json['topPixels'] as core.int
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (bottomPixels != null) 'bottomPixels': bottomPixels!,
-        if (leftPixels != null) 'leftPixels': leftPixels!,
-        if (rightPixels != null) 'rightPixels': rightPixels!,
-        if (topPixels != null) 'topPixels': topPixels!,
-      };
-}
-
-/// Preprocessing configurations.
-class PreprocessingConfig {
-  /// Audio preprocessing configuration.
-  Audio? audio;
-
-  /// Color preprocessing configuration.
-  Color? color;
-
-  /// Specify the video cropping configuration.
-  Crop? crop;
-
-  /// Deblock preprocessing configuration.
-  Deblock? deblock;
-
-  /// Denoise preprocessing configuration.
-  Denoise? denoise;
-
-  /// Specify the video pad filter configuration.
-  Pad? pad;
-
-  PreprocessingConfig({
-    this.audio,
-    this.color,
-    this.crop,
-    this.deblock,
-    this.denoise,
-    this.pad,
-  });
-
-  PreprocessingConfig.fromJson(core.Map _json)
-      : this(
-          audio: _json.containsKey('audio')
-              ? Audio.fromJson(
-                  _json['audio'] as core.Map<core.String, core.dynamic>)
-              : null,
-          color: _json.containsKey('color')
-              ? Color.fromJson(
-                  _json['color'] as core.Map<core.String, core.dynamic>)
-              : null,
-          crop: _json.containsKey('crop')
-              ? Crop.fromJson(
-                  _json['crop'] as core.Map<core.String, core.dynamic>)
-              : null,
-          deblock: _json.containsKey('deblock')
-              ? Deblock.fromJson(
-                  _json['deblock'] as core.Map<core.String, core.dynamic>)
-              : null,
-          denoise: _json.containsKey('denoise')
-              ? Denoise.fromJson(
-                  _json['denoise'] as core.Map<core.String, core.dynamic>)
-              : null,
-          pad: _json.containsKey('pad')
-              ? Pad.fromJson(
-                  _json['pad'] as core.Map<core.String, core.dynamic>)
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (audio != null) 'audio': audio!,
-        if (color != null) 'color': color!,
-        if (crop != null) 'crop': crop!,
-        if (deblock != null) 'deblock': deblock!,
-        if (denoise != null) 'denoise': denoise!,
-        if (pad != null) 'pad': pad!,
-      };
-}
-
-/// Estimated fractional progress for each step, from `0` to `1`.
-class Progress {
-  /// Estimated fractional progress for `analyzing` step.
-  core.double? analyzed;
-
-  /// Estimated fractional progress for `encoding` step.
-  core.double? encoded;
-
-  /// Estimated fractional progress for `notifying` step.
-  core.double? notified;
-
-  /// Estimated fractional progress for `uploading` step.
-  core.double? uploaded;
-
-  Progress({
-    this.analyzed,
-    this.encoded,
-    this.notified,
-    this.uploaded,
-  });
-
-  Progress.fromJson(core.Map _json)
-      : this(
-          analyzed: _json.containsKey('analyzed')
-              ? (_json['analyzed'] as core.num).toDouble()
-              : null,
-          encoded: _json.containsKey('encoded')
-              ? (_json['encoded'] as core.num).toDouble()
-              : null,
-          notified: _json.containsKey('notified')
-              ? (_json['notified'] as core.num).toDouble()
-              : null,
-          uploaded: _json.containsKey('uploaded')
-              ? (_json['uploaded'] as core.num).toDouble()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (analyzed != null) 'analyzed': analyzed!,
-        if (encoded != null) 'encoded': encoded!,
-        if (notified != null) 'notified': notified!,
-        if (uploaded != null) 'uploaded': uploaded!,
-      };
-}
-
-/// A Pub/Sub destination.
-class PubsubDestination {
-  /// The name of the Pub/Sub topic to publish job completion notification to.
-  ///
-  /// For example: `projects/{project}/topics/{topic}`.
-  core.String? topic;
-
-  PubsubDestination({
-    this.topic,
-  });
-
-  PubsubDestination.fromJson(core.Map _json)
-      : this(
-          topic:
-              _json.containsKey('topic') ? _json['topic'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (topic != null) 'topic': topic!,
-      };
-}
-
-/// Configuration for SAMPLE-AES encryption.
-typedef SampleAesEncryption = $Encryption;
-
-/// Segment settings for `"ts"`, `"fmp4"` and `"vtt"`.
-class SegmentSettings {
-  /// Create an individual segment file.
-  ///
-  /// The default is `false`.
-  ///
-  /// Required.
-  core.bool? individualSegments;
-
-  /// Duration of the segments in seconds.
-  ///
-  /// The default is `"6.0s"`. Note that `segmentDuration` must be greater than
-  /// or equal to \[`gopDuration`\](#videostream), and `segmentDuration` must be
-  /// divisible by \[`gopDuration`\](#videostream).
-  core.String? segmentDuration;
-
-  SegmentSettings({
-    this.individualSegments,
-    this.segmentDuration,
-  });
-
-  SegmentSettings.fromJson(core.Map _json)
-      : this(
-          individualSegments: _json.containsKey('individualSegments')
-              ? _json['individualSegments'] as core.bool
-              : null,
-          segmentDuration: _json.containsKey('segmentDuration')
-              ? _json['segmentDuration'] as core.String
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (individualSegments != null)
-          'individualSegments': individualSegments!,
-        if (segmentDuration != null) 'segmentDuration': segmentDuration!,
-      };
-}
-
-/// Sprite sheet configuration.
-class SpriteSheet {
-  /// The maximum number of sprites per row in a sprite sheet.
-  ///
-  /// The default is 0, which indicates no maximum limit.
-  core.int? columnCount;
-
-  /// End time in seconds, relative to the output file timeline.
-  ///
-  /// When `end_time_offset` is not specified, the sprites are generated until
-  /// the end of the output file.
-  core.String? endTimeOffset;
-
-  /// File name prefix for the generated sprite sheets.
-  ///
-  /// Each sprite sheet has an incremental 10-digit zero-padded suffix starting
-  /// from 0 before the extension, such as `"sprite_sheet0000000123.jpeg"`.
-  ///
-  /// Required.
-  core.String? filePrefix;
-
-  /// Format type.
-  ///
-  /// The default is `"jpeg"`. Supported formats: - 'jpeg'
-  core.String? format;
-
-  /// Starting from `0s`, create sprites at regular intervals.
-  ///
-  /// Specify the interval value in seconds.
-  core.String? interval;
-
-  /// The quality of the generated sprite sheet.
-  ///
-  /// Enter a value between 1 and 100, where 1 is the lowest quality and 100 is
-  /// the highest quality. The default is 100. A high quality value corresponds
-  /// to a low image data compression ratio.
-  core.int? quality;
-
-  /// The maximum number of rows per sprite sheet.
-  ///
-  /// When the sprite sheet is full, a new sprite sheet is created. The default
-  /// is 0, which indicates no maximum limit.
-  core.int? rowCount;
-
-  /// The height of sprite in pixels.
-  ///
-  /// Must be an even integer. To preserve the source aspect ratio, set the
-  /// SpriteSheet.sprite_height_pixels field or the
-  /// SpriteSheet.sprite_width_pixels field, but not both (the API will
-  /// automatically calculate the missing field).
-  ///
-  /// Required.
-  core.int? spriteHeightPixels;
-
-  /// The width of sprite in pixels.
-  ///
-  /// Must be an even integer. To preserve the source aspect ratio, set the
-  /// SpriteSheet.sprite_width_pixels field or the
-  /// SpriteSheet.sprite_height_pixels field, but not both (the API will
-  /// automatically calculate the missing field).
-  ///
-  /// Required.
-  core.int? spriteWidthPixels;
-
-  /// Start time in seconds, relative to the output file timeline.
-  ///
-  /// Determines the first sprite to pick. The default is `0s`.
-  core.String? startTimeOffset;
-
-  /// Total number of sprites.
-  ///
-  /// Create the specified number of sprites distributed evenly across the
-  /// timeline of the output media. The default is 100.
-  core.int? totalCount;
-
-  SpriteSheet({
-    this.columnCount,
-    this.endTimeOffset,
-    this.filePrefix,
-    this.format,
-    this.interval,
-    this.quality,
-    this.rowCount,
-    this.spriteHeightPixels,
-    this.spriteWidthPixels,
-    this.startTimeOffset,
-    this.totalCount,
-  });
-
-  SpriteSheet.fromJson(core.Map _json)
-      : this(
-          columnCount: _json.containsKey('columnCount')
-              ? _json['columnCount'] as core.int
-              : null,
-          endTimeOffset: _json.containsKey('endTimeOffset')
-              ? _json['endTimeOffset'] as core.String
-              : null,
-          filePrefix: _json.containsKey('filePrefix')
-              ? _json['filePrefix'] as core.String
-              : null,
-          format: _json.containsKey('format')
-              ? _json['format'] as core.String
-              : null,
-          interval: _json.containsKey('interval')
-              ? _json['interval'] as core.String
-              : null,
-          quality: _json.containsKey('quality')
-              ? _json['quality'] as core.int
-              : null,
-          rowCount: _json.containsKey('rowCount')
-              ? _json['rowCount'] as core.int
-              : null,
-          spriteHeightPixels: _json.containsKey('spriteHeightPixels')
-              ? _json['spriteHeightPixels'] as core.int
-              : null,
-          spriteWidthPixels: _json.containsKey('spriteWidthPixels')
-              ? _json['spriteWidthPixels'] as core.int
-              : null,
-          startTimeOffset: _json.containsKey('startTimeOffset')
-              ? _json['startTimeOffset'] as core.String
-              : null,
-          totalCount: _json.containsKey('totalCount')
-              ? _json['totalCount'] as core.int
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (columnCount != null) 'columnCount': columnCount!,
-        if (endTimeOffset != null) 'endTimeOffset': endTimeOffset!,
-        if (filePrefix != null) 'filePrefix': filePrefix!,
-        if (format != null) 'format': format!,
-        if (interval != null) 'interval': interval!,
-        if (quality != null) 'quality': quality!,
-        if (rowCount != null) 'rowCount': rowCount!,
-        if (spriteHeightPixels != null)
-          'spriteHeightPixels': spriteHeightPixels!,
-        if (spriteWidthPixels != null) 'spriteWidthPixels': spriteWidthPixels!,
-        if (startTimeOffset != null) 'startTimeOffset': startTimeOffset!,
-        if (totalCount != null) 'totalCount': totalCount!,
-      };
-}
-
-/// The mapping for the `Job.edit_list` atoms with text `EditAtom.inputs`.
-class TextAtom {
-  /// List of `Job.inputs` that should be embedded in this atom.
-  ///
-  /// Only one input is supported.
-  core.List<TextInput>? inputs;
-
-  /// The `EditAtom.key` that references atom with text inputs in the
-  /// `Job.edit_list`.
-  ///
-  /// Required.
-  core.String? key;
-
-  TextAtom({
-    this.inputs,
-    this.key,
-  });
-
-  TextAtom.fromJson(core.Map _json)
-      : this(
-          inputs: _json.containsKey('inputs')
-              ? (_json['inputs'] as core.List)
-                  .map((value) => TextInput.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-          key: _json.containsKey('key') ? _json['key'] as core.String : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (inputs != null) 'inputs': inputs!,
-        if (key != null) 'key': key!,
-      };
-}
-
-/// Identifies which input file and track should be used.
-class TextInput {
-  /// The `Input.key` that identifies the input file.
-  ///
-  /// Required.
-  core.String? key;
-
-  /// The zero-based index of the track in the input file.
-  ///
-  /// Required.
-  core.int? track;
-
-  TextInput({
-    this.key,
-    this.track,
-  });
-
-  TextInput.fromJson(core.Map _json)
-      : this(
-          key: _json.containsKey('key') ? _json['key'] as core.String : null,
-          track: _json.containsKey('track') ? _json['track'] as core.int : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (key != null) 'key': key!,
-        if (track != null) 'track': track!,
-      };
-}
-
-/// Encoding of a text stream.
-///
-/// For example, closed captions or subtitles.
-class TextStream {
-  /// The codec for this text stream.
-  ///
-  /// The default is `"webvtt"`. Supported text codecs: - 'srt' - 'ttml' -
-  /// 'cea608' - 'cea708' - 'webvtt'
-  core.String? codec;
-
-  /// The BCP-47 language code, such as `"en-US"` or `"sr-Latn"`.
-  ///
-  /// For more information, see
-  /// https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
-  ///
-  /// Required.
-  core.String? languageCode;
-
-  /// The mapping for the `Job.edit_list` atoms with text `EditAtom.inputs`.
-  core.List<TextAtom>? mapping;
-
-  TextStream({
-    this.codec,
-    this.languageCode,
-    this.mapping,
-  });
-
-  TextStream.fromJson(core.Map _json)
-      : this(
-          codec:
-              _json.containsKey('codec') ? _json['codec'] as core.String : null,
-          languageCode: _json.containsKey('languageCode')
-              ? _json['languageCode'] as core.String
-              : null,
-          mapping: _json.containsKey('mapping')
-              ? (_json['mapping'] as core.List)
-                  .map((value) => TextAtom.fromJson(
-                      value as core.Map<core.String, core.dynamic>))
-                  .toList()
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (codec != null) 'codec': codec!,
-        if (languageCode != null) 'languageCode': languageCode!,
-        if (mapping != null) 'mapping': mapping!,
-      };
-}
-
-/// Video stream resource.
-class VideoStream {
-  /// Specifies whether an open Group of Pictures (GOP) structure should be
-  /// allowed or not.
-  ///
-  /// The default is `false`.
-  core.bool? allowOpenGop;
-
-  /// Specify the intensity of the adaptive quantizer (AQ).
-  ///
-  /// Must be between 0 and 1, where 0 disables the quantizer and 1 maximizes
-  /// the quantizer. A higher value equals a lower bitrate but smoother image.
-  /// The default is 0.
-  core.double? aqStrength;
-
-  /// The number of consecutive B-frames.
-  ///
-  /// Must be greater than or equal to zero. Must be less than
-  /// `VideoStream.gop_frame_count` if set. The default is 0.
-  core.int? bFrameCount;
-
-  /// Allow B-pyramid for reference frame selection.
-  ///
-  /// This may not be supported on all decoders. The default is `false`.
-  core.bool? bPyramid;
-
-  /// The video bitrate in bits per second.
-  ///
-  /// The minimum value is 1,000. The maximum value for H264/H265 is
-  /// 800,000,000. The maximum value for VP9 is 480,000,000.
-  ///
-  /// Required.
-  core.int? bitrateBps;
-
-  /// Codec type.
-  ///
-  /// The following codecs are supported: * `h264` (default) * `h265` * `vp9`
-  core.String? codec;
-
-  /// Target CRF level.
-  ///
-  /// Must be between 10 and 36, where 10 is the highest quality and 36 is the
-  /// most efficient compression. The default is 21.
-  core.int? crfLevel;
-
-  /// Use two-pass encoding strategy to achieve better video quality.
-  ///
-  /// `VideoStream.rate_control_mode` must be `"vbr"`. The default is `false`.
-  core.bool? enableTwoPass;
-
-  /// The entropy coder to use.
-  ///
-  /// The default is `"cabac"`. Supported entropy coders: - 'cavlc' - 'cabac'
-  core.String? entropyCoder;
-
-  /// The target video frame rate in frames per second (FPS).
-  ///
-  /// Must be less than or equal to 120. Will default to the input frame rate if
-  /// larger than the input frame rate. The API will generate an output FPS that
-  /// is divisible by the input FPS, and smaller or equal to the target FPS. See
-  /// [Calculate frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate)
-  /// for more information.
-  ///
-  /// Required.
-  core.double? frameRate;
-
-  /// Select the GOP size based on the specified duration.
-  ///
-  /// The default is `"3s"`. Note that `gopDuration` must be less than or equal
-  /// to \[`segmentDuration`\](#SegmentSettings), and
-  /// \[`segmentDuration`\](#SegmentSettings) must be divisible by
-  /// `gopDuration`.
-  core.String? gopDuration;
-
-  /// Select the GOP size based on the specified frame count.
-  ///
-  /// Must be greater than zero.
-  core.int? gopFrameCount;
-
-  /// The height of the video in pixels.
-  ///
-  /// Must be an even integer. When not specified, the height is adjusted to
-  /// match the specified width and input aspect ratio. If both are omitted, the
-  /// input height is used.
-  core.int? heightPixels;
-
-  /// Pixel format to use.
-  ///
-  /// The default is `"yuv420p"`. Supported pixel formats: - 'yuv420p' pixel
-  /// format. - 'yuv422p' pixel format. - 'yuv444p' pixel format. - 'yuv420p10'
-  /// 10-bit HDR pixel format. - 'yuv422p10' 10-bit HDR pixel format. -
-  /// 'yuv444p10' 10-bit HDR pixel format. - 'yuv420p12' 12-bit HDR pixel
-  /// format. - 'yuv422p12' 12-bit HDR pixel format. - 'yuv444p12' 12-bit HDR
-  /// pixel format.
-  core.String? pixelFormat;
-
-  /// Enforces the specified codec preset.
-  ///
-  /// The default is `veryfast`. The available options are FFmpeg-compatible.
-  /// Note that certain values for this field may cause the transcoder to
-  /// override other fields you set in the `VideoStream` message.
-  core.String? preset;
-
-  /// Enforces the specified codec profile.
-  ///
-  /// The following profiles are supported: * `baseline` * `main` * `high`
-  /// (default) The available options are FFmpeg-compatible. Note that certain
-  /// values for this field may cause the transcoder to override other fields
-  /// you set in the `VideoStream` message.
-  core.String? profile;
-
-  /// Specify the `rate_control_mode`.
-  ///
-  /// The default is `"vbr"`. Supported rate control modes: - 'vbr' - variable
-  /// bitrate - 'crf' - constant rate factor
-  core.String? rateControlMode;
-
-  /// Enforces the specified codec tune.
-  ///
-  /// The available options are FFmpeg-compatible. Note that certain values for
-  /// this field may cause the transcoder to override other fields you set in
-  /// the `VideoStream` message.
-  core.String? tune;
-
-  /// Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
-  ///
-  /// Must be greater than zero. The default is equal to 90% of
-  /// `VideoStream.vbv_size_bits`.
-  core.int? vbvFullnessBits;
-
-  /// Size of the Video Buffering Verifier (VBV) buffer in bits.
-  ///
-  /// Must be greater than zero. The default is equal to
-  /// `VideoStream.bitrate_bps`.
-  core.int? vbvSizeBits;
-
-  /// The width of the video in pixels.
-  ///
-  /// Must be an even integer. When not specified, the width is adjusted to
-  /// match the specified height and input aspect ratio. If both are omitted,
-  /// the input width is used.
-  core.int? widthPixels;
-
-  VideoStream({
-    this.allowOpenGop,
-    this.aqStrength,
-    this.bFrameCount,
-    this.bPyramid,
-    this.bitrateBps,
-    this.codec,
-    this.crfLevel,
-    this.enableTwoPass,
-    this.entropyCoder,
-    this.frameRate,
-    this.gopDuration,
-    this.gopFrameCount,
-    this.heightPixels,
-    this.pixelFormat,
-    this.preset,
-    this.profile,
-    this.rateControlMode,
-    this.tune,
-    this.vbvFullnessBits,
-    this.vbvSizeBits,
-    this.widthPixels,
-  });
-
-  VideoStream.fromJson(core.Map _json)
-      : this(
-          allowOpenGop: _json.containsKey('allowOpenGop')
-              ? _json['allowOpenGop'] as core.bool
-              : null,
-          aqStrength: _json.containsKey('aqStrength')
-              ? (_json['aqStrength'] as core.num).toDouble()
-              : null,
-          bFrameCount: _json.containsKey('bFrameCount')
-              ? _json['bFrameCount'] as core.int
-              : null,
-          bPyramid: _json.containsKey('bPyramid')
-              ? _json['bPyramid'] as core.bool
-              : null,
-          bitrateBps: _json.containsKey('bitrateBps')
-              ? _json['bitrateBps'] as core.int
-              : null,
-          codec:
-              _json.containsKey('codec') ? _json['codec'] as core.String : null,
-          crfLevel: _json.containsKey('crfLevel')
-              ? _json['crfLevel'] as core.int
-              : null,
-          enableTwoPass: _json.containsKey('enableTwoPass')
-              ? _json['enableTwoPass'] as core.bool
-              : null,
-          entropyCoder: _json.containsKey('entropyCoder')
-              ? _json['entropyCoder'] as core.String
-              : null,
-          frameRate: _json.containsKey('frameRate')
-              ? (_json['frameRate'] as core.num).toDouble()
-              : null,
-          gopDuration: _json.containsKey('gopDuration')
-              ? _json['gopDuration'] as core.String
-              : null,
-          gopFrameCount: _json.containsKey('gopFrameCount')
-              ? _json['gopFrameCount'] as core.int
-              : null,
-          heightPixels: _json.containsKey('heightPixels')
-              ? _json['heightPixels'] as core.int
-              : null,
-          pixelFormat: _json.containsKey('pixelFormat')
-              ? _json['pixelFormat'] as core.String
-              : null,
-          preset: _json.containsKey('preset')
-              ? _json['preset'] as core.String
-              : null,
-          profile: _json.containsKey('profile')
-              ? _json['profile'] as core.String
-              : null,
-          rateControlMode: _json.containsKey('rateControlMode')
-              ? _json['rateControlMode'] as core.String
-              : null,
-          tune: _json.containsKey('tune') ? _json['tune'] as core.String : null,
-          vbvFullnessBits: _json.containsKey('vbvFullnessBits')
-              ? _json['vbvFullnessBits'] as core.int
-              : null,
-          vbvSizeBits: _json.containsKey('vbvSizeBits')
-              ? _json['vbvSizeBits'] as core.int
-              : null,
-          widthPixels: _json.containsKey('widthPixels')
-              ? _json['widthPixels'] as core.int
-              : null,
-        );
-
-  core.Map<core.String, core.dynamic> toJson() => {
-        if (allowOpenGop != null) 'allowOpenGop': allowOpenGop!,
-        if (aqStrength != null) 'aqStrength': aqStrength!,
-        if (bFrameCount != null) 'bFrameCount': bFrameCount!,
-        if (bPyramid != null) 'bPyramid': bPyramid!,
-        if (bitrateBps != null) 'bitrateBps': bitrateBps!,
-        if (codec != null) 'codec': codec!,
-        if (crfLevel != null) 'crfLevel': crfLevel!,
-        if (enableTwoPass != null) 'enableTwoPass': enableTwoPass!,
-        if (entropyCoder != null) 'entropyCoder': entropyCoder!,
-        if (frameRate != null) 'frameRate': frameRate!,
-        if (gopDuration != null) 'gopDuration': gopDuration!,
-        if (gopFrameCount != null) 'gopFrameCount': gopFrameCount!,
-        if (heightPixels != null) 'heightPixels': heightPixels!,
-        if (pixelFormat != null) 'pixelFormat': pixelFormat!,
-        if (preset != null) 'preset': preset!,
-        if (profile != null) 'profile': profile!,
-        if (rateControlMode != null) 'rateControlMode': rateControlMode!,
-        if (tune != null) 'tune': tune!,
-        if (vbvFullnessBits != null) 'vbvFullnessBits': vbvFullnessBits!,
-        if (vbvSizeBits != null) 'vbvSizeBits': vbvSizeBits!,
-        if (widthPixels != null) 'widthPixels': widthPixels!,
-      };
-}
diff --git a/generated/googleapis_beta/pubspec.yaml b/generated/googleapis_beta/pubspec.yaml
index 917b29d..1afd6cd 100644
--- a/generated/googleapis_beta/pubspec.yaml
+++ b/generated/googleapis_beta/pubspec.yaml
@@ -1,5 +1,5 @@
 name: googleapis_beta
-version: 8.0.0-dev
+version: 8.0.0
 description: Auto-generated client libraries for accessing Google APIs described through the API discovery service.
 repository: https://github.com/google/googleapis.dart/tree/master/generated/googleapis_beta
 environment:
diff --git a/generated/googleapis_beta/test/analyticsadmin/v1alpha_test.dart b/generated/googleapis_beta/test/analyticsadmin/v1alpha_test.dart
index 4529446..92efb95 100644
--- a/generated/googleapis_beta/test/analyticsadmin/v1alpha_test.dart
+++ b/generated/googleapis_beta/test/analyticsadmin/v1alpha_test.dart
@@ -6499,6 +6499,61 @@
           response as api.GoogleAnalyticsAdminV1alphaDataStream);
     });
 
+    unittest.test('method--getGlobalSiteTag', () async {
+      final mock = HttpServerMock();
+      final res = api.GoogleAnalyticsAdminApi(mock).properties.dataStreams;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v1alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json
+            .encode(buildGoogleAnalyticsAdminV1alphaGlobalSiteTag());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.getGlobalSiteTag(arg_name, $fields: arg_$fields);
+      checkGoogleAnalyticsAdminV1alphaGlobalSiteTag(
+          response as api.GoogleAnalyticsAdminV1alphaGlobalSiteTag);
+    });
+
     unittest.test('method--list', () async {
       final mock = HttpServerMock();
       final res = api.GoogleAnalyticsAdminApi(mock).properties.dataStreams;
@@ -9093,61 +9148,6 @@
           response as api.GoogleAnalyticsAdminV1alphaWebDataStream);
     });
 
-    unittest.test('method--getGlobalSiteTag', () async {
-      final mock = HttpServerMock();
-      final res = api.GoogleAnalyticsAdminApi(mock).properties.webDataStreams;
-      final arg_name = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 8),
-          unittest.equals('v1alpha/'),
-        );
-        pathOffset += 8;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json
-            .encode(buildGoogleAnalyticsAdminV1alphaGlobalSiteTag());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response =
-          await res.getGlobalSiteTag(arg_name, $fields: arg_$fields);
-      checkGoogleAnalyticsAdminV1alphaGlobalSiteTag(
-          response as api.GoogleAnalyticsAdminV1alphaGlobalSiteTag);
-    });
-
     unittest.test('method--list', () async {
       final mock = HttpServerMock();
       final res = api.GoogleAnalyticsAdminApi(mock).properties.webDataStreams;
diff --git a/generated/googleapis_beta/test/cloudfunctions/v2beta_test.dart b/generated/googleapis_beta/test/cloudfunctions/v2beta_test.dart
new file mode 100644
index 0000000..3dafca3
--- /dev/null
+++ b/generated/googleapis_beta/test/cloudfunctions/v2beta_test.dart
@@ -0,0 +1,2560 @@
+// ignore_for_file: camel_case_types
+// ignore_for_file: cascade_invocations
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_const_declarations
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_final_locals
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_cast
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: unnecessary_string_interpolations
+// ignore_for_file: unused_local_variable
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:googleapis_beta/cloudfunctions/v2beta.dart' as api;
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import '../test_shared.dart';
+
+core.List<api.AuditLogConfig> buildUnnamed0() => [
+      buildAuditLogConfig(),
+      buildAuditLogConfig(),
+    ];
+
+void checkUnnamed0(core.List<api.AuditLogConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAuditLogConfig(o[0]);
+  checkAuditLogConfig(o[1]);
+}
+
+core.int buildCounterAuditConfig = 0;
+api.AuditConfig buildAuditConfig() {
+  final o = api.AuditConfig();
+  buildCounterAuditConfig++;
+  if (buildCounterAuditConfig < 3) {
+    o.auditLogConfigs = buildUnnamed0();
+    o.service = 'foo';
+  }
+  buildCounterAuditConfig--;
+  return o;
+}
+
+void checkAuditConfig(api.AuditConfig o) {
+  buildCounterAuditConfig++;
+  if (buildCounterAuditConfig < 3) {
+    checkUnnamed0(o.auditLogConfigs!);
+    unittest.expect(
+      o.service!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAuditConfig--;
+}
+
+core.List<core.String> buildUnnamed1() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed1(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterAuditLogConfig = 0;
+api.AuditLogConfig buildAuditLogConfig() {
+  final o = api.AuditLogConfig();
+  buildCounterAuditLogConfig++;
+  if (buildCounterAuditLogConfig < 3) {
+    o.exemptedMembers = buildUnnamed1();
+    o.logType = 'foo';
+  }
+  buildCounterAuditLogConfig--;
+  return o;
+}
+
+void checkAuditLogConfig(api.AuditLogConfig o) {
+  buildCounterAuditLogConfig++;
+  if (buildCounterAuditLogConfig < 3) {
+    checkUnnamed1(o.exemptedMembers!);
+    unittest.expect(
+      o.logType!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterAuditLogConfig--;
+}
+
+core.List<core.String> buildUnnamed2() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed2(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterBinding = 0;
+api.Binding buildBinding() {
+  final o = api.Binding();
+  buildCounterBinding++;
+  if (buildCounterBinding < 3) {
+    o.condition = buildExpr();
+    o.members = buildUnnamed2();
+    o.role = 'foo';
+  }
+  buildCounterBinding--;
+  return o;
+}
+
+void checkBinding(api.Binding o) {
+  buildCounterBinding++;
+  if (buildCounterBinding < 3) {
+    checkExpr(o.condition!);
+    checkUnnamed2(o.members!);
+    unittest.expect(
+      o.role!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterBinding--;
+}
+
+core.Map<core.String, core.String> buildUnnamed3() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed3(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterBuildConfig = 0;
+api.BuildConfig buildBuildConfig() {
+  final o = api.BuildConfig();
+  buildCounterBuildConfig++;
+  if (buildCounterBuildConfig < 3) {
+    o.build = 'foo';
+    o.dockerRepository = 'foo';
+    o.entryPoint = 'foo';
+    o.environmentVariables = buildUnnamed3();
+    o.runtime = 'foo';
+    o.source = buildSource();
+    o.sourceProvenance = buildSourceProvenance();
+    o.workerPool = 'foo';
+  }
+  buildCounterBuildConfig--;
+  return o;
+}
+
+void checkBuildConfig(api.BuildConfig o) {
+  buildCounterBuildConfig++;
+  if (buildCounterBuildConfig < 3) {
+    unittest.expect(
+      o.build!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.dockerRepository!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.entryPoint!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed3(o.environmentVariables!);
+    unittest.expect(
+      o.runtime!,
+      unittest.equals('foo'),
+    );
+    checkSource(o.source!);
+    checkSourceProvenance(o.sourceProvenance!);
+    unittest.expect(
+      o.workerPool!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterBuildConfig--;
+}
+
+core.int buildCounterEventFilter = 0;
+api.EventFilter buildEventFilter() {
+  final o = api.EventFilter();
+  buildCounterEventFilter++;
+  if (buildCounterEventFilter < 3) {
+    o.attribute = 'foo';
+    o.value = 'foo';
+  }
+  buildCounterEventFilter--;
+  return o;
+}
+
+void checkEventFilter(api.EventFilter o) {
+  buildCounterEventFilter++;
+  if (buildCounterEventFilter < 3) {
+    unittest.expect(
+      o.attribute!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.value!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterEventFilter--;
+}
+
+core.List<api.EventFilter> buildUnnamed4() => [
+      buildEventFilter(),
+      buildEventFilter(),
+    ];
+
+void checkUnnamed4(core.List<api.EventFilter> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkEventFilter(o[0]);
+  checkEventFilter(o[1]);
+}
+
+core.int buildCounterEventTrigger = 0;
+api.EventTrigger buildEventTrigger() {
+  final o = api.EventTrigger();
+  buildCounterEventTrigger++;
+  if (buildCounterEventTrigger < 3) {
+    o.eventFilters = buildUnnamed4();
+    o.eventType = 'foo';
+    o.pubsubTopic = 'foo';
+    o.retryPolicy = 'foo';
+    o.serviceAccountEmail = 'foo';
+    o.trigger = 'foo';
+    o.triggerRegion = 'foo';
+  }
+  buildCounterEventTrigger--;
+  return o;
+}
+
+void checkEventTrigger(api.EventTrigger o) {
+  buildCounterEventTrigger++;
+  if (buildCounterEventTrigger < 3) {
+    checkUnnamed4(o.eventFilters!);
+    unittest.expect(
+      o.eventType!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.pubsubTopic!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.retryPolicy!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.serviceAccountEmail!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.trigger!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.triggerRegion!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterEventTrigger--;
+}
+
+core.int buildCounterExpr = 0;
+api.Expr buildExpr() {
+  final o = api.Expr();
+  buildCounterExpr++;
+  if (buildCounterExpr < 3) {
+    o.description = 'foo';
+    o.expression = 'foo';
+    o.location = 'foo';
+    o.title = 'foo';
+  }
+  buildCounterExpr--;
+  return o;
+}
+
+void checkExpr(api.Expr o) {
+  buildCounterExpr++;
+  if (buildCounterExpr < 3) {
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.expression!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.location!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.title!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterExpr--;
+}
+
+core.Map<core.String, core.String> buildUnnamed5() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed5(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.List<api.GoogleCloudFunctionsV2betaStateMessage> buildUnnamed6() => [
+      buildGoogleCloudFunctionsV2betaStateMessage(),
+      buildGoogleCloudFunctionsV2betaStateMessage(),
+    ];
+
+void checkUnnamed6(core.List<api.GoogleCloudFunctionsV2betaStateMessage> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkGoogleCloudFunctionsV2betaStateMessage(o[0]);
+  checkGoogleCloudFunctionsV2betaStateMessage(o[1]);
+}
+
+core.int buildCounterFunction_ = 0;
+api.Function_ buildFunction_() {
+  final o = api.Function_();
+  buildCounterFunction_++;
+  if (buildCounterFunction_ < 3) {
+    o.buildConfig = buildBuildConfig();
+    o.description = 'foo';
+    o.environment = 'foo';
+    o.eventTrigger = buildEventTrigger();
+    o.labels = buildUnnamed5();
+    o.name = 'foo';
+    o.serviceConfig = buildServiceConfig();
+    o.state = 'foo';
+    o.stateMessages = buildUnnamed6();
+    o.updateTime = 'foo';
+  }
+  buildCounterFunction_--;
+  return o;
+}
+
+void checkFunction_(api.Function_ o) {
+  buildCounterFunction_++;
+  if (buildCounterFunction_ < 3) {
+    checkBuildConfig(o.buildConfig!);
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.environment!,
+      unittest.equals('foo'),
+    );
+    checkEventTrigger(o.eventTrigger!);
+    checkUnnamed5(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkServiceConfig(o.serviceConfig!);
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed6(o.stateMessages!);
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterFunction_--;
+}
+
+core.int buildCounterGenerateDownloadUrlRequest = 0;
+api.GenerateDownloadUrlRequest buildGenerateDownloadUrlRequest() {
+  final o = api.GenerateDownloadUrlRequest();
+  buildCounterGenerateDownloadUrlRequest++;
+  if (buildCounterGenerateDownloadUrlRequest < 3) {}
+  buildCounterGenerateDownloadUrlRequest--;
+  return o;
+}
+
+void checkGenerateDownloadUrlRequest(api.GenerateDownloadUrlRequest o) {
+  buildCounterGenerateDownloadUrlRequest++;
+  if (buildCounterGenerateDownloadUrlRequest < 3) {}
+  buildCounterGenerateDownloadUrlRequest--;
+}
+
+core.int buildCounterGenerateDownloadUrlResponse = 0;
+api.GenerateDownloadUrlResponse buildGenerateDownloadUrlResponse() {
+  final o = api.GenerateDownloadUrlResponse();
+  buildCounterGenerateDownloadUrlResponse++;
+  if (buildCounterGenerateDownloadUrlResponse < 3) {
+    o.downloadUrl = 'foo';
+  }
+  buildCounterGenerateDownloadUrlResponse--;
+  return o;
+}
+
+void checkGenerateDownloadUrlResponse(api.GenerateDownloadUrlResponse o) {
+  buildCounterGenerateDownloadUrlResponse++;
+  if (buildCounterGenerateDownloadUrlResponse < 3) {
+    unittest.expect(
+      o.downloadUrl!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGenerateDownloadUrlResponse--;
+}
+
+core.int buildCounterGenerateUploadUrlRequest = 0;
+api.GenerateUploadUrlRequest buildGenerateUploadUrlRequest() {
+  final o = api.GenerateUploadUrlRequest();
+  buildCounterGenerateUploadUrlRequest++;
+  if (buildCounterGenerateUploadUrlRequest < 3) {}
+  buildCounterGenerateUploadUrlRequest--;
+  return o;
+}
+
+void checkGenerateUploadUrlRequest(api.GenerateUploadUrlRequest o) {
+  buildCounterGenerateUploadUrlRequest++;
+  if (buildCounterGenerateUploadUrlRequest < 3) {}
+  buildCounterGenerateUploadUrlRequest--;
+}
+
+core.int buildCounterGenerateUploadUrlResponse = 0;
+api.GenerateUploadUrlResponse buildGenerateUploadUrlResponse() {
+  final o = api.GenerateUploadUrlResponse();
+  buildCounterGenerateUploadUrlResponse++;
+  if (buildCounterGenerateUploadUrlResponse < 3) {
+    o.storageSource = buildStorageSource();
+    o.uploadUrl = 'foo';
+  }
+  buildCounterGenerateUploadUrlResponse--;
+  return o;
+}
+
+void checkGenerateUploadUrlResponse(api.GenerateUploadUrlResponse o) {
+  buildCounterGenerateUploadUrlResponse++;
+  if (buildCounterGenerateUploadUrlResponse < 3) {
+    checkStorageSource(o.storageSource!);
+    unittest.expect(
+      o.uploadUrl!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGenerateUploadUrlResponse--;
+}
+
+core.int buildCounterGoogleCloudFunctionsV2betaStateMessage = 0;
+api.GoogleCloudFunctionsV2betaStateMessage
+    buildGoogleCloudFunctionsV2betaStateMessage() {
+  final o = api.GoogleCloudFunctionsV2betaStateMessage();
+  buildCounterGoogleCloudFunctionsV2betaStateMessage++;
+  if (buildCounterGoogleCloudFunctionsV2betaStateMessage < 3) {
+    o.message = 'foo';
+    o.severity = 'foo';
+    o.type = 'foo';
+  }
+  buildCounterGoogleCloudFunctionsV2betaStateMessage--;
+  return o;
+}
+
+void checkGoogleCloudFunctionsV2betaStateMessage(
+    api.GoogleCloudFunctionsV2betaStateMessage o) {
+  buildCounterGoogleCloudFunctionsV2betaStateMessage++;
+  if (buildCounterGoogleCloudFunctionsV2betaStateMessage < 3) {
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.severity!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.type!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleCloudFunctionsV2betaStateMessage--;
+}
+
+core.List<api.Function_> buildUnnamed7() => [
+      buildFunction_(),
+      buildFunction_(),
+    ];
+
+void checkUnnamed7(core.List<api.Function_> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFunction_(o[0]);
+  checkFunction_(o[1]);
+}
+
+core.List<core.String> buildUnnamed8() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed8(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterListFunctionsResponse = 0;
+api.ListFunctionsResponse buildListFunctionsResponse() {
+  final o = api.ListFunctionsResponse();
+  buildCounterListFunctionsResponse++;
+  if (buildCounterListFunctionsResponse < 3) {
+    o.functions = buildUnnamed7();
+    o.nextPageToken = 'foo';
+    o.unreachable = buildUnnamed8();
+  }
+  buildCounterListFunctionsResponse--;
+  return o;
+}
+
+void checkListFunctionsResponse(api.ListFunctionsResponse o) {
+  buildCounterListFunctionsResponse++;
+  if (buildCounterListFunctionsResponse < 3) {
+    checkUnnamed7(o.functions!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed8(o.unreachable!);
+  }
+  buildCounterListFunctionsResponse--;
+}
+
+core.List<api.Location> buildUnnamed9() => [
+      buildLocation(),
+      buildLocation(),
+    ];
+
+void checkUnnamed9(core.List<api.Location> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocation(o[0]);
+  checkLocation(o[1]);
+}
+
+core.int buildCounterListLocationsResponse = 0;
+api.ListLocationsResponse buildListLocationsResponse() {
+  final o = api.ListLocationsResponse();
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    o.locations = buildUnnamed9();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterListLocationsResponse--;
+  return o;
+}
+
+void checkListLocationsResponse(api.ListLocationsResponse o) {
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    checkUnnamed9(o.locations!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterListLocationsResponse--;
+}
+
+core.List<api.Operation> buildUnnamed10() => [
+      buildOperation(),
+      buildOperation(),
+    ];
+
+void checkUnnamed10(core.List<api.Operation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOperation(o[0]);
+  checkOperation(o[1]);
+}
+
+core.int buildCounterListOperationsResponse = 0;
+api.ListOperationsResponse buildListOperationsResponse() {
+  final o = api.ListOperationsResponse();
+  buildCounterListOperationsResponse++;
+  if (buildCounterListOperationsResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.operations = buildUnnamed10();
+  }
+  buildCounterListOperationsResponse--;
+  return o;
+}
+
+void checkListOperationsResponse(api.ListOperationsResponse o) {
+  buildCounterListOperationsResponse++;
+  if (buildCounterListOperationsResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed10(o.operations!);
+  }
+  buildCounterListOperationsResponse--;
+}
+
+core.List<api.Runtime> buildUnnamed11() => [
+      buildRuntime(),
+      buildRuntime(),
+    ];
+
+void checkUnnamed11(core.List<api.Runtime> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkRuntime(o[0]);
+  checkRuntime(o[1]);
+}
+
+core.int buildCounterListRuntimesResponse = 0;
+api.ListRuntimesResponse buildListRuntimesResponse() {
+  final o = api.ListRuntimesResponse();
+  buildCounterListRuntimesResponse++;
+  if (buildCounterListRuntimesResponse < 3) {
+    o.runtimes = buildUnnamed11();
+  }
+  buildCounterListRuntimesResponse--;
+  return o;
+}
+
+void checkListRuntimesResponse(api.ListRuntimesResponse o) {
+  buildCounterListRuntimesResponse++;
+  if (buildCounterListRuntimesResponse < 3) {
+    checkUnnamed11(o.runtimes!);
+  }
+  buildCounterListRuntimesResponse--;
+}
+
+core.Map<core.String, core.String> buildUnnamed12() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed12(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed13() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed13(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o['x']!) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(
+    casted1['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted1['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted1['string'],
+    unittest.equals('foo'),
+  );
+  var casted2 = (o['y']!) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(
+    casted2['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted2['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted2['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterLocation = 0;
+api.Location buildLocation() {
+  final o = api.Location();
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    o.displayName = 'foo';
+    o.labels = buildUnnamed12();
+    o.locationId = 'foo';
+    o.metadata = buildUnnamed13();
+    o.name = 'foo';
+  }
+  buildCounterLocation--;
+  return o;
+}
+
+void checkLocation(api.Location o) {
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed12(o.labels!);
+    unittest.expect(
+      o.locationId!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed13(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterLocation--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed14() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed14(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o['x']!) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(
+    casted3['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted3['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted3['string'],
+    unittest.equals('foo'),
+  );
+  var casted4 = (o['y']!) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(
+    casted4['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted4['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted4['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed15() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed15(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o['x']!) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(
+    casted5['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted5['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted5['string'],
+    unittest.equals('foo'),
+  );
+  var casted6 = (o['y']!) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(
+    casted6['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted6['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted6['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterOperation = 0;
+api.Operation buildOperation() {
+  final o = api.Operation();
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    o.done = true;
+    o.error = buildStatus();
+    o.metadata = buildUnnamed14();
+    o.name = 'foo';
+    o.response = buildUnnamed15();
+  }
+  buildCounterOperation--;
+  return o;
+}
+
+void checkOperation(api.Operation o) {
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    unittest.expect(o.done!, unittest.isTrue);
+    checkStatus(o.error!);
+    checkUnnamed14(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed15(o.response!);
+  }
+  buildCounterOperation--;
+}
+
+core.List<api.AuditConfig> buildUnnamed16() => [
+      buildAuditConfig(),
+      buildAuditConfig(),
+    ];
+
+void checkUnnamed16(core.List<api.AuditConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkAuditConfig(o[0]);
+  checkAuditConfig(o[1]);
+}
+
+core.List<api.Binding> buildUnnamed17() => [
+      buildBinding(),
+      buildBinding(),
+    ];
+
+void checkUnnamed17(core.List<api.Binding> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkBinding(o[0]);
+  checkBinding(o[1]);
+}
+
+core.int buildCounterPolicy = 0;
+api.Policy buildPolicy() {
+  final o = api.Policy();
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    o.auditConfigs = buildUnnamed16();
+    o.bindings = buildUnnamed17();
+    o.etag = 'foo';
+    o.version = 42;
+  }
+  buildCounterPolicy--;
+  return o;
+}
+
+void checkPolicy(api.Policy o) {
+  buildCounterPolicy++;
+  if (buildCounterPolicy < 3) {
+    checkUnnamed16(o.auditConfigs!);
+    checkUnnamed17(o.bindings!);
+    unittest.expect(
+      o.etag!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.version!,
+      unittest.equals(42),
+    );
+  }
+  buildCounterPolicy--;
+}
+
+core.int buildCounterRepoSource = 0;
+api.RepoSource buildRepoSource() {
+  final o = api.RepoSource();
+  buildCounterRepoSource++;
+  if (buildCounterRepoSource < 3) {
+    o.branchName = 'foo';
+    o.commitSha = 'foo';
+    o.dir = 'foo';
+    o.invertRegex = true;
+    o.projectId = 'foo';
+    o.repoName = 'foo';
+    o.tagName = 'foo';
+  }
+  buildCounterRepoSource--;
+  return o;
+}
+
+void checkRepoSource(api.RepoSource o) {
+  buildCounterRepoSource++;
+  if (buildCounterRepoSource < 3) {
+    unittest.expect(
+      o.branchName!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.commitSha!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.dir!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(o.invertRegex!, unittest.isTrue);
+    unittest.expect(
+      o.projectId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.repoName!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.tagName!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterRepoSource--;
+}
+
+core.List<core.String> buildUnnamed18() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed18(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterRuntime = 0;
+api.Runtime buildRuntime() {
+  final o = api.Runtime();
+  buildCounterRuntime++;
+  if (buildCounterRuntime < 3) {
+    o.displayName = 'foo';
+    o.environment = 'foo';
+    o.name = 'foo';
+    o.stage = 'foo';
+    o.warnings = buildUnnamed18();
+  }
+  buildCounterRuntime--;
+  return o;
+}
+
+void checkRuntime(api.Runtime o) {
+  buildCounterRuntime++;
+  if (buildCounterRuntime < 3) {
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.environment!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.stage!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed18(o.warnings!);
+  }
+  buildCounterRuntime--;
+}
+
+core.Map<core.String, core.String> buildUnnamed19() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed19(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterServiceConfig = 0;
+api.ServiceConfig buildServiceConfig() {
+  final o = api.ServiceConfig();
+  buildCounterServiceConfig++;
+  if (buildCounterServiceConfig < 3) {
+    o.allTrafficOnLatestRevision = true;
+    o.availableMemory = 'foo';
+    o.environmentVariables = buildUnnamed19();
+    o.ingressSettings = 'foo';
+    o.maxInstanceCount = 42;
+    o.minInstanceCount = 42;
+    o.service = 'foo';
+    o.serviceAccountEmail = 'foo';
+    o.timeoutSeconds = 42;
+    o.uri = 'foo';
+    o.vpcConnector = 'foo';
+    o.vpcConnectorEgressSettings = 'foo';
+  }
+  buildCounterServiceConfig--;
+  return o;
+}
+
+void checkServiceConfig(api.ServiceConfig o) {
+  buildCounterServiceConfig++;
+  if (buildCounterServiceConfig < 3) {
+    unittest.expect(o.allTrafficOnLatestRevision!, unittest.isTrue);
+    unittest.expect(
+      o.availableMemory!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed19(o.environmentVariables!);
+    unittest.expect(
+      o.ingressSettings!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.maxInstanceCount!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.minInstanceCount!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.service!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.serviceAccountEmail!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.timeoutSeconds!,
+      unittest.equals(42),
+    );
+    unittest.expect(
+      o.uri!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.vpcConnector!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.vpcConnectorEgressSettings!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterServiceConfig--;
+}
+
+core.int buildCounterSetIamPolicyRequest = 0;
+api.SetIamPolicyRequest buildSetIamPolicyRequest() {
+  final o = api.SetIamPolicyRequest();
+  buildCounterSetIamPolicyRequest++;
+  if (buildCounterSetIamPolicyRequest < 3) {
+    o.policy = buildPolicy();
+    o.updateMask = 'foo';
+  }
+  buildCounterSetIamPolicyRequest--;
+  return o;
+}
+
+void checkSetIamPolicyRequest(api.SetIamPolicyRequest o) {
+  buildCounterSetIamPolicyRequest++;
+  if (buildCounterSetIamPolicyRequest < 3) {
+    checkPolicy(o.policy!);
+    unittest.expect(
+      o.updateMask!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterSetIamPolicyRequest--;
+}
+
+core.int buildCounterSource = 0;
+api.Source buildSource() {
+  final o = api.Source();
+  buildCounterSource++;
+  if (buildCounterSource < 3) {
+    o.repoSource = buildRepoSource();
+    o.storageSource = buildStorageSource();
+  }
+  buildCounterSource--;
+  return o;
+}
+
+void checkSource(api.Source o) {
+  buildCounterSource++;
+  if (buildCounterSource < 3) {
+    checkRepoSource(o.repoSource!);
+    checkStorageSource(o.storageSource!);
+  }
+  buildCounterSource--;
+}
+
+core.int buildCounterSourceProvenance = 0;
+api.SourceProvenance buildSourceProvenance() {
+  final o = api.SourceProvenance();
+  buildCounterSourceProvenance++;
+  if (buildCounterSourceProvenance < 3) {
+    o.resolvedRepoSource = buildRepoSource();
+    o.resolvedStorageSource = buildStorageSource();
+  }
+  buildCounterSourceProvenance--;
+  return o;
+}
+
+void checkSourceProvenance(api.SourceProvenance o) {
+  buildCounterSourceProvenance++;
+  if (buildCounterSourceProvenance < 3) {
+    checkRepoSource(o.resolvedRepoSource!);
+    checkStorageSource(o.resolvedStorageSource!);
+  }
+  buildCounterSourceProvenance--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed20() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed20(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted7 = (o['x']!) as core.Map;
+  unittest.expect(casted7, unittest.hasLength(3));
+  unittest.expect(
+    casted7['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted7['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted7['string'],
+    unittest.equals('foo'),
+  );
+  var casted8 = (o['y']!) as core.Map;
+  unittest.expect(casted8, unittest.hasLength(3));
+  unittest.expect(
+    casted8['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted8['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted8['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.Map<core.String, core.Object?>> buildUnnamed21() => [
+      buildUnnamed20(),
+      buildUnnamed20(),
+    ];
+
+void checkUnnamed21(core.List<core.Map<core.String, core.Object?>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed20(o[0]);
+  checkUnnamed20(o[1]);
+}
+
+core.int buildCounterStatus = 0;
+api.Status buildStatus() {
+  final o = api.Status();
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed21();
+    o.message = 'foo';
+  }
+  buildCounterStatus--;
+  return o;
+}
+
+void checkStatus(api.Status o) {
+  buildCounterStatus++;
+  if (buildCounterStatus < 3) {
+    unittest.expect(
+      o.code!,
+      unittest.equals(42),
+    );
+    checkUnnamed21(o.details!);
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterStatus--;
+}
+
+core.int buildCounterStorageSource = 0;
+api.StorageSource buildStorageSource() {
+  final o = api.StorageSource();
+  buildCounterStorageSource++;
+  if (buildCounterStorageSource < 3) {
+    o.bucket = 'foo';
+    o.generation = 'foo';
+    o.object = 'foo';
+  }
+  buildCounterStorageSource--;
+  return o;
+}
+
+void checkStorageSource(api.StorageSource o) {
+  buildCounterStorageSource++;
+  if (buildCounterStorageSource < 3) {
+    unittest.expect(
+      o.bucket!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.generation!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.object!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterStorageSource--;
+}
+
+core.List<core.String> buildUnnamed22() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed22(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterTestIamPermissionsRequest = 0;
+api.TestIamPermissionsRequest buildTestIamPermissionsRequest() {
+  final o = api.TestIamPermissionsRequest();
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    o.permissions = buildUnnamed22();
+  }
+  buildCounterTestIamPermissionsRequest--;
+  return o;
+}
+
+void checkTestIamPermissionsRequest(api.TestIamPermissionsRequest o) {
+  buildCounterTestIamPermissionsRequest++;
+  if (buildCounterTestIamPermissionsRequest < 3) {
+    checkUnnamed22(o.permissions!);
+  }
+  buildCounterTestIamPermissionsRequest--;
+}
+
+core.List<core.String> buildUnnamed23() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed23(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterTestIamPermissionsResponse = 0;
+api.TestIamPermissionsResponse buildTestIamPermissionsResponse() {
+  final o = api.TestIamPermissionsResponse();
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    o.permissions = buildUnnamed23();
+  }
+  buildCounterTestIamPermissionsResponse--;
+  return o;
+}
+
+void checkTestIamPermissionsResponse(api.TestIamPermissionsResponse o) {
+  buildCounterTestIamPermissionsResponse++;
+  if (buildCounterTestIamPermissionsResponse < 3) {
+    checkUnnamed23(o.permissions!);
+  }
+  buildCounterTestIamPermissionsResponse--;
+}
+
+void main() {
+  unittest.group('obj-schema-AuditConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAuditConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AuditConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAuditConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-AuditLogConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildAuditLogConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.AuditLogConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkAuditLogConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-Binding', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildBinding();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Binding.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkBinding(od);
+    });
+  });
+
+  unittest.group('obj-schema-BuildConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildBuildConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.BuildConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkBuildConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-EventFilter', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildEventFilter();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.EventFilter.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkEventFilter(od);
+    });
+  });
+
+  unittest.group('obj-schema-EventTrigger', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildEventTrigger();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.EventTrigger.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkEventTrigger(od);
+    });
+  });
+
+  unittest.group('obj-schema-Expr', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildExpr();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Expr.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkExpr(od);
+    });
+  });
+
+  unittest.group('obj-schema-Function_', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildFunction_();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Function_.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkFunction_(od);
+    });
+  });
+
+  unittest.group('obj-schema-GenerateDownloadUrlRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGenerateDownloadUrlRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GenerateDownloadUrlRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGenerateDownloadUrlRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-GenerateDownloadUrlResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGenerateDownloadUrlResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GenerateDownloadUrlResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGenerateDownloadUrlResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GenerateUploadUrlRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGenerateUploadUrlRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GenerateUploadUrlRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGenerateUploadUrlRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-GenerateUploadUrlResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGenerateUploadUrlResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GenerateUploadUrlResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGenerateUploadUrlResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleCloudFunctionsV2betaStateMessage', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleCloudFunctionsV2betaStateMessage();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleCloudFunctionsV2betaStateMessage.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleCloudFunctionsV2betaStateMessage(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListFunctionsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListFunctionsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListFunctionsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListFunctionsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListLocationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListLocationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListLocationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListLocationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListOperationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListOperationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListOperationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListOperationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListRuntimesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListRuntimesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListRuntimesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListRuntimesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-Location', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildLocation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Location.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkLocation(od);
+    });
+  });
+
+  unittest.group('obj-schema-Operation', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildOperation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Operation.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkOperation(od);
+    });
+  });
+
+  unittest.group('obj-schema-Policy', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildPolicy();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Policy.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkPolicy(od);
+    });
+  });
+
+  unittest.group('obj-schema-RepoSource', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildRepoSource();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.RepoSource.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkRepoSource(od);
+    });
+  });
+
+  unittest.group('obj-schema-Runtime', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildRuntime();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Runtime.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkRuntime(od);
+    });
+  });
+
+  unittest.group('obj-schema-ServiceConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildServiceConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ServiceConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkServiceConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-SetIamPolicyRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSetIamPolicyRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.SetIamPolicyRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkSetIamPolicyRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-Source', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSource();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Source.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkSource(od);
+    });
+  });
+
+  unittest.group('obj-schema-SourceProvenance', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSourceProvenance();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.SourceProvenance.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkSourceProvenance(od);
+    });
+  });
+
+  unittest.group('obj-schema-Status', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Status.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-StorageSource', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildStorageSource();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.StorageSource.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkStorageSource(od);
+    });
+  });
+
+  unittest.group('obj-schema-TestIamPermissionsRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildTestIamPermissionsRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.TestIamPermissionsRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkTestIamPermissionsRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-TestIamPermissionsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildTestIamPermissionsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.TestIamPermissionsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkTestIamPermissionsResponse(od);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsResource', () {
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListLocationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListLocationsResponse(response as api.ListLocationsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsFunctionsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_request = buildFunction_();
+      final arg_parent = 'foo';
+      final arg_functionId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Function_.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkFunction_(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['functionId']!.first,
+          unittest.equals(arg_functionId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          functionId: arg_functionId, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--generateDownloadUrl', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_request = buildGenerateDownloadUrlRequest();
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GenerateDownloadUrlRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGenerateDownloadUrlRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGenerateDownloadUrlResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.generateDownloadUrl(arg_request, arg_name,
+          $fields: arg_$fields);
+      checkGenerateDownloadUrlResponse(
+          response as api.GenerateDownloadUrlResponse);
+    });
+
+    unittest.test('method--generateUploadUrl', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_request = buildGenerateUploadUrlRequest();
+      final arg_parent = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.GenerateUploadUrlRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkGenerateUploadUrlRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildGenerateUploadUrlResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.generateUploadUrl(arg_request, arg_parent,
+          $fields: arg_$fields);
+      checkGenerateUploadUrlResponse(response as api.GenerateUploadUrlResponse);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildFunction_());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkFunction_(response as api.Function_);
+    });
+
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildPolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkPolicy(response as api.Policy);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListFunctionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListFunctionsResponse(response as api.ListFunctionsResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_request = buildFunction_();
+      final arg_name = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj =
+            api.Function_.fromJson(json as core.Map<core.String, core.dynamic>);
+        checkFunction_(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          updateMask: arg_updateMask, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_request = buildSetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkSetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildPolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkPolicy(response as api.Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.functions;
+      final arg_request = buildTestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkTestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildTestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkTestIamPermissionsResponse(
+          response as api.TestIamPermissionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsOperationsResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListOperationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListOperationsResponse(response as api.ListOperationsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsRuntimesResource', () {
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.CloudFunctionsApi(mock).projects.locations.runtimes;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v2beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListRuntimesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.list(arg_parent, filter: arg_filter, $fields: arg_$fields);
+      checkListRuntimesResponse(response as api.ListRuntimesResponse);
+    });
+  });
+}
diff --git a/generated/googleapis_beta/test/cloudsupport/v2beta_test.dart b/generated/googleapis_beta/test/cloudsupport/v2beta_test.dart
index a055f7f..89580aa 100644
--- a/generated/googleapis_beta/test/cloudsupport/v2beta_test.dart
+++ b/generated/googleapis_beta/test/cloudsupport/v2beta_test.dart
@@ -175,6 +175,7 @@
     o.displayName = 'foo';
     o.escalated = true;
     o.name = 'foo';
+    o.priority = 'foo';
     o.severity = 'foo';
     o.state = 'foo';
     o.subscriberEmailAddresses = buildUnnamed0();
@@ -209,6 +210,10 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.priority!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.severity!,
       unittest.equals('foo'),
     );
@@ -1615,7 +1620,6 @@
       final res = api.CloudSupportApi(mock).cases;
       final arg_parent = 'foo';
       final arg_filter = 'foo';
-      final arg_orderBy = 'foo';
       final arg_pageSize = 42;
       final arg_pageToken = 'foo';
       final arg_$fields = 'foo';
@@ -1656,10 +1660,6 @@
           unittest.equals(arg_filter),
         );
         unittest.expect(
-          queryMap['orderBy']!.first,
-          unittest.equals(arg_orderBy),
-        );
-        unittest.expect(
           core.int.parse(queryMap['pageSize']!.first),
           unittest.equals(arg_pageSize),
         );
@@ -1680,7 +1680,6 @@
       }), true);
       final response = await res.list(arg_parent,
           filter: arg_filter,
-          orderBy: arg_orderBy,
           pageSize: arg_pageSize,
           pageToken: arg_pageToken,
           $fields: arg_$fields);
diff --git a/generated/googleapis_beta/test/gkehub/v2alpha_test.dart b/generated/googleapis_beta/test/gkehub/v2alpha_test.dart
new file mode 100644
index 0000000..029e0cb
--- /dev/null
+++ b/generated/googleapis_beta/test/gkehub/v2alpha_test.dart
@@ -0,0 +1,1834 @@
+// ignore_for_file: camel_case_types
+// ignore_for_file: cascade_invocations
+// ignore_for_file: comment_references
+// ignore_for_file: file_names
+// ignore_for_file: library_names
+// ignore_for_file: lines_longer_than_80_chars
+// ignore_for_file: non_constant_identifier_names
+// ignore_for_file: prefer_const_declarations
+// ignore_for_file: prefer_expression_function_bodies
+// ignore_for_file: prefer_final_locals
+// ignore_for_file: prefer_interpolation_to_compose_strings
+// ignore_for_file: unnecessary_brace_in_string_interps
+// ignore_for_file: unnecessary_cast
+// ignore_for_file: unnecessary_lambdas
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: unnecessary_string_interpolations
+// ignore_for_file: unused_local_variable
+
+import 'dart:async' as async;
+import 'dart:convert' as convert;
+import 'dart:core' as core;
+
+import 'package:googleapis_beta/gkehub/v2alpha.dart' as api;
+import 'package:http/http.dart' as http;
+import 'package:test/test.dart' as unittest;
+
+import '../test_shared.dart';
+
+core.int buildCounterCancelOperationRequest = 0;
+api.CancelOperationRequest buildCancelOperationRequest() {
+  final o = api.CancelOperationRequest();
+  buildCounterCancelOperationRequest++;
+  if (buildCounterCancelOperationRequest < 3) {}
+  buildCounterCancelOperationRequest--;
+  return o;
+}
+
+void checkCancelOperationRequest(api.CancelOperationRequest o) {
+  buildCounterCancelOperationRequest++;
+  if (buildCounterCancelOperationRequest < 3) {}
+  buildCounterCancelOperationRequest--;
+}
+
+core.int buildCounterEmpty = 0;
+api.Empty buildEmpty() {
+  final o = api.Empty();
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+  return o;
+}
+
+void checkEmpty(api.Empty o) {
+  buildCounterEmpty++;
+  if (buildCounterEmpty < 3) {}
+  buildCounterEmpty--;
+}
+
+core.Map<core.String, core.String> buildUnnamed0() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed0(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterFeatureConfig = 0;
+api.FeatureConfig buildFeatureConfig() {
+  final o = api.FeatureConfig();
+  buildCounterFeatureConfig++;
+  if (buildCounterFeatureConfig < 3) {
+    o.createTime = 'foo';
+    o.deleteTime = 'foo';
+    o.labels = buildUnnamed0();
+    o.name = 'foo';
+    o.spec = buildFeatureSpec();
+    o.state = buildFeatureConfigState();
+    o.uniqueId = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterFeatureConfig--;
+  return o;
+}
+
+void checkFeatureConfig(api.FeatureConfig o) {
+  buildCounterFeatureConfig++;
+  if (buildCounterFeatureConfig < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.deleteTime!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed0(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkFeatureSpec(o.spec!);
+    checkFeatureConfigState(o.state!);
+    unittest.expect(
+      o.uniqueId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterFeatureConfig--;
+}
+
+core.int buildCounterFeatureConfigRef = 0;
+api.FeatureConfigRef buildFeatureConfigRef() {
+  final o = api.FeatureConfigRef();
+  buildCounterFeatureConfigRef++;
+  if (buildCounterFeatureConfigRef < 3) {
+    o.config = 'foo';
+    o.configUpdateTime = 'foo';
+    o.uuid = 'foo';
+  }
+  buildCounterFeatureConfigRef--;
+  return o;
+}
+
+void checkFeatureConfigRef(api.FeatureConfigRef o) {
+  buildCounterFeatureConfigRef++;
+  if (buildCounterFeatureConfigRef < 3) {
+    unittest.expect(
+      o.config!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.configUpdateTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.uuid!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterFeatureConfigRef--;
+}
+
+core.int buildCounterFeatureConfigState = 0;
+api.FeatureConfigState buildFeatureConfigState() {
+  final o = api.FeatureConfigState();
+  buildCounterFeatureConfigState++;
+  if (buildCounterFeatureConfigState < 3) {
+    o.state = 'foo';
+  }
+  buildCounterFeatureConfigState--;
+  return o;
+}
+
+void checkFeatureConfigState(api.FeatureConfigState o) {
+  buildCounterFeatureConfigState++;
+  if (buildCounterFeatureConfigState < 3) {
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterFeatureConfigState--;
+}
+
+core.int buildCounterFeatureSpec = 0;
+api.FeatureSpec buildFeatureSpec() {
+  final o = api.FeatureSpec();
+  buildCounterFeatureSpec++;
+  if (buildCounterFeatureSpec < 3) {}
+  buildCounterFeatureSpec--;
+  return o;
+}
+
+void checkFeatureSpec(api.FeatureSpec o) {
+  buildCounterFeatureSpec++;
+  if (buildCounterFeatureSpec < 3) {}
+  buildCounterFeatureSpec--;
+}
+
+core.int buildCounterFeatureState = 0;
+api.FeatureState buildFeatureState() {
+  final o = api.FeatureState();
+  buildCounterFeatureState++;
+  if (buildCounterFeatureState < 3) {
+    o.state = buildState();
+  }
+  buildCounterFeatureState--;
+  return o;
+}
+
+void checkFeatureState(api.FeatureState o) {
+  buildCounterFeatureState++;
+  if (buildCounterFeatureState < 3) {
+    checkState(o.state!);
+  }
+  buildCounterFeatureState--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed1() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed1(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted1 = (o['x']!) as core.Map;
+  unittest.expect(casted1, unittest.hasLength(3));
+  unittest.expect(
+    casted1['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted1['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted1['string'],
+    unittest.equals('foo'),
+  );
+  var casted2 = (o['y']!) as core.Map;
+  unittest.expect(casted2, unittest.hasLength(3));
+  unittest.expect(
+    casted2['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted2['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted2['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.List<core.Map<core.String, core.Object?>> buildUnnamed2() => [
+      buildUnnamed1(),
+      buildUnnamed1(),
+    ];
+
+void checkUnnamed2(core.List<core.Map<core.String, core.Object?>> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkUnnamed1(o[0]);
+  checkUnnamed1(o[1]);
+}
+
+core.int buildCounterGoogleRpcStatus = 0;
+api.GoogleRpcStatus buildGoogleRpcStatus() {
+  final o = api.GoogleRpcStatus();
+  buildCounterGoogleRpcStatus++;
+  if (buildCounterGoogleRpcStatus < 3) {
+    o.code = 42;
+    o.details = buildUnnamed2();
+    o.message = 'foo';
+  }
+  buildCounterGoogleRpcStatus--;
+  return o;
+}
+
+void checkGoogleRpcStatus(api.GoogleRpcStatus o) {
+  buildCounterGoogleRpcStatus++;
+  if (buildCounterGoogleRpcStatus < 3) {
+    unittest.expect(
+      o.code!,
+      unittest.equals(42),
+    );
+    checkUnnamed2(o.details!);
+    unittest.expect(
+      o.message!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterGoogleRpcStatus--;
+}
+
+core.List<api.FeatureConfig> buildUnnamed3() => [
+      buildFeatureConfig(),
+      buildFeatureConfig(),
+    ];
+
+void checkUnnamed3(core.List<api.FeatureConfig> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkFeatureConfig(o[0]);
+  checkFeatureConfig(o[1]);
+}
+
+core.int buildCounterListFeatureConfigsResponse = 0;
+api.ListFeatureConfigsResponse buildListFeatureConfigsResponse() {
+  final o = api.ListFeatureConfigsResponse();
+  buildCounterListFeatureConfigsResponse++;
+  if (buildCounterListFeatureConfigsResponse < 3) {
+    o.featureConfigs = buildUnnamed3();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterListFeatureConfigsResponse--;
+  return o;
+}
+
+void checkListFeatureConfigsResponse(api.ListFeatureConfigsResponse o) {
+  buildCounterListFeatureConfigsResponse++;
+  if (buildCounterListFeatureConfigsResponse < 3) {
+    checkUnnamed3(o.featureConfigs!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterListFeatureConfigsResponse--;
+}
+
+core.List<api.Location> buildUnnamed4() => [
+      buildLocation(),
+      buildLocation(),
+    ];
+
+void checkUnnamed4(core.List<api.Location> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkLocation(o[0]);
+  checkLocation(o[1]);
+}
+
+core.int buildCounterListLocationsResponse = 0;
+api.ListLocationsResponse buildListLocationsResponse() {
+  final o = api.ListLocationsResponse();
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    o.locations = buildUnnamed4();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterListLocationsResponse--;
+  return o;
+}
+
+void checkListLocationsResponse(api.ListLocationsResponse o) {
+  buildCounterListLocationsResponse++;
+  if (buildCounterListLocationsResponse < 3) {
+    checkUnnamed4(o.locations!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterListLocationsResponse--;
+}
+
+core.List<api.MembershipFeature> buildUnnamed5() => [
+      buildMembershipFeature(),
+      buildMembershipFeature(),
+    ];
+
+void checkUnnamed5(core.List<api.MembershipFeature> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkMembershipFeature(o[0]);
+  checkMembershipFeature(o[1]);
+}
+
+core.int buildCounterListMembershipFeaturesResponse = 0;
+api.ListMembershipFeaturesResponse buildListMembershipFeaturesResponse() {
+  final o = api.ListMembershipFeaturesResponse();
+  buildCounterListMembershipFeaturesResponse++;
+  if (buildCounterListMembershipFeaturesResponse < 3) {
+    o.membershipFeatures = buildUnnamed5();
+    o.nextPageToken = 'foo';
+  }
+  buildCounterListMembershipFeaturesResponse--;
+  return o;
+}
+
+void checkListMembershipFeaturesResponse(api.ListMembershipFeaturesResponse o) {
+  buildCounterListMembershipFeaturesResponse++;
+  if (buildCounterListMembershipFeaturesResponse < 3) {
+    checkUnnamed5(o.membershipFeatures!);
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterListMembershipFeaturesResponse--;
+}
+
+core.List<api.Operation> buildUnnamed6() => [
+      buildOperation(),
+      buildOperation(),
+    ];
+
+void checkUnnamed6(core.List<api.Operation> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkOperation(o[0]);
+  checkOperation(o[1]);
+}
+
+core.int buildCounterListOperationsResponse = 0;
+api.ListOperationsResponse buildListOperationsResponse() {
+  final o = api.ListOperationsResponse();
+  buildCounterListOperationsResponse++;
+  if (buildCounterListOperationsResponse < 3) {
+    o.nextPageToken = 'foo';
+    o.operations = buildUnnamed6();
+  }
+  buildCounterListOperationsResponse--;
+  return o;
+}
+
+void checkListOperationsResponse(api.ListOperationsResponse o) {
+  buildCounterListOperationsResponse++;
+  if (buildCounterListOperationsResponse < 3) {
+    unittest.expect(
+      o.nextPageToken!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed6(o.operations!);
+  }
+  buildCounterListOperationsResponse--;
+}
+
+core.Map<core.String, core.String> buildUnnamed7() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed7(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed8() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed8(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted3 = (o['x']!) as core.Map;
+  unittest.expect(casted3, unittest.hasLength(3));
+  unittest.expect(
+    casted3['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted3['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted3['string'],
+    unittest.equals('foo'),
+  );
+  var casted4 = (o['y']!) as core.Map;
+  unittest.expect(casted4, unittest.hasLength(3));
+  unittest.expect(
+    casted4['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted4['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted4['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterLocation = 0;
+api.Location buildLocation() {
+  final o = api.Location();
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    o.displayName = 'foo';
+    o.labels = buildUnnamed7();
+    o.locationId = 'foo';
+    o.metadata = buildUnnamed8();
+    o.name = 'foo';
+  }
+  buildCounterLocation--;
+  return o;
+}
+
+void checkLocation(api.Location o) {
+  buildCounterLocation++;
+  if (buildCounterLocation < 3) {
+    unittest.expect(
+      o.displayName!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed7(o.labels!);
+    unittest.expect(
+      o.locationId!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed8(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterLocation--;
+}
+
+core.Map<core.String, core.String> buildUnnamed9() => {
+      'x': 'foo',
+      'y': 'foo',
+    };
+
+void checkUnnamed9(core.Map<core.String, core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o['x']!,
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o['y']!,
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterMembershipFeature = 0;
+api.MembershipFeature buildMembershipFeature() {
+  final o = api.MembershipFeature();
+  buildCounterMembershipFeature++;
+  if (buildCounterMembershipFeature < 3) {
+    o.createTime = 'foo';
+    o.deleteTime = 'foo';
+    o.featureConfigRef = buildFeatureConfigRef();
+    o.labels = buildUnnamed9();
+    o.name = 'foo';
+    o.resourceState = buildResourceState();
+    o.spec = buildFeatureSpec();
+    o.state = buildFeatureState();
+    o.updateTime = 'foo';
+  }
+  buildCounterMembershipFeature--;
+  return o;
+}
+
+void checkMembershipFeature(api.MembershipFeature o) {
+  buildCounterMembershipFeature++;
+  if (buildCounterMembershipFeature < 3) {
+    unittest.expect(
+      o.createTime!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.deleteTime!,
+      unittest.equals('foo'),
+    );
+    checkFeatureConfigRef(o.featureConfigRef!);
+    checkUnnamed9(o.labels!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkResourceState(o.resourceState!);
+    checkFeatureSpec(o.spec!);
+    checkFeatureState(o.state!);
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterMembershipFeature--;
+}
+
+core.Map<core.String, core.Object?> buildUnnamed10() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed10(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted5 = (o['x']!) as core.Map;
+  unittest.expect(casted5, unittest.hasLength(3));
+  unittest.expect(
+    casted5['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted5['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted5['string'],
+    unittest.equals('foo'),
+  );
+  var casted6 = (o['y']!) as core.Map;
+  unittest.expect(casted6, unittest.hasLength(3));
+  unittest.expect(
+    casted6['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted6['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted6['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.Map<core.String, core.Object?> buildUnnamed11() => {
+      'x': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+      'y': {
+        'list': [1, 2, 3],
+        'bool': true,
+        'string': 'foo'
+      },
+    };
+
+void checkUnnamed11(core.Map<core.String, core.Object?> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  var casted7 = (o['x']!) as core.Map;
+  unittest.expect(casted7, unittest.hasLength(3));
+  unittest.expect(
+    casted7['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted7['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted7['string'],
+    unittest.equals('foo'),
+  );
+  var casted8 = (o['y']!) as core.Map;
+  unittest.expect(casted8, unittest.hasLength(3));
+  unittest.expect(
+    casted8['list'],
+    unittest.equals([1, 2, 3]),
+  );
+  unittest.expect(
+    casted8['bool'],
+    unittest.equals(true),
+  );
+  unittest.expect(
+    casted8['string'],
+    unittest.equals('foo'),
+  );
+}
+
+core.int buildCounterOperation = 0;
+api.Operation buildOperation() {
+  final o = api.Operation();
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    o.done = true;
+    o.error = buildGoogleRpcStatus();
+    o.metadata = buildUnnamed10();
+    o.name = 'foo';
+    o.response = buildUnnamed11();
+  }
+  buildCounterOperation--;
+  return o;
+}
+
+void checkOperation(api.Operation o) {
+  buildCounterOperation++;
+  if (buildCounterOperation < 3) {
+    unittest.expect(o.done!, unittest.isTrue);
+    checkGoogleRpcStatus(o.error!);
+    checkUnnamed10(o.metadata!);
+    unittest.expect(
+      o.name!,
+      unittest.equals('foo'),
+    );
+    checkUnnamed11(o.response!);
+  }
+  buildCounterOperation--;
+}
+
+core.int buildCounterResourceState = 0;
+api.ResourceState buildResourceState() {
+  final o = api.ResourceState();
+  buildCounterResourceState++;
+  if (buildCounterResourceState < 3) {
+    o.state = 'foo';
+  }
+  buildCounterResourceState--;
+  return o;
+}
+
+void checkResourceState(api.ResourceState o) {
+  buildCounterResourceState++;
+  if (buildCounterResourceState < 3) {
+    unittest.expect(
+      o.state!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterResourceState--;
+}
+
+core.int buildCounterState = 0;
+api.State buildState() {
+  final o = api.State();
+  buildCounterState++;
+  if (buildCounterState < 3) {
+    o.code = 'foo';
+    o.description = 'foo';
+    o.updateTime = 'foo';
+  }
+  buildCounterState--;
+  return o;
+}
+
+void checkState(api.State o) {
+  buildCounterState++;
+  if (buildCounterState < 3) {
+    unittest.expect(
+      o.code!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.description!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.updateTime!,
+      unittest.equals('foo'),
+    );
+  }
+  buildCounterState--;
+}
+
+void main() {
+  unittest.group('obj-schema-CancelOperationRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildCancelOperationRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.CancelOperationRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkCancelOperationRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-Empty', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildEmpty();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Empty.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkEmpty(od);
+    });
+  });
+
+  unittest.group('obj-schema-FeatureConfig', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildFeatureConfig();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.FeatureConfig.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkFeatureConfig(od);
+    });
+  });
+
+  unittest.group('obj-schema-FeatureConfigRef', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildFeatureConfigRef();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.FeatureConfigRef.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkFeatureConfigRef(od);
+    });
+  });
+
+  unittest.group('obj-schema-FeatureConfigState', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildFeatureConfigState();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.FeatureConfigState.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkFeatureConfigState(od);
+    });
+  });
+
+  unittest.group('obj-schema-FeatureSpec', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildFeatureSpec();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.FeatureSpec.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkFeatureSpec(od);
+    });
+  });
+
+  unittest.group('obj-schema-FeatureState', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildFeatureState();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.FeatureState.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkFeatureState(od);
+    });
+  });
+
+  unittest.group('obj-schema-GoogleRpcStatus', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildGoogleRpcStatus();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.GoogleRpcStatus.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkGoogleRpcStatus(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListFeatureConfigsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListFeatureConfigsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListFeatureConfigsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListFeatureConfigsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListLocationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListLocationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListLocationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListLocationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListMembershipFeaturesResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListMembershipFeaturesResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListMembershipFeaturesResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListMembershipFeaturesResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-ListOperationsResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildListOperationsResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ListOperationsResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkListOperationsResponse(od);
+    });
+  });
+
+  unittest.group('obj-schema-Location', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildLocation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Location.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkLocation(od);
+    });
+  });
+
+  unittest.group('obj-schema-MembershipFeature', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildMembershipFeature();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.MembershipFeature.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkMembershipFeature(od);
+    });
+  });
+
+  unittest.group('obj-schema-Operation', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildOperation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.Operation.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkOperation(od);
+    });
+  });
+
+  unittest.group('obj-schema-ResourceState', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildResourceState();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.ResourceState.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkResourceState(od);
+    });
+  });
+
+  unittest.group('obj-schema-State', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildState();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od =
+          api.State.fromJson(oJson as core.Map<core.String, core.dynamic>);
+      checkState(od);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsResource', () {
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildLocation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkLocation(response as api.Location);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListLocationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListLocationsResponse(response as api.ListLocationsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsFeatureConfigsResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.featureConfigs;
+      final arg_request = buildFeatureConfig();
+      final arg_parent = 'foo';
+      final arg_featureConfigId = 'foo';
+      final arg_requestId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.FeatureConfig.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkFeatureConfig(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['featureConfigId']!.first,
+          unittest.equals(arg_featureConfigId),
+        );
+        unittest.expect(
+          queryMap['requestId']!.first,
+          unittest.equals(arg_requestId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          featureConfigId: arg_featureConfigId,
+          requestId: arg_requestId,
+          $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.featureConfigs;
+      final arg_name = 'foo';
+      final arg_requestId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['requestId']!.first,
+          unittest.equals(arg_requestId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name,
+          requestId: arg_requestId, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.featureConfigs;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildFeatureConfig());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkFeatureConfig(response as api.FeatureConfig);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.featureConfigs;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListFeatureConfigsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListFeatureConfigsResponse(
+          response as api.ListFeatureConfigsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsMembershipsFeaturesResource', () {
+    unittest.test('method--create', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.memberships.features;
+      final arg_request = buildMembershipFeature();
+      final arg_parent = 'foo';
+      final arg_requestId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.MembershipFeature.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkMembershipFeature(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['requestId']!.first,
+          unittest.equals(arg_requestId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.create(arg_request, arg_parent,
+          requestId: arg_requestId, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--delete', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.memberships.features;
+      final arg_name = 'foo';
+      final arg_requestId = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['requestId']!.first,
+          unittest.equals(arg_requestId),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.delete(arg_name,
+          requestId: arg_requestId, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.memberships.features;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildMembershipFeature());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkMembershipFeature(response as api.MembershipFeature);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.memberships.features;
+      final arg_parent = 'foo';
+      final arg_filter = 'foo';
+      final arg_orderBy = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          queryMap['orderBy']!.first,
+          unittest.equals(arg_orderBy),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListMembershipFeaturesResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_parent,
+          filter: arg_filter,
+          orderBy: arg_orderBy,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListMembershipFeaturesResponse(
+          response as api.ListMembershipFeaturesResponse);
+    });
+
+    unittest.test('method--patch', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.memberships.features;
+      final arg_request = buildMembershipFeature();
+      final arg_name = 'foo';
+      final arg_requestId = 'foo';
+      final arg_updateMask = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.MembershipFeature.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkMembershipFeature(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['requestId']!.first,
+          unittest.equals(arg_requestId),
+        );
+        unittest.expect(
+          queryMap['updateMask']!.first,
+          unittest.equals(arg_updateMask),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.patch(arg_request, arg_name,
+          requestId: arg_requestId,
+          updateMask: arg_updateMask,
+          $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsOperationsResource', () {
+    unittest.test('method--cancel', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.operations;
+      final arg_request = buildCancelOperationRequest();
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.CancelOperationRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkCancelOperationRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildEmpty());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response =
+          await res.cancel(arg_request, arg_name, $fields: arg_$fields);
+      checkEmpty(response as api.Empty);
+    });
+
+    unittest.test('method--get', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildOperation());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.get(arg_name, $fields: arg_$fields);
+      checkOperation(response as api.Operation);
+    });
+
+    unittest.test('method--list', () async {
+      final mock = HttpServerMock();
+      final res = api.GKEHubApi(mock).projects.locations.operations;
+      final arg_name = 'foo';
+      final arg_filter = 'foo';
+      final arg_pageSize = 42;
+      final arg_pageToken = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 8),
+          unittest.equals('v2alpha/'),
+        );
+        pathOffset += 8;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['filter']!.first,
+          unittest.equals(arg_filter),
+        );
+        unittest.expect(
+          core.int.parse(queryMap['pageSize']!.first),
+          unittest.equals(arg_pageSize),
+        );
+        unittest.expect(
+          queryMap['pageToken']!.first,
+          unittest.equals(arg_pageToken),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildListOperationsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.list(arg_name,
+          filter: arg_filter,
+          pageSize: arg_pageSize,
+          pageToken: arg_pageToken,
+          $fields: arg_$fields);
+      checkListOperationsResponse(response as api.ListOperationsResponse);
+    });
+  });
+}
diff --git a/generated/googleapis_beta/test/metastore/v1beta_test.dart b/generated/googleapis_beta/test/metastore/v1beta_test.dart
index 629a596..50823df 100644
--- a/generated/googleapis_beta/test/metastore/v1beta_test.dart
+++ b/generated/googleapis_beta/test/metastore/v1beta_test.dart
@@ -1297,6 +1297,40 @@
   buildCounterPolicy--;
 }
 
+core.int buildCounterRemoveIamPolicyRequest = 0;
+api.RemoveIamPolicyRequest buildRemoveIamPolicyRequest() {
+  final o = api.RemoveIamPolicyRequest();
+  buildCounterRemoveIamPolicyRequest++;
+  if (buildCounterRemoveIamPolicyRequest < 3) {}
+  buildCounterRemoveIamPolicyRequest--;
+  return o;
+}
+
+void checkRemoveIamPolicyRequest(api.RemoveIamPolicyRequest o) {
+  buildCounterRemoveIamPolicyRequest++;
+  if (buildCounterRemoveIamPolicyRequest < 3) {}
+  buildCounterRemoveIamPolicyRequest--;
+}
+
+core.int buildCounterRemoveIamPolicyResponse = 0;
+api.RemoveIamPolicyResponse buildRemoveIamPolicyResponse() {
+  final o = api.RemoveIamPolicyResponse();
+  buildCounterRemoveIamPolicyResponse++;
+  if (buildCounterRemoveIamPolicyResponse < 3) {
+    o.success = true;
+  }
+  buildCounterRemoveIamPolicyResponse--;
+  return o;
+}
+
+void checkRemoveIamPolicyResponse(api.RemoveIamPolicyResponse o) {
+  buildCounterRemoveIamPolicyResponse++;
+  if (buildCounterRemoveIamPolicyResponse < 3) {
+    unittest.expect(o.success!, unittest.isTrue);
+  }
+  buildCounterRemoveIamPolicyResponse--;
+}
+
 core.int buildCounterRestore = 0;
 api.Restore buildRestore() {
   final o = api.Restore();
@@ -1993,6 +2027,26 @@
     });
   });
 
+  unittest.group('obj-schema-RemoveIamPolicyRequest', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildRemoveIamPolicyRequest();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.RemoveIamPolicyRequest.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkRemoveIamPolicyRequest(od);
+    });
+  });
+
+  unittest.group('obj-schema-RemoveIamPolicyResponse', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildRemoveIamPolicyResponse();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.RemoveIamPolicyResponse.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkRemoveIamPolicyResponse(od);
+    });
+  });
+
   unittest.group('obj-schema-Restore', () {
     unittest.test('to-json--from-json', () async {
       final o = buildRestore();
@@ -2820,6 +2874,64 @@
       checkOperation(response as api.Operation);
     });
 
+    unittest.test('method--removeIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.DataprocMetastoreApi(mock).projects.locations.services;
+      final arg_request = buildRemoveIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.RemoveIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkRemoveIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v1beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildRemoveIamPolicyResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.removeIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkRemoveIamPolicyResponse(response as api.RemoveIamPolicyResponse);
+    });
+
     unittest.test('method--restore', () async {
       final mock = HttpServerMock();
       final res = api.DataprocMetastoreApi(mock).projects.locations.services;
@@ -3438,6 +3550,381 @@
     });
   });
 
+  unittest.group('resource-ProjectsLocationsServicesDatabasesResource', () {
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.DataprocMetastoreApi(mock).projects.locations.services.databases;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v1beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildPolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkPolicy(response as api.Policy);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.DataprocMetastoreApi(mock).projects.locations.services.databases;
+      final arg_request = buildSetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkSetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v1beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildPolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkPolicy(response as api.Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res =
+          api.DataprocMetastoreApi(mock).projects.locations.services.databases;
+      final arg_request = buildTestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkTestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v1beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildTestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkTestIamPermissionsResponse(
+          response as api.TestIamPermissionsResponse);
+    });
+  });
+
+  unittest.group('resource-ProjectsLocationsServicesDatabasesTablesResource',
+      () {
+    unittest.test('method--getIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.DataprocMetastoreApi(mock)
+          .projects
+          .locations
+          .services
+          .databases
+          .tables;
+      final arg_resource = 'foo';
+      final arg_options_requestedPolicyVersion = 42;
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v1beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          core.int.parse(queryMap['options.requestedPolicyVersion']!.first),
+          unittest.equals(arg_options_requestedPolicyVersion),
+        );
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildPolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.getIamPolicy(arg_resource,
+          options_requestedPolicyVersion: arg_options_requestedPolicyVersion,
+          $fields: arg_$fields);
+      checkPolicy(response as api.Policy);
+    });
+
+    unittest.test('method--setIamPolicy', () async {
+      final mock = HttpServerMock();
+      final res = api.DataprocMetastoreApi(mock)
+          .projects
+          .locations
+          .services
+          .databases
+          .tables;
+      final arg_request = buildSetIamPolicyRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.SetIamPolicyRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkSetIamPolicyRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v1beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildPolicy());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.setIamPolicy(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkPolicy(response as api.Policy);
+    });
+
+    unittest.test('method--testIamPermissions', () async {
+      final mock = HttpServerMock();
+      final res = api.DataprocMetastoreApi(mock)
+          .projects
+          .locations
+          .services
+          .databases
+          .tables;
+      final arg_request = buildTestIamPermissionsRequest();
+      final arg_resource = 'foo';
+      final arg_$fields = 'foo';
+      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
+        final obj = api.TestIamPermissionsRequest.fromJson(
+            json as core.Map<core.String, core.dynamic>);
+        checkTestIamPermissionsRequest(obj);
+
+        final path = (req.url).path;
+        var pathOffset = 0;
+        core.int index;
+        core.String subPart;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 1),
+          unittest.equals('/'),
+        );
+        pathOffset += 1;
+        unittest.expect(
+          path.substring(pathOffset, pathOffset + 7),
+          unittest.equals('v1beta/'),
+        );
+        pathOffset += 7;
+        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
+
+        final query = (req.url).query;
+        var queryOffset = 0;
+        final queryMap = <core.String, core.List<core.String>>{};
+        void addQueryParam(core.String n, core.String v) =>
+            queryMap.putIfAbsent(n, () => []).add(v);
+
+        if (query.isNotEmpty) {
+          for (var part in query.split('&')) {
+            final keyValue = part.split('=');
+            addQueryParam(
+              core.Uri.decodeQueryComponent(keyValue[0]),
+              core.Uri.decodeQueryComponent(keyValue[1]),
+            );
+          }
+        }
+        unittest.expect(
+          queryMap['fields']!.first,
+          unittest.equals(arg_$fields),
+        );
+
+        final h = {
+          'content-type': 'application/json; charset=utf-8',
+        };
+        final resp = convert.json.encode(buildTestIamPermissionsResponse());
+        return async.Future.value(stringResponse(200, h, resp));
+      }), true);
+      final response = await res.testIamPermissions(arg_request, arg_resource,
+          $fields: arg_$fields);
+      checkTestIamPermissionsResponse(
+          response as api.TestIamPermissionsResponse);
+    });
+  });
+
   unittest.group('resource-ProjectsLocationsServicesMetadataImportsResource',
       () {
     unittest.test('method--create', () async {
diff --git a/generated/googleapis_beta/test/prod_tt_sasportal/v1alpha1_test.dart b/generated/googleapis_beta/test/prod_tt_sasportal/v1alpha1_test.dart
index 6f53e99..87161b7 100644
--- a/generated/googleapis_beta/test/prod_tt_sasportal/v1alpha1_test.dart
+++ b/generated/googleapis_beta/test/prod_tt_sasportal/v1alpha1_test.dart
@@ -498,6 +498,8 @@
     o.antennaModel = 'foo';
     o.commonChannelGroup = 'foo';
     o.interferenceCoordinationGroup = 'foo';
+    o.nrqzValidated = true;
+    o.nrqzValidation = buildSasPortalNrqzValidation();
   }
   buildCounterSasPortalDeviceMetadata--;
   return o;
@@ -518,6 +520,8 @@
       o.interferenceCoordinationGroup!,
       unittest.equals('foo'),
     );
+    unittest.expect(o.nrqzValidated!, unittest.isTrue);
+    checkSasPortalNrqzValidation(o.nrqzValidation!);
   }
   buildCounterSasPortalDeviceMetadata--;
 }
@@ -1024,6 +1028,43 @@
   buildCounterSasPortalNode--;
 }
 
+core.int buildCounterSasPortalNrqzValidation = 0;
+api.SasPortalNrqzValidation buildSasPortalNrqzValidation() {
+  final o = api.SasPortalNrqzValidation();
+  buildCounterSasPortalNrqzValidation++;
+  if (buildCounterSasPortalNrqzValidation < 3) {
+    o.caseId = 'foo';
+    o.cpiId = 'foo';
+    o.latitude = 42.0;
+    o.longitude = 42.0;
+  }
+  buildCounterSasPortalNrqzValidation--;
+  return o;
+}
+
+void checkSasPortalNrqzValidation(api.SasPortalNrqzValidation o) {
+  buildCounterSasPortalNrqzValidation++;
+  if (buildCounterSasPortalNrqzValidation < 3) {
+    unittest.expect(
+      o.caseId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.cpiId!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
+      o.latitude!,
+      unittest.equals(42.0),
+    );
+    unittest.expect(
+      o.longitude!,
+      unittest.equals(42.0),
+    );
+  }
+  buildCounterSasPortalNrqzValidation--;
+}
+
 core.Map<core.String, core.Object?> buildUnnamed15() => {
       'x': {
         'list': [1, 2, 3],
@@ -1728,6 +1769,16 @@
     });
   });
 
+  unittest.group('obj-schema-SasPortalNrqzValidation', () {
+    unittest.test('to-json--from-json', () async {
+      final o = buildSasPortalNrqzValidation();
+      final oJson = convert.jsonDecode(convert.jsonEncode(o));
+      final od = api.SasPortalNrqzValidation.fromJson(
+          oJson as core.Map<core.String, core.dynamic>);
+      checkSasPortalNrqzValidation(od);
+    });
+  });
+
   unittest.group('obj-schema-SasPortalOperation', () {
     unittest.test('to-json--from-json', () async {
       final o = buildSasPortalOperation();
diff --git a/generated/googleapis_beta/test/sasportal/v1alpha1_test.dart b/generated/googleapis_beta/test/sasportal/v1alpha1_test.dart
index 38489b0..975d0a6 100644
--- a/generated/googleapis_beta/test/sasportal/v1alpha1_test.dart
+++ b/generated/googleapis_beta/test/sasportal/v1alpha1_test.dart
@@ -498,6 +498,7 @@
     o.antennaModel = 'foo';
     o.commonChannelGroup = 'foo';
     o.interferenceCoordinationGroup = 'foo';
+    o.nrqzValidated = true;
   }
   buildCounterSasPortalDeviceMetadata--;
   return o;
@@ -518,6 +519,7 @@
       o.interferenceCoordinationGroup!,
       unittest.equals('foo'),
     );
+    unittest.expect(o.nrqzValidated!, unittest.isTrue);
   }
   buildCounterSasPortalDeviceMetadata--;
 }
diff --git a/generated/googleapis_beta/test/sqladmin/v1beta4_test.dart b/generated/googleapis_beta/test/sqladmin/v1beta4_test.dart
index 5034db9..037a7d8 100644
--- a/generated/googleapis_beta/test/sqladmin/v1beta4_test.dart
+++ b/generated/googleapis_beta/test/sqladmin/v1beta4_test.dart
@@ -538,6 +538,23 @@
   buildCounterDatabaseFlags--;
 }
 
+core.List<core.String> buildUnnamed2() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed2(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterDatabaseInstanceFailoverReplica = 0;
 api.DatabaseInstanceFailoverReplica buildDatabaseInstanceFailoverReplica() {
   final o = api.DatabaseInstanceFailoverReplica();
@@ -563,34 +580,17 @@
   buildCounterDatabaseInstanceFailoverReplica--;
 }
 
-core.List<api.IpMapping> buildUnnamed2() => [
+core.List<api.IpMapping> buildUnnamed3() => [
       buildIpMapping(),
       buildIpMapping(),
     ];
 
-void checkUnnamed2(core.List<api.IpMapping> o) {
+void checkUnnamed3(core.List<api.IpMapping> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkIpMapping(o[0]);
   checkIpMapping(o[1]);
 }
 
-core.List<core.String> buildUnnamed3() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed3(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed4() => [
       'foo',
       'foo',
@@ -608,11 +608,29 @@
   );
 }
 
+core.List<core.String> buildUnnamed5() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed5(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterDatabaseInstance = 0;
 api.DatabaseInstance buildDatabaseInstance() {
   final o = api.DatabaseInstance();
   buildCounterDatabaseInstance++;
   if (buildCounterDatabaseInstance < 3) {
+    o.availableMaintenanceVersions = buildUnnamed2();
     o.backendType = 'foo';
     o.connectionName = 'foo';
     o.createTime = 'foo';
@@ -625,9 +643,10 @@
     o.failoverReplica = buildDatabaseInstanceFailoverReplica();
     o.gceZone = 'foo';
     o.instanceType = 'foo';
-    o.ipAddresses = buildUnnamed2();
+    o.ipAddresses = buildUnnamed3();
     o.ipv6Address = 'foo';
     o.kind = 'foo';
+    o.maintenanceVersion = 'foo';
     o.masterInstanceName = 'foo';
     o.maxDiskSize = 'foo';
     o.name = 'foo';
@@ -636,7 +655,7 @@
     o.project = 'foo';
     o.region = 'foo';
     o.replicaConfiguration = buildReplicaConfiguration();
-    o.replicaNames = buildUnnamed3();
+    o.replicaNames = buildUnnamed4();
     o.rootPassword = 'foo';
     o.satisfiesPzs = true;
     o.scheduledMaintenance = buildSqlScheduledMaintenance();
@@ -646,7 +665,7 @@
     o.serviceAccountEmailAddress = 'foo';
     o.settings = buildSettings();
     o.state = 'foo';
-    o.suspensionReason = buildUnnamed4();
+    o.suspensionReason = buildUnnamed5();
   }
   buildCounterDatabaseInstance--;
   return o;
@@ -655,6 +674,7 @@
 void checkDatabaseInstance(api.DatabaseInstance o) {
   buildCounterDatabaseInstance++;
   if (buildCounterDatabaseInstance < 3) {
+    checkUnnamed2(o.availableMaintenanceVersions!);
     unittest.expect(
       o.backendType!,
       unittest.equals('foo'),
@@ -694,7 +714,7 @@
       o.instanceType!,
       unittest.equals('foo'),
     );
-    checkUnnamed2(o.ipAddresses!);
+    checkUnnamed3(o.ipAddresses!);
     unittest.expect(
       o.ipv6Address!,
       unittest.equals('foo'),
@@ -704,6 +724,10 @@
       unittest.equals('foo'),
     );
     unittest.expect(
+      o.maintenanceVersion!,
+      unittest.equals('foo'),
+    );
+    unittest.expect(
       o.masterInstanceName!,
       unittest.equals('foo'),
     );
@@ -726,7 +750,7 @@
       unittest.equals('foo'),
     );
     checkReplicaConfiguration(o.replicaConfiguration!);
-    checkUnnamed3(o.replicaNames!);
+    checkUnnamed4(o.replicaNames!);
     unittest.expect(
       o.rootPassword!,
       unittest.equals('foo'),
@@ -751,17 +775,17 @@
       o.state!,
       unittest.equals('foo'),
     );
-    checkUnnamed4(o.suspensionReason!);
+    checkUnnamed5(o.suspensionReason!);
   }
   buildCounterDatabaseInstance--;
 }
 
-core.List<api.Database> buildUnnamed5() => [
+core.List<api.Database> buildUnnamed6() => [
       buildDatabase(),
       buildDatabase(),
     ];
 
-void checkUnnamed5(core.List<api.Database> o) {
+void checkUnnamed6(core.List<api.Database> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatabase(o[0]);
   checkDatabase(o[1]);
@@ -772,7 +796,7 @@
   final o = api.DatabasesListResponse();
   buildCounterDatabasesListResponse++;
   if (buildCounterDatabasesListResponse < 3) {
-    o.items = buildUnnamed5();
+    o.items = buildUnnamed6();
     o.kind = 'foo';
   }
   buildCounterDatabasesListResponse--;
@@ -782,7 +806,7 @@
 void checkDatabasesListResponse(api.DatabasesListResponse o) {
   buildCounterDatabasesListResponse++;
   if (buildCounterDatabasesListResponse < 3) {
-    checkUnnamed5(o.items!);
+    checkUnnamed6(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -1025,12 +1049,12 @@
   buildCounterExportContextCsvExportOptions--;
 }
 
-core.List<core.String> buildUnnamed6() => [
+core.List<core.String> buildUnnamed7() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed6(core.List<core.String> o) {
+void checkUnnamed7(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1066,12 +1090,12 @@
   buildCounterExportContextSqlExportOptionsMysqlExportOptions--;
 }
 
-core.List<core.String> buildUnnamed7() => [
+core.List<core.String> buildUnnamed8() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed7(core.List<core.String> o) {
+void checkUnnamed8(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1091,7 +1115,7 @@
     o.mysqlExportOptions =
         buildExportContextSqlExportOptionsMysqlExportOptions();
     o.schemaOnly = true;
-    o.tables = buildUnnamed7();
+    o.tables = buildUnnamed8();
   }
   buildCounterExportContextSqlExportOptions--;
   return o;
@@ -1102,7 +1126,7 @@
   if (buildCounterExportContextSqlExportOptions < 3) {
     checkExportContextSqlExportOptionsMysqlExportOptions(o.mysqlExportOptions!);
     unittest.expect(o.schemaOnly!, unittest.isTrue);
-    checkUnnamed7(o.tables!);
+    checkUnnamed8(o.tables!);
   }
   buildCounterExportContextSqlExportOptions--;
 }
@@ -1113,7 +1137,7 @@
   buildCounterExportContext++;
   if (buildCounterExportContext < 3) {
     o.csvExportOptions = buildExportContextCsvExportOptions();
-    o.databases = buildUnnamed6();
+    o.databases = buildUnnamed7();
     o.fileType = 'foo';
     o.kind = 'foo';
     o.offload = true;
@@ -1128,7 +1152,7 @@
   buildCounterExportContext++;
   if (buildCounterExportContext < 3) {
     checkExportContextCsvExportOptions(o.csvExportOptions!);
-    checkUnnamed6(o.databases!);
+    checkUnnamed7(o.databases!);
     unittest.expect(
       o.fileType!,
       unittest.equals('foo'),
@@ -1174,23 +1198,6 @@
   buildCounterFailoverContext--;
 }
 
-core.List<core.String> buildUnnamed8() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed8(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
 core.List<core.String> buildUnnamed9() => [
       'foo',
       'foo',
@@ -1225,14 +1232,31 @@
   );
 }
 
+core.List<core.String> buildUnnamed11() => [
+      'foo',
+      'foo',
+    ];
+
+void checkUnnamed11(core.List<core.String> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  unittest.expect(
+    o[0],
+    unittest.equals('foo'),
+  );
+  unittest.expect(
+    o[1],
+    unittest.equals('foo'),
+  );
+}
+
 core.int buildCounterFlag = 0;
 api.Flag buildFlag() {
   final o = api.Flag();
   buildCounterFlag++;
   if (buildCounterFlag < 3) {
-    o.allowedIntValues = buildUnnamed8();
-    o.allowedStringValues = buildUnnamed9();
-    o.appliesTo = buildUnnamed10();
+    o.allowedIntValues = buildUnnamed9();
+    o.allowedStringValues = buildUnnamed10();
+    o.appliesTo = buildUnnamed11();
     o.inBeta = true;
     o.kind = 'foo';
     o.maxValue = 'foo';
@@ -1248,9 +1272,9 @@
 void checkFlag(api.Flag o) {
   buildCounterFlag++;
   if (buildCounterFlag < 3) {
-    checkUnnamed8(o.allowedIntValues!);
-    checkUnnamed9(o.allowedStringValues!);
-    checkUnnamed10(o.appliesTo!);
+    checkUnnamed9(o.allowedIntValues!);
+    checkUnnamed10(o.allowedStringValues!);
+    checkUnnamed11(o.appliesTo!);
     unittest.expect(o.inBeta!, unittest.isTrue);
     unittest.expect(
       o.kind!,
@@ -1277,12 +1301,12 @@
   buildCounterFlag--;
 }
 
-core.List<api.Flag> buildUnnamed11() => [
+core.List<api.Flag> buildUnnamed12() => [
       buildFlag(),
       buildFlag(),
     ];
 
-void checkUnnamed11(core.List<api.Flag> o) {
+void checkUnnamed12(core.List<api.Flag> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkFlag(o[0]);
   checkFlag(o[1]);
@@ -1293,7 +1317,7 @@
   final o = api.FlagsListResponse();
   buildCounterFlagsListResponse++;
   if (buildCounterFlagsListResponse < 3) {
-    o.items = buildUnnamed11();
+    o.items = buildUnnamed12();
     o.kind = 'foo';
   }
   buildCounterFlagsListResponse--;
@@ -1303,7 +1327,7 @@
 void checkFlagsListResponse(api.FlagsListResponse o) {
   buildCounterFlagsListResponse++;
   if (buildCounterFlagsListResponse < 3) {
-    checkUnnamed11(o.items!);
+    checkUnnamed12(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -1421,12 +1445,12 @@
   buildCounterImportContextBakImportOptions--;
 }
 
-core.List<core.String> buildUnnamed12() => [
+core.List<core.String> buildUnnamed13() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed12(core.List<core.String> o) {
+void checkUnnamed13(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -1443,7 +1467,7 @@
   final o = api.ImportContextCsvImportOptions();
   buildCounterImportContextCsvImportOptions++;
   if (buildCounterImportContextCsvImportOptions < 3) {
-    o.columns = buildUnnamed12();
+    o.columns = buildUnnamed13();
     o.escapeCharacter = 'foo';
     o.fieldsTerminatedBy = 'foo';
     o.linesTerminatedBy = 'foo';
@@ -1457,7 +1481,7 @@
 void checkImportContextCsvImportOptions(api.ImportContextCsvImportOptions o) {
   buildCounterImportContextCsvImportOptions++;
   if (buildCounterImportContextCsvImportOptions < 3) {
-    checkUnnamed12(o.columns!);
+    checkUnnamed13(o.columns!);
     unittest.expect(
       o.escapeCharacter!,
       unittest.equals('foo'),
@@ -1688,23 +1712,23 @@
   buildCounterInstancesImportRequest--;
 }
 
-core.List<api.DatabaseInstance> buildUnnamed13() => [
+core.List<api.DatabaseInstance> buildUnnamed14() => [
       buildDatabaseInstance(),
       buildDatabaseInstance(),
     ];
 
-void checkUnnamed13(core.List<api.DatabaseInstance> o) {
+void checkUnnamed14(core.List<api.DatabaseInstance> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatabaseInstance(o[0]);
   checkDatabaseInstance(o[1]);
 }
 
-core.List<api.ApiWarning> buildUnnamed14() => [
+core.List<api.ApiWarning> buildUnnamed15() => [
       buildApiWarning(),
       buildApiWarning(),
     ];
 
-void checkUnnamed14(core.List<api.ApiWarning> o) {
+void checkUnnamed15(core.List<api.ApiWarning> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkApiWarning(o[0]);
   checkApiWarning(o[1]);
@@ -1715,10 +1739,10 @@
   final o = api.InstancesListResponse();
   buildCounterInstancesListResponse++;
   if (buildCounterInstancesListResponse < 3) {
-    o.items = buildUnnamed13();
+    o.items = buildUnnamed14();
     o.kind = 'foo';
     o.nextPageToken = 'foo';
-    o.warnings = buildUnnamed14();
+    o.warnings = buildUnnamed15();
   }
   buildCounterInstancesListResponse--;
   return o;
@@ -1727,7 +1751,7 @@
 void checkInstancesListResponse(api.InstancesListResponse o) {
   buildCounterInstancesListResponse++;
   if (buildCounterInstancesListResponse < 3) {
-    checkUnnamed13(o.items!);
+    checkUnnamed14(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -1736,17 +1760,17 @@
       o.nextPageToken!,
       unittest.equals('foo'),
     );
-    checkUnnamed14(o.warnings!);
+    checkUnnamed15(o.warnings!);
   }
   buildCounterInstancesListResponse--;
 }
 
-core.List<api.SslCert> buildUnnamed15() => [
+core.List<api.SslCert> buildUnnamed16() => [
       buildSslCert(),
       buildSslCert(),
     ];
 
-void checkUnnamed15(core.List<api.SslCert> o) {
+void checkUnnamed16(core.List<api.SslCert> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSslCert(o[0]);
   checkSslCert(o[1]);
@@ -1758,7 +1782,7 @@
   buildCounterInstancesListServerCasResponse++;
   if (buildCounterInstancesListServerCasResponse < 3) {
     o.activeVersion = 'foo';
-    o.certs = buildUnnamed15();
+    o.certs = buildUnnamed16();
     o.kind = 'foo';
   }
   buildCounterInstancesListServerCasResponse--;
@@ -1772,7 +1796,7 @@
       o.activeVersion!,
       unittest.equals('foo'),
     );
-    checkUnnamed15(o.certs!);
+    checkUnnamed16(o.certs!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -1838,12 +1862,12 @@
   buildCounterInstancesTruncateLogRequest--;
 }
 
-core.List<api.AclEntry> buildUnnamed16() => [
+core.List<api.AclEntry> buildUnnamed17() => [
       buildAclEntry(),
       buildAclEntry(),
     ];
 
-void checkUnnamed16(core.List<api.AclEntry> o) {
+void checkUnnamed17(core.List<api.AclEntry> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkAclEntry(o[0]);
   checkAclEntry(o[1]);
@@ -1855,7 +1879,7 @@
   buildCounterIpConfiguration++;
   if (buildCounterIpConfiguration < 3) {
     o.allocatedIpRange = 'foo';
-    o.authorizedNetworks = buildUnnamed16();
+    o.authorizedNetworks = buildUnnamed17();
     o.ipv4Enabled = true;
     o.privateNetwork = 'foo';
     o.requireSsl = true;
@@ -1871,7 +1895,7 @@
       o.allocatedIpRange!,
       unittest.equals('foo'),
     );
-    checkUnnamed16(o.authorizedNetworks!);
+    checkUnnamed17(o.authorizedNetworks!);
     unittest.expect(o.ipv4Enabled!, unittest.isTrue);
     unittest.expect(
       o.privateNetwork!,
@@ -2057,12 +2081,12 @@
   buildCounterMySqlReplicaConfiguration--;
 }
 
-core.List<api.SyncFlags> buildUnnamed17() => [
+core.List<api.SyncFlags> buildUnnamed18() => [
       buildSyncFlags(),
       buildSyncFlags(),
     ];
 
-void checkUnnamed17(core.List<api.SyncFlags> o) {
+void checkUnnamed18(core.List<api.SyncFlags> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSyncFlags(o[0]);
   checkSyncFlags(o[1]);
@@ -2073,7 +2097,7 @@
   final o = api.MySqlSyncConfig();
   buildCounterMySqlSyncConfig++;
   if (buildCounterMySqlSyncConfig < 3) {
-    o.initialSyncFlags = buildUnnamed17();
+    o.initialSyncFlags = buildUnnamed18();
   }
   buildCounterMySqlSyncConfig--;
   return o;
@@ -2082,7 +2106,7 @@
 void checkMySqlSyncConfig(api.MySqlSyncConfig o) {
   buildCounterMySqlSyncConfig++;
   if (buildCounterMySqlSyncConfig < 3) {
-    checkUnnamed17(o.initialSyncFlags!);
+    checkUnnamed18(o.initialSyncFlags!);
   }
   buildCounterMySqlSyncConfig--;
 }
@@ -2263,12 +2287,12 @@
   buildCounterOperationError--;
 }
 
-core.List<api.OperationError> buildUnnamed18() => [
+core.List<api.OperationError> buildUnnamed19() => [
       buildOperationError(),
       buildOperationError(),
     ];
 
-void checkUnnamed18(core.List<api.OperationError> o) {
+void checkUnnamed19(core.List<api.OperationError> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperationError(o[0]);
   checkOperationError(o[1]);
@@ -2279,7 +2303,7 @@
   final o = api.OperationErrors();
   buildCounterOperationErrors++;
   if (buildCounterOperationErrors < 3) {
-    o.errors = buildUnnamed18();
+    o.errors = buildUnnamed19();
     o.kind = 'foo';
   }
   buildCounterOperationErrors--;
@@ -2289,7 +2313,7 @@
 void checkOperationErrors(api.OperationErrors o) {
   buildCounterOperationErrors++;
   if (buildCounterOperationErrors < 3) {
-    checkUnnamed18(o.errors!);
+    checkUnnamed19(o.errors!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -2298,12 +2322,12 @@
   buildCounterOperationErrors--;
 }
 
-core.List<api.Operation> buildUnnamed19() => [
+core.List<api.Operation> buildUnnamed20() => [
       buildOperation(),
       buildOperation(),
     ];
 
-void checkUnnamed19(core.List<api.Operation> o) {
+void checkUnnamed20(core.List<api.Operation> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkOperation(o[0]);
   checkOperation(o[1]);
@@ -2314,7 +2338,7 @@
   final o = api.OperationsListResponse();
   buildCounterOperationsListResponse++;
   if (buildCounterOperationsListResponse < 3) {
-    o.items = buildUnnamed19();
+    o.items = buildUnnamed20();
     o.kind = 'foo';
     o.nextPageToken = 'foo';
   }
@@ -2325,7 +2349,7 @@
 void checkOperationsListResponse(api.OperationsListResponse o) {
   buildCounterOperationsListResponse++;
   if (buildCounterOperationsListResponse < 3) {
-    checkUnnamed19(o.items!);
+    checkUnnamed20(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -2518,12 +2542,12 @@
   buildCounterRotateServerCaContext--;
 }
 
-core.List<core.String> buildUnnamed20() => [
+core.List<core.String> buildUnnamed21() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed20(core.List<core.String> o) {
+void checkUnnamed21(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2535,34 +2559,34 @@
   );
 }
 
-core.List<api.DatabaseFlags> buildUnnamed21() => [
+core.List<api.DatabaseFlags> buildUnnamed22() => [
       buildDatabaseFlags(),
       buildDatabaseFlags(),
     ];
 
-void checkUnnamed21(core.List<api.DatabaseFlags> o) {
+void checkUnnamed22(core.List<api.DatabaseFlags> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDatabaseFlags(o[0]);
   checkDatabaseFlags(o[1]);
 }
 
-core.List<api.DenyMaintenancePeriod> buildUnnamed22() => [
+core.List<api.DenyMaintenancePeriod> buildUnnamed23() => [
       buildDenyMaintenancePeriod(),
       buildDenyMaintenancePeriod(),
     ];
 
-void checkUnnamed22(core.List<api.DenyMaintenancePeriod> o) {
+void checkUnnamed23(core.List<api.DenyMaintenancePeriod> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkDenyMaintenancePeriod(o[0]);
   checkDenyMaintenancePeriod(o[1]);
 }
 
-core.Map<core.String, core.String> buildUnnamed23() => {
+core.Map<core.String, core.String> buildUnnamed24() => {
       'x': 'foo',
       'y': 'foo',
     };
 
-void checkUnnamed23(core.Map<core.String, core.String> o) {
+void checkUnnamed24(core.Map<core.String, core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o['x']!,
@@ -2581,16 +2605,16 @@
   if (buildCounterSettings < 3) {
     o.activationPolicy = 'foo';
     o.activeDirectoryConfig = buildSqlActiveDirectoryConfig();
-    o.authorizedGaeApplications = buildUnnamed20();
+    o.authorizedGaeApplications = buildUnnamed21();
     o.availabilityType = 'foo';
     o.backupConfiguration = buildBackupConfiguration();
     o.collation = 'foo';
     o.crashSafeReplicationEnabled = true;
     o.dataDiskSizeGb = 'foo';
     o.dataDiskType = 'foo';
-    o.databaseFlags = buildUnnamed21();
+    o.databaseFlags = buildUnnamed22();
     o.databaseReplicationEnabled = true;
-    o.denyMaintenancePeriods = buildUnnamed22();
+    o.denyMaintenancePeriods = buildUnnamed23();
     o.insightsConfig = buildInsightsConfig();
     o.ipConfiguration = buildIpConfiguration();
     o.kind = 'foo';
@@ -2604,7 +2628,7 @@
     o.storageAutoResize = true;
     o.storageAutoResizeLimit = 'foo';
     o.tier = 'foo';
-    o.userLabels = buildUnnamed23();
+    o.userLabels = buildUnnamed24();
   }
   buildCounterSettings--;
   return o;
@@ -2618,7 +2642,7 @@
       unittest.equals('foo'),
     );
     checkSqlActiveDirectoryConfig(o.activeDirectoryConfig!);
-    checkUnnamed20(o.authorizedGaeApplications!);
+    checkUnnamed21(o.authorizedGaeApplications!);
     unittest.expect(
       o.availabilityType!,
       unittest.equals('foo'),
@@ -2637,9 +2661,9 @@
       o.dataDiskType!,
       unittest.equals('foo'),
     );
-    checkUnnamed21(o.databaseFlags!);
+    checkUnnamed22(o.databaseFlags!);
     unittest.expect(o.databaseReplicationEnabled!, unittest.isTrue);
-    checkUnnamed22(o.denyMaintenancePeriods!);
+    checkUnnamed23(o.denyMaintenancePeriods!);
     checkInsightsConfig(o.insightsConfig!);
     checkIpConfiguration(o.ipConfiguration!);
     unittest.expect(
@@ -2671,7 +2695,7 @@
       o.tier!,
       unittest.equals('foo'),
     );
-    checkUnnamed23(o.userLabels!);
+    checkUnnamed24(o.userLabels!);
   }
   buildCounterSettings--;
 }
@@ -2814,17 +2838,6 @@
   buildCounterSqlInstancesVerifyExternalSyncSettingsRequest--;
 }
 
-core.List<api.SqlExternalSyncSettingError> buildUnnamed24() => [
-      buildSqlExternalSyncSettingError(),
-      buildSqlExternalSyncSettingError(),
-    ];
-
-void checkUnnamed24(core.List<api.SqlExternalSyncSettingError> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkSqlExternalSyncSettingError(o[0]);
-  checkSqlExternalSyncSettingError(o[1]);
-}
-
 core.List<api.SqlExternalSyncSettingError> buildUnnamed25() => [
       buildSqlExternalSyncSettingError(),
       buildSqlExternalSyncSettingError(),
@@ -2836,15 +2849,26 @@
   checkSqlExternalSyncSettingError(o[1]);
 }
 
+core.List<api.SqlExternalSyncSettingError> buildUnnamed26() => [
+      buildSqlExternalSyncSettingError(),
+      buildSqlExternalSyncSettingError(),
+    ];
+
+void checkUnnamed26(core.List<api.SqlExternalSyncSettingError> o) {
+  unittest.expect(o, unittest.hasLength(2));
+  checkSqlExternalSyncSettingError(o[0]);
+  checkSqlExternalSyncSettingError(o[1]);
+}
+
 core.int buildCounterSqlInstancesVerifyExternalSyncSettingsResponse = 0;
 api.SqlInstancesVerifyExternalSyncSettingsResponse
     buildSqlInstancesVerifyExternalSyncSettingsResponse() {
   final o = api.SqlInstancesVerifyExternalSyncSettingsResponse();
   buildCounterSqlInstancesVerifyExternalSyncSettingsResponse++;
   if (buildCounterSqlInstancesVerifyExternalSyncSettingsResponse < 3) {
-    o.errors = buildUnnamed24();
+    o.errors = buildUnnamed25();
     o.kind = 'foo';
-    o.warnings = buildUnnamed25();
+    o.warnings = buildUnnamed26();
   }
   buildCounterSqlInstancesVerifyExternalSyncSettingsResponse--;
   return o;
@@ -2854,12 +2878,12 @@
     api.SqlInstancesVerifyExternalSyncSettingsResponse o) {
   buildCounterSqlInstancesVerifyExternalSyncSettingsResponse++;
   if (buildCounterSqlInstancesVerifyExternalSyncSettingsResponse < 3) {
-    checkUnnamed24(o.errors!);
+    checkUnnamed25(o.errors!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
     );
-    checkUnnamed25(o.warnings!);
+    checkUnnamed26(o.warnings!);
   }
   buildCounterSqlInstancesVerifyExternalSyncSettingsResponse--;
 }
@@ -2976,12 +3000,12 @@
   buildCounterSqlServerDatabaseDetails--;
 }
 
-core.List<core.String> buildUnnamed26() => [
+core.List<core.String> buildUnnamed27() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed26(core.List<core.String> o) {
+void checkUnnamed27(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -2999,7 +3023,7 @@
   buildCounterSqlServerUserDetails++;
   if (buildCounterSqlServerUserDetails < 3) {
     o.disabled = true;
-    o.serverRoles = buildUnnamed26();
+    o.serverRoles = buildUnnamed27();
   }
   buildCounterSqlServerUserDetails--;
   return o;
@@ -3009,7 +3033,7 @@
   buildCounterSqlServerUserDetails++;
   if (buildCounterSqlServerUserDetails < 3) {
     unittest.expect(o.disabled!, unittest.isTrue);
-    checkUnnamed26(o.serverRoles!);
+    checkUnnamed27(o.serverRoles!);
   }
   buildCounterSqlServerUserDetails--;
 }
@@ -3177,12 +3201,12 @@
   buildCounterSslCertsInsertResponse--;
 }
 
-core.List<api.SslCert> buildUnnamed27() => [
+core.List<api.SslCert> buildUnnamed28() => [
       buildSslCert(),
       buildSslCert(),
     ];
 
-void checkUnnamed27(core.List<api.SslCert> o) {
+void checkUnnamed28(core.List<api.SslCert> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkSslCert(o[0]);
   checkSslCert(o[1]);
@@ -3193,7 +3217,7 @@
   final o = api.SslCertsListResponse();
   buildCounterSslCertsListResponse++;
   if (buildCounterSslCertsListResponse < 3) {
-    o.items = buildUnnamed27();
+    o.items = buildUnnamed28();
     o.kind = 'foo';
   }
   buildCounterSslCertsListResponse--;
@@ -3203,7 +3227,7 @@
 void checkSslCertsListResponse(api.SslCertsListResponse o) {
   buildCounterSslCertsListResponse++;
   if (buildCounterSslCertsListResponse < 3) {
-    checkUnnamed27(o.items!);
+    checkUnnamed28(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -3239,12 +3263,12 @@
   buildCounterSyncFlags--;
 }
 
-core.List<core.String> buildUnnamed28() => [
+core.List<core.String> buildUnnamed29() => [
       'foo',
       'foo',
     ];
 
-void checkUnnamed28(core.List<core.String> o) {
+void checkUnnamed29(core.List<core.String> o) {
   unittest.expect(o, unittest.hasLength(2));
   unittest.expect(
     o[0],
@@ -3264,7 +3288,7 @@
     o.DiskQuota = 'foo';
     o.RAM = 'foo';
     o.kind = 'foo';
-    o.region = buildUnnamed28();
+    o.region = buildUnnamed29();
     o.tier = 'foo';
   }
   buildCounterTier--;
@@ -3286,7 +3310,7 @@
       o.kind!,
       unittest.equals('foo'),
     );
-    checkUnnamed28(o.region!);
+    checkUnnamed29(o.region!);
     unittest.expect(
       o.tier!,
       unittest.equals('foo'),
@@ -3295,12 +3319,12 @@
   buildCounterTier--;
 }
 
-core.List<api.Tier> buildUnnamed29() => [
+core.List<api.Tier> buildUnnamed30() => [
       buildTier(),
       buildTier(),
     ];
 
-void checkUnnamed29(core.List<api.Tier> o) {
+void checkUnnamed30(core.List<api.Tier> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkTier(o[0]);
   checkTier(o[1]);
@@ -3311,7 +3335,7 @@
   final o = api.TiersListResponse();
   buildCounterTiersListResponse++;
   if (buildCounterTiersListResponse < 3) {
-    o.items = buildUnnamed29();
+    o.items = buildUnnamed30();
     o.kind = 'foo';
   }
   buildCounterTiersListResponse--;
@@ -3321,7 +3345,7 @@
 void checkTiersListResponse(api.TiersListResponse o) {
   buildCounterTiersListResponse++;
   if (buildCounterTiersListResponse < 3) {
-    checkUnnamed29(o.items!);
+    checkUnnamed30(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
@@ -3449,12 +3473,12 @@
   buildCounterUserPasswordValidationPolicy--;
 }
 
-core.List<api.User> buildUnnamed30() => [
+core.List<api.User> buildUnnamed31() => [
       buildUser(),
       buildUser(),
     ];
 
-void checkUnnamed30(core.List<api.User> o) {
+void checkUnnamed31(core.List<api.User> o) {
   unittest.expect(o, unittest.hasLength(2));
   checkUser(o[0]);
   checkUser(o[1]);
@@ -3465,7 +3489,7 @@
   final o = api.UsersListResponse();
   buildCounterUsersListResponse++;
   if (buildCounterUsersListResponse < 3) {
-    o.items = buildUnnamed30();
+    o.items = buildUnnamed31();
     o.kind = 'foo';
     o.nextPageToken = 'foo';
   }
@@ -3476,7 +3500,7 @@
 void checkUsersListResponse(api.UsersListResponse o) {
   buildCounterUsersListResponse++;
   if (buildCounterUsersListResponse < 3) {
-    checkUnnamed30(o.items!);
+    checkUnnamed31(o.items!);
     unittest.expect(
       o.kind!,
       unittest.equals('foo'),
diff --git a/generated/googleapis_beta/test/transcoder/v1beta1_test.dart b/generated/googleapis_beta/test/transcoder/v1beta1_test.dart
deleted file mode 100644
index aa064a5..0000000
--- a/generated/googleapis_beta/test/transcoder/v1beta1_test.dart
+++ /dev/null
@@ -1,2615 +0,0 @@
-// ignore_for_file: camel_case_types
-// ignore_for_file: cascade_invocations
-// ignore_for_file: comment_references
-// ignore_for_file: file_names
-// ignore_for_file: library_names
-// ignore_for_file: lines_longer_than_80_chars
-// ignore_for_file: non_constant_identifier_names
-// ignore_for_file: prefer_const_declarations
-// ignore_for_file: prefer_expression_function_bodies
-// ignore_for_file: prefer_final_locals
-// ignore_for_file: prefer_interpolation_to_compose_strings
-// ignore_for_file: unnecessary_brace_in_string_interps
-// ignore_for_file: unnecessary_cast
-// ignore_for_file: unnecessary_lambdas
-// ignore_for_file: unnecessary_parenthesis
-// ignore_for_file: unnecessary_string_interpolations
-// ignore_for_file: unused_local_variable
-
-import 'dart:async' as async;
-import 'dart:convert' as convert;
-import 'dart:core' as core;
-
-import 'package:googleapis_beta/transcoder/v1beta1.dart' as api;
-import 'package:http/http.dart' as http;
-import 'package:test/test.dart' as unittest;
-
-import '../test_shared.dart';
-
-core.int buildCounterAdBreak = 0;
-api.AdBreak buildAdBreak() {
-  final o = api.AdBreak();
-  buildCounterAdBreak++;
-  if (buildCounterAdBreak < 3) {
-    o.startTimeOffset = 'foo';
-  }
-  buildCounterAdBreak--;
-  return o;
-}
-
-void checkAdBreak(api.AdBreak o) {
-  buildCounterAdBreak++;
-  if (buildCounterAdBreak < 3) {
-    unittest.expect(
-      o.startTimeOffset!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterAdBreak--;
-}
-
-core.int buildCounterAes128Encryption = 0;
-api.Aes128Encryption buildAes128Encryption() {
-  final o = api.Aes128Encryption();
-  buildCounterAes128Encryption++;
-  if (buildCounterAes128Encryption < 3) {
-    o.keyUri = 'foo';
-  }
-  buildCounterAes128Encryption--;
-  return o;
-}
-
-void checkAes128Encryption(api.Aes128Encryption o) {
-  buildCounterAes128Encryption++;
-  if (buildCounterAes128Encryption < 3) {
-    unittest.expect(
-      o.keyUri!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterAes128Encryption--;
-}
-
-core.int buildCounterAnimation = 0;
-api.Animation buildAnimation() {
-  final o = api.Animation();
-  buildCounterAnimation++;
-  if (buildCounterAnimation < 3) {
-    o.animationEnd = buildAnimationEnd();
-    o.animationFade = buildAnimationFade();
-    o.animationStatic = buildAnimationStatic();
-  }
-  buildCounterAnimation--;
-  return o;
-}
-
-void checkAnimation(api.Animation o) {
-  buildCounterAnimation++;
-  if (buildCounterAnimation < 3) {
-    checkAnimationEnd(o.animationEnd!);
-    checkAnimationFade(o.animationFade!);
-    checkAnimationStatic(o.animationStatic!);
-  }
-  buildCounterAnimation--;
-}
-
-core.int buildCounterAnimationEnd = 0;
-api.AnimationEnd buildAnimationEnd() {
-  final o = api.AnimationEnd();
-  buildCounterAnimationEnd++;
-  if (buildCounterAnimationEnd < 3) {
-    o.startTimeOffset = 'foo';
-  }
-  buildCounterAnimationEnd--;
-  return o;
-}
-
-void checkAnimationEnd(api.AnimationEnd o) {
-  buildCounterAnimationEnd++;
-  if (buildCounterAnimationEnd < 3) {
-    unittest.expect(
-      o.startTimeOffset!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterAnimationEnd--;
-}
-
-core.int buildCounterAnimationFade = 0;
-api.AnimationFade buildAnimationFade() {
-  final o = api.AnimationFade();
-  buildCounterAnimationFade++;
-  if (buildCounterAnimationFade < 3) {
-    o.endTimeOffset = 'foo';
-    o.fadeType = 'foo';
-    o.startTimeOffset = 'foo';
-    o.xy = buildNormalizedCoordinate();
-  }
-  buildCounterAnimationFade--;
-  return o;
-}
-
-void checkAnimationFade(api.AnimationFade o) {
-  buildCounterAnimationFade++;
-  if (buildCounterAnimationFade < 3) {
-    unittest.expect(
-      o.endTimeOffset!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.fadeType!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.startTimeOffset!,
-      unittest.equals('foo'),
-    );
-    checkNormalizedCoordinate(o.xy!);
-  }
-  buildCounterAnimationFade--;
-}
-
-core.int buildCounterAnimationStatic = 0;
-api.AnimationStatic buildAnimationStatic() {
-  final o = api.AnimationStatic();
-  buildCounterAnimationStatic++;
-  if (buildCounterAnimationStatic < 3) {
-    o.startTimeOffset = 'foo';
-    o.xy = buildNormalizedCoordinate();
-  }
-  buildCounterAnimationStatic--;
-  return o;
-}
-
-void checkAnimationStatic(api.AnimationStatic o) {
-  buildCounterAnimationStatic++;
-  if (buildCounterAnimationStatic < 3) {
-    unittest.expect(
-      o.startTimeOffset!,
-      unittest.equals('foo'),
-    );
-    checkNormalizedCoordinate(o.xy!);
-  }
-  buildCounterAnimationStatic--;
-}
-
-core.int buildCounterAudio = 0;
-api.Audio buildAudio() {
-  final o = api.Audio();
-  buildCounterAudio++;
-  if (buildCounterAudio < 3) {
-    o.highBoost = true;
-    o.lowBoost = true;
-    o.lufs = 42.0;
-  }
-  buildCounterAudio--;
-  return o;
-}
-
-void checkAudio(api.Audio o) {
-  buildCounterAudio++;
-  if (buildCounterAudio < 3) {
-    unittest.expect(o.highBoost!, unittest.isTrue);
-    unittest.expect(o.lowBoost!, unittest.isTrue);
-    unittest.expect(
-      o.lufs!,
-      unittest.equals(42.0),
-    );
-  }
-  buildCounterAudio--;
-}
-
-core.List<api.AudioChannel> buildUnnamed0() => [
-      buildAudioChannel(),
-      buildAudioChannel(),
-    ];
-
-void checkUnnamed0(core.List<api.AudioChannel> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAudioChannel(o[0]);
-  checkAudioChannel(o[1]);
-}
-
-core.int buildCounterAudioAtom = 0;
-api.AudioAtom buildAudioAtom() {
-  final o = api.AudioAtom();
-  buildCounterAudioAtom++;
-  if (buildCounterAudioAtom < 3) {
-    o.channels = buildUnnamed0();
-    o.key = 'foo';
-  }
-  buildCounterAudioAtom--;
-  return o;
-}
-
-void checkAudioAtom(api.AudioAtom o) {
-  buildCounterAudioAtom++;
-  if (buildCounterAudioAtom < 3) {
-    checkUnnamed0(o.channels!);
-    unittest.expect(
-      o.key!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterAudioAtom--;
-}
-
-core.List<api.AudioChannelInput> buildUnnamed1() => [
-      buildAudioChannelInput(),
-      buildAudioChannelInput(),
-    ];
-
-void checkUnnamed1(core.List<api.AudioChannelInput> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAudioChannelInput(o[0]);
-  checkAudioChannelInput(o[1]);
-}
-
-core.int buildCounterAudioChannel = 0;
-api.AudioChannel buildAudioChannel() {
-  final o = api.AudioChannel();
-  buildCounterAudioChannel++;
-  if (buildCounterAudioChannel < 3) {
-    o.inputs = buildUnnamed1();
-  }
-  buildCounterAudioChannel--;
-  return o;
-}
-
-void checkAudioChannel(api.AudioChannel o) {
-  buildCounterAudioChannel++;
-  if (buildCounterAudioChannel < 3) {
-    checkUnnamed1(o.inputs!);
-  }
-  buildCounterAudioChannel--;
-}
-
-core.int buildCounterAudioChannelInput = 0;
-api.AudioChannelInput buildAudioChannelInput() {
-  final o = api.AudioChannelInput();
-  buildCounterAudioChannelInput++;
-  if (buildCounterAudioChannelInput < 3) {
-    o.channel = 42;
-    o.gainDb = 42.0;
-    o.key = 'foo';
-    o.track = 42;
-  }
-  buildCounterAudioChannelInput--;
-  return o;
-}
-
-void checkAudioChannelInput(api.AudioChannelInput o) {
-  buildCounterAudioChannelInput++;
-  if (buildCounterAudioChannelInput < 3) {
-    unittest.expect(
-      o.channel!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.gainDb!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.key!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.track!,
-      unittest.equals(42),
-    );
-  }
-  buildCounterAudioChannelInput--;
-}
-
-core.List<core.String> buildUnnamed2() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed2(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.List<api.AudioAtom> buildUnnamed3() => [
-      buildAudioAtom(),
-      buildAudioAtom(),
-    ];
-
-void checkUnnamed3(core.List<api.AudioAtom> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAudioAtom(o[0]);
-  checkAudioAtom(o[1]);
-}
-
-core.int buildCounterAudioStream = 0;
-api.AudioStream buildAudioStream() {
-  final o = api.AudioStream();
-  buildCounterAudioStream++;
-  if (buildCounterAudioStream < 3) {
-    o.bitrateBps = 42;
-    o.channelCount = 42;
-    o.channelLayout = buildUnnamed2();
-    o.codec = 'foo';
-    o.mapping = buildUnnamed3();
-    o.sampleRateHertz = 42;
-  }
-  buildCounterAudioStream--;
-  return o;
-}
-
-void checkAudioStream(api.AudioStream o) {
-  buildCounterAudioStream++;
-  if (buildCounterAudioStream < 3) {
-    unittest.expect(
-      o.bitrateBps!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.channelCount!,
-      unittest.equals(42),
-    );
-    checkUnnamed2(o.channelLayout!);
-    unittest.expect(
-      o.codec!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed3(o.mapping!);
-    unittest.expect(
-      o.sampleRateHertz!,
-      unittest.equals(42),
-    );
-  }
-  buildCounterAudioStream--;
-}
-
-core.int buildCounterColor = 0;
-api.Color buildColor() {
-  final o = api.Color();
-  buildCounterColor++;
-  if (buildCounterColor < 3) {
-    o.brightness = 42.0;
-    o.contrast = 42.0;
-    o.saturation = 42.0;
-  }
-  buildCounterColor--;
-  return o;
-}
-
-void checkColor(api.Color o) {
-  buildCounterColor++;
-  if (buildCounterColor < 3) {
-    unittest.expect(
-      o.brightness!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.contrast!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.saturation!,
-      unittest.equals(42.0),
-    );
-  }
-  buildCounterColor--;
-}
-
-core.int buildCounterCrop = 0;
-api.Crop buildCrop() {
-  final o = api.Crop();
-  buildCounterCrop++;
-  if (buildCounterCrop < 3) {
-    o.bottomPixels = 42;
-    o.leftPixels = 42;
-    o.rightPixels = 42;
-    o.topPixels = 42;
-  }
-  buildCounterCrop--;
-  return o;
-}
-
-void checkCrop(api.Crop o) {
-  buildCounterCrop++;
-  if (buildCounterCrop < 3) {
-    unittest.expect(
-      o.bottomPixels!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.leftPixels!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.rightPixels!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.topPixels!,
-      unittest.equals(42),
-    );
-  }
-  buildCounterCrop--;
-}
-
-core.int buildCounterDeblock = 0;
-api.Deblock buildDeblock() {
-  final o = api.Deblock();
-  buildCounterDeblock++;
-  if (buildCounterDeblock < 3) {
-    o.enabled = true;
-    o.strength = 42.0;
-  }
-  buildCounterDeblock--;
-  return o;
-}
-
-void checkDeblock(api.Deblock o) {
-  buildCounterDeblock++;
-  if (buildCounterDeblock < 3) {
-    unittest.expect(o.enabled!, unittest.isTrue);
-    unittest.expect(
-      o.strength!,
-      unittest.equals(42.0),
-    );
-  }
-  buildCounterDeblock--;
-}
-
-core.int buildCounterDenoise = 0;
-api.Denoise buildDenoise() {
-  final o = api.Denoise();
-  buildCounterDenoise++;
-  if (buildCounterDenoise < 3) {
-    o.strength = 42.0;
-    o.tune = 'foo';
-  }
-  buildCounterDenoise--;
-  return o;
-}
-
-void checkDenoise(api.Denoise o) {
-  buildCounterDenoise++;
-  if (buildCounterDenoise < 3) {
-    unittest.expect(
-      o.strength!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.tune!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterDenoise--;
-}
-
-core.List<core.String> buildUnnamed4() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed4(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterEditAtom = 0;
-api.EditAtom buildEditAtom() {
-  final o = api.EditAtom();
-  buildCounterEditAtom++;
-  if (buildCounterEditAtom < 3) {
-    o.endTimeOffset = 'foo';
-    o.inputs = buildUnnamed4();
-    o.key = 'foo';
-    o.startTimeOffset = 'foo';
-  }
-  buildCounterEditAtom--;
-  return o;
-}
-
-void checkEditAtom(api.EditAtom o) {
-  buildCounterEditAtom++;
-  if (buildCounterEditAtom < 3) {
-    unittest.expect(
-      o.endTimeOffset!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed4(o.inputs!);
-    unittest.expect(
-      o.key!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.startTimeOffset!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterEditAtom--;
-}
-
-core.int buildCounterElementaryStream = 0;
-api.ElementaryStream buildElementaryStream() {
-  final o = api.ElementaryStream();
-  buildCounterElementaryStream++;
-  if (buildCounterElementaryStream < 3) {
-    o.audioStream = buildAudioStream();
-    o.key = 'foo';
-    o.textStream = buildTextStream();
-    o.videoStream = buildVideoStream();
-  }
-  buildCounterElementaryStream--;
-  return o;
-}
-
-void checkElementaryStream(api.ElementaryStream o) {
-  buildCounterElementaryStream++;
-  if (buildCounterElementaryStream < 3) {
-    checkAudioStream(o.audioStream!);
-    unittest.expect(
-      o.key!,
-      unittest.equals('foo'),
-    );
-    checkTextStream(o.textStream!);
-    checkVideoStream(o.videoStream!);
-  }
-  buildCounterElementaryStream--;
-}
-
-core.int buildCounterEmpty = 0;
-api.Empty buildEmpty() {
-  final o = api.Empty();
-  buildCounterEmpty++;
-  if (buildCounterEmpty < 3) {}
-  buildCounterEmpty--;
-  return o;
-}
-
-void checkEmpty(api.Empty o) {
-  buildCounterEmpty++;
-  if (buildCounterEmpty < 3) {}
-  buildCounterEmpty--;
-}
-
-core.int buildCounterEncryption = 0;
-api.Encryption buildEncryption() {
-  final o = api.Encryption();
-  buildCounterEncryption++;
-  if (buildCounterEncryption < 3) {
-    o.aes128 = buildAes128Encryption();
-    o.iv = 'foo';
-    o.key = 'foo';
-    o.mpegCenc = buildMpegCommonEncryption();
-    o.sampleAes = buildSampleAesEncryption();
-  }
-  buildCounterEncryption--;
-  return o;
-}
-
-void checkEncryption(api.Encryption o) {
-  buildCounterEncryption++;
-  if (buildCounterEncryption < 3) {
-    checkAes128Encryption(o.aes128!);
-    unittest.expect(
-      o.iv!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.key!,
-      unittest.equals('foo'),
-    );
-    checkMpegCommonEncryption(o.mpegCenc!);
-    checkSampleAesEncryption(o.sampleAes!);
-  }
-  buildCounterEncryption--;
-}
-
-core.int buildCounterFailureDetail = 0;
-api.FailureDetail buildFailureDetail() {
-  final o = api.FailureDetail();
-  buildCounterFailureDetail++;
-  if (buildCounterFailureDetail < 3) {
-    o.description = 'foo';
-  }
-  buildCounterFailureDetail--;
-  return o;
-}
-
-void checkFailureDetail(api.FailureDetail o) {
-  buildCounterFailureDetail++;
-  if (buildCounterFailureDetail < 3) {
-    unittest.expect(
-      o.description!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterFailureDetail--;
-}
-
-core.int buildCounterImage = 0;
-api.Image buildImage() {
-  final o = api.Image();
-  buildCounterImage++;
-  if (buildCounterImage < 3) {
-    o.alpha = 42.0;
-    o.resolution = buildNormalizedCoordinate();
-    o.uri = 'foo';
-  }
-  buildCounterImage--;
-  return o;
-}
-
-void checkImage(api.Image o) {
-  buildCounterImage++;
-  if (buildCounterImage < 3) {
-    unittest.expect(
-      o.alpha!,
-      unittest.equals(42.0),
-    );
-    checkNormalizedCoordinate(o.resolution!);
-    unittest.expect(
-      o.uri!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterImage--;
-}
-
-core.int buildCounterInput = 0;
-api.Input buildInput() {
-  final o = api.Input();
-  buildCounterInput++;
-  if (buildCounterInput < 3) {
-    o.key = 'foo';
-    o.preprocessingConfig = buildPreprocessingConfig();
-    o.uri = 'foo';
-  }
-  buildCounterInput--;
-  return o;
-}
-
-void checkInput(api.Input o) {
-  buildCounterInput++;
-  if (buildCounterInput < 3) {
-    unittest.expect(
-      o.key!,
-      unittest.equals('foo'),
-    );
-    checkPreprocessingConfig(o.preprocessingConfig!);
-    unittest.expect(
-      o.uri!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterInput--;
-}
-
-core.List<api.FailureDetail> buildUnnamed5() => [
-      buildFailureDetail(),
-      buildFailureDetail(),
-    ];
-
-void checkUnnamed5(core.List<api.FailureDetail> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkFailureDetail(o[0]);
-  checkFailureDetail(o[1]);
-}
-
-core.int buildCounterJob = 0;
-api.Job buildJob() {
-  final o = api.Job();
-  buildCounterJob++;
-  if (buildCounterJob < 3) {
-    o.config = buildJobConfig();
-    o.createTime = 'foo';
-    o.endTime = 'foo';
-    o.failureDetails = buildUnnamed5();
-    o.failureReason = 'foo';
-    o.inputUri = 'foo';
-    o.name = 'foo';
-    o.originUri = buildOriginUri();
-    o.outputUri = 'foo';
-    o.priority = 42;
-    o.progress = buildProgress();
-    o.startTime = 'foo';
-    o.state = 'foo';
-    o.templateId = 'foo';
-    o.ttlAfterCompletionDays = 42;
-  }
-  buildCounterJob--;
-  return o;
-}
-
-void checkJob(api.Job o) {
-  buildCounterJob++;
-  if (buildCounterJob < 3) {
-    checkJobConfig(o.config!);
-    unittest.expect(
-      o.createTime!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.endTime!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed5(o.failureDetails!);
-    unittest.expect(
-      o.failureReason!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.inputUri!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.name!,
-      unittest.equals('foo'),
-    );
-    checkOriginUri(o.originUri!);
-    unittest.expect(
-      o.outputUri!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.priority!,
-      unittest.equals(42),
-    );
-    checkProgress(o.progress!);
-    unittest.expect(
-      o.startTime!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.state!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.templateId!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.ttlAfterCompletionDays!,
-      unittest.equals(42),
-    );
-  }
-  buildCounterJob--;
-}
-
-core.List<api.AdBreak> buildUnnamed6() => [
-      buildAdBreak(),
-      buildAdBreak(),
-    ];
-
-void checkUnnamed6(core.List<api.AdBreak> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAdBreak(o[0]);
-  checkAdBreak(o[1]);
-}
-
-core.List<api.EditAtom> buildUnnamed7() => [
-      buildEditAtom(),
-      buildEditAtom(),
-    ];
-
-void checkUnnamed7(core.List<api.EditAtom> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkEditAtom(o[0]);
-  checkEditAtom(o[1]);
-}
-
-core.List<api.ElementaryStream> buildUnnamed8() => [
-      buildElementaryStream(),
-      buildElementaryStream(),
-    ];
-
-void checkUnnamed8(core.List<api.ElementaryStream> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkElementaryStream(o[0]);
-  checkElementaryStream(o[1]);
-}
-
-core.List<api.Input> buildUnnamed9() => [
-      buildInput(),
-      buildInput(),
-    ];
-
-void checkUnnamed9(core.List<api.Input> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkInput(o[0]);
-  checkInput(o[1]);
-}
-
-core.List<api.Manifest> buildUnnamed10() => [
-      buildManifest(),
-      buildManifest(),
-    ];
-
-void checkUnnamed10(core.List<api.Manifest> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkManifest(o[0]);
-  checkManifest(o[1]);
-}
-
-core.List<api.MuxStream> buildUnnamed11() => [
-      buildMuxStream(),
-      buildMuxStream(),
-    ];
-
-void checkUnnamed11(core.List<api.MuxStream> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkMuxStream(o[0]);
-  checkMuxStream(o[1]);
-}
-
-core.List<api.Overlay> buildUnnamed12() => [
-      buildOverlay(),
-      buildOverlay(),
-    ];
-
-void checkUnnamed12(core.List<api.Overlay> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkOverlay(o[0]);
-  checkOverlay(o[1]);
-}
-
-core.List<api.SpriteSheet> buildUnnamed13() => [
-      buildSpriteSheet(),
-      buildSpriteSheet(),
-    ];
-
-void checkUnnamed13(core.List<api.SpriteSheet> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkSpriteSheet(o[0]);
-  checkSpriteSheet(o[1]);
-}
-
-core.int buildCounterJobConfig = 0;
-api.JobConfig buildJobConfig() {
-  final o = api.JobConfig();
-  buildCounterJobConfig++;
-  if (buildCounterJobConfig < 3) {
-    o.adBreaks = buildUnnamed6();
-    o.editList = buildUnnamed7();
-    o.elementaryStreams = buildUnnamed8();
-    o.inputs = buildUnnamed9();
-    o.manifests = buildUnnamed10();
-    o.muxStreams = buildUnnamed11();
-    o.output = buildOutput();
-    o.overlays = buildUnnamed12();
-    o.pubsubDestination = buildPubsubDestination();
-    o.spriteSheets = buildUnnamed13();
-  }
-  buildCounterJobConfig--;
-  return o;
-}
-
-void checkJobConfig(api.JobConfig o) {
-  buildCounterJobConfig++;
-  if (buildCounterJobConfig < 3) {
-    checkUnnamed6(o.adBreaks!);
-    checkUnnamed7(o.editList!);
-    checkUnnamed8(o.elementaryStreams!);
-    checkUnnamed9(o.inputs!);
-    checkUnnamed10(o.manifests!);
-    checkUnnamed11(o.muxStreams!);
-    checkOutput(o.output!);
-    checkUnnamed12(o.overlays!);
-    checkPubsubDestination(o.pubsubDestination!);
-    checkUnnamed13(o.spriteSheets!);
-  }
-  buildCounterJobConfig--;
-}
-
-core.int buildCounterJobTemplate = 0;
-api.JobTemplate buildJobTemplate() {
-  final o = api.JobTemplate();
-  buildCounterJobTemplate++;
-  if (buildCounterJobTemplate < 3) {
-    o.config = buildJobConfig();
-    o.name = 'foo';
-  }
-  buildCounterJobTemplate--;
-  return o;
-}
-
-void checkJobTemplate(api.JobTemplate o) {
-  buildCounterJobTemplate++;
-  if (buildCounterJobTemplate < 3) {
-    checkJobConfig(o.config!);
-    unittest.expect(
-      o.name!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterJobTemplate--;
-}
-
-core.List<api.JobTemplate> buildUnnamed14() => [
-      buildJobTemplate(),
-      buildJobTemplate(),
-    ];
-
-void checkUnnamed14(core.List<api.JobTemplate> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkJobTemplate(o[0]);
-  checkJobTemplate(o[1]);
-}
-
-core.int buildCounterListJobTemplatesResponse = 0;
-api.ListJobTemplatesResponse buildListJobTemplatesResponse() {
-  final o = api.ListJobTemplatesResponse();
-  buildCounterListJobTemplatesResponse++;
-  if (buildCounterListJobTemplatesResponse < 3) {
-    o.jobTemplates = buildUnnamed14();
-    o.nextPageToken = 'foo';
-  }
-  buildCounterListJobTemplatesResponse--;
-  return o;
-}
-
-void checkListJobTemplatesResponse(api.ListJobTemplatesResponse o) {
-  buildCounterListJobTemplatesResponse++;
-  if (buildCounterListJobTemplatesResponse < 3) {
-    checkUnnamed14(o.jobTemplates!);
-    unittest.expect(
-      o.nextPageToken!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterListJobTemplatesResponse--;
-}
-
-core.List<api.Job> buildUnnamed15() => [
-      buildJob(),
-      buildJob(),
-    ];
-
-void checkUnnamed15(core.List<api.Job> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkJob(o[0]);
-  checkJob(o[1]);
-}
-
-core.int buildCounterListJobsResponse = 0;
-api.ListJobsResponse buildListJobsResponse() {
-  final o = api.ListJobsResponse();
-  buildCounterListJobsResponse++;
-  if (buildCounterListJobsResponse < 3) {
-    o.jobs = buildUnnamed15();
-    o.nextPageToken = 'foo';
-  }
-  buildCounterListJobsResponse--;
-  return o;
-}
-
-void checkListJobsResponse(api.ListJobsResponse o) {
-  buildCounterListJobsResponse++;
-  if (buildCounterListJobsResponse < 3) {
-    checkUnnamed15(o.jobs!);
-    unittest.expect(
-      o.nextPageToken!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterListJobsResponse--;
-}
-
-core.List<core.String> buildUnnamed16() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed16(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterManifest = 0;
-api.Manifest buildManifest() {
-  final o = api.Manifest();
-  buildCounterManifest++;
-  if (buildCounterManifest < 3) {
-    o.fileName = 'foo';
-    o.muxStreams = buildUnnamed16();
-    o.type = 'foo';
-  }
-  buildCounterManifest--;
-  return o;
-}
-
-void checkManifest(api.Manifest o) {
-  buildCounterManifest++;
-  if (buildCounterManifest < 3) {
-    unittest.expect(
-      o.fileName!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed16(o.muxStreams!);
-    unittest.expect(
-      o.type!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterManifest--;
-}
-
-core.int buildCounterMpegCommonEncryption = 0;
-api.MpegCommonEncryption buildMpegCommonEncryption() {
-  final o = api.MpegCommonEncryption();
-  buildCounterMpegCommonEncryption++;
-  if (buildCounterMpegCommonEncryption < 3) {
-    o.keyId = 'foo';
-    o.scheme = 'foo';
-  }
-  buildCounterMpegCommonEncryption--;
-  return o;
-}
-
-void checkMpegCommonEncryption(api.MpegCommonEncryption o) {
-  buildCounterMpegCommonEncryption++;
-  if (buildCounterMpegCommonEncryption < 3) {
-    unittest.expect(
-      o.keyId!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.scheme!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterMpegCommonEncryption--;
-}
-
-core.List<core.String> buildUnnamed17() => [
-      'foo',
-      'foo',
-    ];
-
-void checkUnnamed17(core.List<core.String> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  unittest.expect(
-    o[0],
-    unittest.equals('foo'),
-  );
-  unittest.expect(
-    o[1],
-    unittest.equals('foo'),
-  );
-}
-
-core.int buildCounterMuxStream = 0;
-api.MuxStream buildMuxStream() {
-  final o = api.MuxStream();
-  buildCounterMuxStream++;
-  if (buildCounterMuxStream < 3) {
-    o.container = 'foo';
-    o.elementaryStreams = buildUnnamed17();
-    o.encryption = buildEncryption();
-    o.fileName = 'foo';
-    o.key = 'foo';
-    o.segmentSettings = buildSegmentSettings();
-  }
-  buildCounterMuxStream--;
-  return o;
-}
-
-void checkMuxStream(api.MuxStream o) {
-  buildCounterMuxStream++;
-  if (buildCounterMuxStream < 3) {
-    unittest.expect(
-      o.container!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed17(o.elementaryStreams!);
-    checkEncryption(o.encryption!);
-    unittest.expect(
-      o.fileName!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.key!,
-      unittest.equals('foo'),
-    );
-    checkSegmentSettings(o.segmentSettings!);
-  }
-  buildCounterMuxStream--;
-}
-
-core.int buildCounterNormalizedCoordinate = 0;
-api.NormalizedCoordinate buildNormalizedCoordinate() {
-  final o = api.NormalizedCoordinate();
-  buildCounterNormalizedCoordinate++;
-  if (buildCounterNormalizedCoordinate < 3) {
-    o.x = 42.0;
-    o.y = 42.0;
-  }
-  buildCounterNormalizedCoordinate--;
-  return o;
-}
-
-void checkNormalizedCoordinate(api.NormalizedCoordinate o) {
-  buildCounterNormalizedCoordinate++;
-  if (buildCounterNormalizedCoordinate < 3) {
-    unittest.expect(
-      o.x!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.y!,
-      unittest.equals(42.0),
-    );
-  }
-  buildCounterNormalizedCoordinate--;
-}
-
-core.int buildCounterOriginUri = 0;
-api.OriginUri buildOriginUri() {
-  final o = api.OriginUri();
-  buildCounterOriginUri++;
-  if (buildCounterOriginUri < 3) {
-    o.dash = 'foo';
-    o.hls = 'foo';
-  }
-  buildCounterOriginUri--;
-  return o;
-}
-
-void checkOriginUri(api.OriginUri o) {
-  buildCounterOriginUri++;
-  if (buildCounterOriginUri < 3) {
-    unittest.expect(
-      o.dash!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.hls!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterOriginUri--;
-}
-
-core.int buildCounterOutput = 0;
-api.Output buildOutput() {
-  final o = api.Output();
-  buildCounterOutput++;
-  if (buildCounterOutput < 3) {
-    o.uri = 'foo';
-  }
-  buildCounterOutput--;
-  return o;
-}
-
-void checkOutput(api.Output o) {
-  buildCounterOutput++;
-  if (buildCounterOutput < 3) {
-    unittest.expect(
-      o.uri!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterOutput--;
-}
-
-core.List<api.Animation> buildUnnamed18() => [
-      buildAnimation(),
-      buildAnimation(),
-    ];
-
-void checkUnnamed18(core.List<api.Animation> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkAnimation(o[0]);
-  checkAnimation(o[1]);
-}
-
-core.int buildCounterOverlay = 0;
-api.Overlay buildOverlay() {
-  final o = api.Overlay();
-  buildCounterOverlay++;
-  if (buildCounterOverlay < 3) {
-    o.animations = buildUnnamed18();
-    o.image = buildImage();
-  }
-  buildCounterOverlay--;
-  return o;
-}
-
-void checkOverlay(api.Overlay o) {
-  buildCounterOverlay++;
-  if (buildCounterOverlay < 3) {
-    checkUnnamed18(o.animations!);
-    checkImage(o.image!);
-  }
-  buildCounterOverlay--;
-}
-
-core.int buildCounterPad = 0;
-api.Pad buildPad() {
-  final o = api.Pad();
-  buildCounterPad++;
-  if (buildCounterPad < 3) {
-    o.bottomPixels = 42;
-    o.leftPixels = 42;
-    o.rightPixels = 42;
-    o.topPixels = 42;
-  }
-  buildCounterPad--;
-  return o;
-}
-
-void checkPad(api.Pad o) {
-  buildCounterPad++;
-  if (buildCounterPad < 3) {
-    unittest.expect(
-      o.bottomPixels!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.leftPixels!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.rightPixels!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.topPixels!,
-      unittest.equals(42),
-    );
-  }
-  buildCounterPad--;
-}
-
-core.int buildCounterPreprocessingConfig = 0;
-api.PreprocessingConfig buildPreprocessingConfig() {
-  final o = api.PreprocessingConfig();
-  buildCounterPreprocessingConfig++;
-  if (buildCounterPreprocessingConfig < 3) {
-    o.audio = buildAudio();
-    o.color = buildColor();
-    o.crop = buildCrop();
-    o.deblock = buildDeblock();
-    o.denoise = buildDenoise();
-    o.pad = buildPad();
-  }
-  buildCounterPreprocessingConfig--;
-  return o;
-}
-
-void checkPreprocessingConfig(api.PreprocessingConfig o) {
-  buildCounterPreprocessingConfig++;
-  if (buildCounterPreprocessingConfig < 3) {
-    checkAudio(o.audio!);
-    checkColor(o.color!);
-    checkCrop(o.crop!);
-    checkDeblock(o.deblock!);
-    checkDenoise(o.denoise!);
-    checkPad(o.pad!);
-  }
-  buildCounterPreprocessingConfig--;
-}
-
-core.int buildCounterProgress = 0;
-api.Progress buildProgress() {
-  final o = api.Progress();
-  buildCounterProgress++;
-  if (buildCounterProgress < 3) {
-    o.analyzed = 42.0;
-    o.encoded = 42.0;
-    o.notified = 42.0;
-    o.uploaded = 42.0;
-  }
-  buildCounterProgress--;
-  return o;
-}
-
-void checkProgress(api.Progress o) {
-  buildCounterProgress++;
-  if (buildCounterProgress < 3) {
-    unittest.expect(
-      o.analyzed!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.encoded!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.notified!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.uploaded!,
-      unittest.equals(42.0),
-    );
-  }
-  buildCounterProgress--;
-}
-
-core.int buildCounterPubsubDestination = 0;
-api.PubsubDestination buildPubsubDestination() {
-  final o = api.PubsubDestination();
-  buildCounterPubsubDestination++;
-  if (buildCounterPubsubDestination < 3) {
-    o.topic = 'foo';
-  }
-  buildCounterPubsubDestination--;
-  return o;
-}
-
-void checkPubsubDestination(api.PubsubDestination o) {
-  buildCounterPubsubDestination++;
-  if (buildCounterPubsubDestination < 3) {
-    unittest.expect(
-      o.topic!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterPubsubDestination--;
-}
-
-core.int buildCounterSampleAesEncryption = 0;
-api.SampleAesEncryption buildSampleAesEncryption() {
-  final o = api.SampleAesEncryption();
-  buildCounterSampleAesEncryption++;
-  if (buildCounterSampleAesEncryption < 3) {
-    o.keyUri = 'foo';
-  }
-  buildCounterSampleAesEncryption--;
-  return o;
-}
-
-void checkSampleAesEncryption(api.SampleAesEncryption o) {
-  buildCounterSampleAesEncryption++;
-  if (buildCounterSampleAesEncryption < 3) {
-    unittest.expect(
-      o.keyUri!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterSampleAesEncryption--;
-}
-
-core.int buildCounterSegmentSettings = 0;
-api.SegmentSettings buildSegmentSettings() {
-  final o = api.SegmentSettings();
-  buildCounterSegmentSettings++;
-  if (buildCounterSegmentSettings < 3) {
-    o.individualSegments = true;
-    o.segmentDuration = 'foo';
-  }
-  buildCounterSegmentSettings--;
-  return o;
-}
-
-void checkSegmentSettings(api.SegmentSettings o) {
-  buildCounterSegmentSettings++;
-  if (buildCounterSegmentSettings < 3) {
-    unittest.expect(o.individualSegments!, unittest.isTrue);
-    unittest.expect(
-      o.segmentDuration!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterSegmentSettings--;
-}
-
-core.int buildCounterSpriteSheet = 0;
-api.SpriteSheet buildSpriteSheet() {
-  final o = api.SpriteSheet();
-  buildCounterSpriteSheet++;
-  if (buildCounterSpriteSheet < 3) {
-    o.columnCount = 42;
-    o.endTimeOffset = 'foo';
-    o.filePrefix = 'foo';
-    o.format = 'foo';
-    o.interval = 'foo';
-    o.quality = 42;
-    o.rowCount = 42;
-    o.spriteHeightPixels = 42;
-    o.spriteWidthPixels = 42;
-    o.startTimeOffset = 'foo';
-    o.totalCount = 42;
-  }
-  buildCounterSpriteSheet--;
-  return o;
-}
-
-void checkSpriteSheet(api.SpriteSheet o) {
-  buildCounterSpriteSheet++;
-  if (buildCounterSpriteSheet < 3) {
-    unittest.expect(
-      o.columnCount!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.endTimeOffset!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.filePrefix!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.format!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.interval!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.quality!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.rowCount!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.spriteHeightPixels!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.spriteWidthPixels!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.startTimeOffset!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.totalCount!,
-      unittest.equals(42),
-    );
-  }
-  buildCounterSpriteSheet--;
-}
-
-core.List<api.TextInput> buildUnnamed19() => [
-      buildTextInput(),
-      buildTextInput(),
-    ];
-
-void checkUnnamed19(core.List<api.TextInput> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkTextInput(o[0]);
-  checkTextInput(o[1]);
-}
-
-core.int buildCounterTextAtom = 0;
-api.TextAtom buildTextAtom() {
-  final o = api.TextAtom();
-  buildCounterTextAtom++;
-  if (buildCounterTextAtom < 3) {
-    o.inputs = buildUnnamed19();
-    o.key = 'foo';
-  }
-  buildCounterTextAtom--;
-  return o;
-}
-
-void checkTextAtom(api.TextAtom o) {
-  buildCounterTextAtom++;
-  if (buildCounterTextAtom < 3) {
-    checkUnnamed19(o.inputs!);
-    unittest.expect(
-      o.key!,
-      unittest.equals('foo'),
-    );
-  }
-  buildCounterTextAtom--;
-}
-
-core.int buildCounterTextInput = 0;
-api.TextInput buildTextInput() {
-  final o = api.TextInput();
-  buildCounterTextInput++;
-  if (buildCounterTextInput < 3) {
-    o.key = 'foo';
-    o.track = 42;
-  }
-  buildCounterTextInput--;
-  return o;
-}
-
-void checkTextInput(api.TextInput o) {
-  buildCounterTextInput++;
-  if (buildCounterTextInput < 3) {
-    unittest.expect(
-      o.key!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.track!,
-      unittest.equals(42),
-    );
-  }
-  buildCounterTextInput--;
-}
-
-core.List<api.TextAtom> buildUnnamed20() => [
-      buildTextAtom(),
-      buildTextAtom(),
-    ];
-
-void checkUnnamed20(core.List<api.TextAtom> o) {
-  unittest.expect(o, unittest.hasLength(2));
-  checkTextAtom(o[0]);
-  checkTextAtom(o[1]);
-}
-
-core.int buildCounterTextStream = 0;
-api.TextStream buildTextStream() {
-  final o = api.TextStream();
-  buildCounterTextStream++;
-  if (buildCounterTextStream < 3) {
-    o.codec = 'foo';
-    o.languageCode = 'foo';
-    o.mapping = buildUnnamed20();
-  }
-  buildCounterTextStream--;
-  return o;
-}
-
-void checkTextStream(api.TextStream o) {
-  buildCounterTextStream++;
-  if (buildCounterTextStream < 3) {
-    unittest.expect(
-      o.codec!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.languageCode!,
-      unittest.equals('foo'),
-    );
-    checkUnnamed20(o.mapping!);
-  }
-  buildCounterTextStream--;
-}
-
-core.int buildCounterVideoStream = 0;
-api.VideoStream buildVideoStream() {
-  final o = api.VideoStream();
-  buildCounterVideoStream++;
-  if (buildCounterVideoStream < 3) {
-    o.allowOpenGop = true;
-    o.aqStrength = 42.0;
-    o.bFrameCount = 42;
-    o.bPyramid = true;
-    o.bitrateBps = 42;
-    o.codec = 'foo';
-    o.crfLevel = 42;
-    o.enableTwoPass = true;
-    o.entropyCoder = 'foo';
-    o.frameRate = 42.0;
-    o.gopDuration = 'foo';
-    o.gopFrameCount = 42;
-    o.heightPixels = 42;
-    o.pixelFormat = 'foo';
-    o.preset = 'foo';
-    o.profile = 'foo';
-    o.rateControlMode = 'foo';
-    o.tune = 'foo';
-    o.vbvFullnessBits = 42;
-    o.vbvSizeBits = 42;
-    o.widthPixels = 42;
-  }
-  buildCounterVideoStream--;
-  return o;
-}
-
-void checkVideoStream(api.VideoStream o) {
-  buildCounterVideoStream++;
-  if (buildCounterVideoStream < 3) {
-    unittest.expect(o.allowOpenGop!, unittest.isTrue);
-    unittest.expect(
-      o.aqStrength!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.bFrameCount!,
-      unittest.equals(42),
-    );
-    unittest.expect(o.bPyramid!, unittest.isTrue);
-    unittest.expect(
-      o.bitrateBps!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.codec!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.crfLevel!,
-      unittest.equals(42),
-    );
-    unittest.expect(o.enableTwoPass!, unittest.isTrue);
-    unittest.expect(
-      o.entropyCoder!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.frameRate!,
-      unittest.equals(42.0),
-    );
-    unittest.expect(
-      o.gopDuration!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.gopFrameCount!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.heightPixels!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.pixelFormat!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.preset!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.profile!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.rateControlMode!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.tune!,
-      unittest.equals('foo'),
-    );
-    unittest.expect(
-      o.vbvFullnessBits!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.vbvSizeBits!,
-      unittest.equals(42),
-    );
-    unittest.expect(
-      o.widthPixels!,
-      unittest.equals(42),
-    );
-  }
-  buildCounterVideoStream--;
-}
-
-void main() {
-  unittest.group('obj-schema-AdBreak', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAdBreak();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.AdBreak.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkAdBreak(od);
-    });
-  });
-
-  unittest.group('obj-schema-Aes128Encryption', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAes128Encryption();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.Aes128Encryption.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkAes128Encryption(od);
-    });
-  });
-
-  unittest.group('obj-schema-Animation', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAnimation();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Animation.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkAnimation(od);
-    });
-  });
-
-  unittest.group('obj-schema-AnimationEnd', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAnimationEnd();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.AnimationEnd.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkAnimationEnd(od);
-    });
-  });
-
-  unittest.group('obj-schema-AnimationFade', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAnimationFade();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.AnimationFade.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkAnimationFade(od);
-    });
-  });
-
-  unittest.group('obj-schema-AnimationStatic', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAnimationStatic();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.AnimationStatic.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkAnimationStatic(od);
-    });
-  });
-
-  unittest.group('obj-schema-Audio', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAudio();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Audio.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkAudio(od);
-    });
-  });
-
-  unittest.group('obj-schema-AudioAtom', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAudioAtom();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.AudioAtom.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkAudioAtom(od);
-    });
-  });
-
-  unittest.group('obj-schema-AudioChannel', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAudioChannel();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.AudioChannel.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkAudioChannel(od);
-    });
-  });
-
-  unittest.group('obj-schema-AudioChannelInput', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAudioChannelInput();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.AudioChannelInput.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkAudioChannelInput(od);
-    });
-  });
-
-  unittest.group('obj-schema-AudioStream', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildAudioStream();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.AudioStream.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkAudioStream(od);
-    });
-  });
-
-  unittest.group('obj-schema-Color', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildColor();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Color.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkColor(od);
-    });
-  });
-
-  unittest.group('obj-schema-Crop', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildCrop();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Crop.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkCrop(od);
-    });
-  });
-
-  unittest.group('obj-schema-Deblock', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildDeblock();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Deblock.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkDeblock(od);
-    });
-  });
-
-  unittest.group('obj-schema-Denoise', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildDenoise();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Denoise.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkDenoise(od);
-    });
-  });
-
-  unittest.group('obj-schema-EditAtom', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildEditAtom();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.EditAtom.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkEditAtom(od);
-    });
-  });
-
-  unittest.group('obj-schema-ElementaryStream', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildElementaryStream();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.ElementaryStream.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkElementaryStream(od);
-    });
-  });
-
-  unittest.group('obj-schema-Empty', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildEmpty();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Empty.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkEmpty(od);
-    });
-  });
-
-  unittest.group('obj-schema-Encryption', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildEncryption();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Encryption.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkEncryption(od);
-    });
-  });
-
-  unittest.group('obj-schema-FailureDetail', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildFailureDetail();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.FailureDetail.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkFailureDetail(od);
-    });
-  });
-
-  unittest.group('obj-schema-Image', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildImage();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Image.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkImage(od);
-    });
-  });
-
-  unittest.group('obj-schema-Input', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildInput();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Input.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkInput(od);
-    });
-  });
-
-  unittest.group('obj-schema-Job', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildJob();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.Job.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkJob(od);
-    });
-  });
-
-  unittest.group('obj-schema-JobConfig', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildJobConfig();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.JobConfig.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkJobConfig(od);
-    });
-  });
-
-  unittest.group('obj-schema-JobTemplate', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildJobTemplate();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.JobTemplate.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkJobTemplate(od);
-    });
-  });
-
-  unittest.group('obj-schema-ListJobTemplatesResponse', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildListJobTemplatesResponse();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.ListJobTemplatesResponse.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkListJobTemplatesResponse(od);
-    });
-  });
-
-  unittest.group('obj-schema-ListJobsResponse', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildListJobsResponse();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.ListJobsResponse.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkListJobsResponse(od);
-    });
-  });
-
-  unittest.group('obj-schema-Manifest', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildManifest();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Manifest.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkManifest(od);
-    });
-  });
-
-  unittest.group('obj-schema-MpegCommonEncryption', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildMpegCommonEncryption();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.MpegCommonEncryption.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkMpegCommonEncryption(od);
-    });
-  });
-
-  unittest.group('obj-schema-MuxStream', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildMuxStream();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.MuxStream.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkMuxStream(od);
-    });
-  });
-
-  unittest.group('obj-schema-NormalizedCoordinate', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildNormalizedCoordinate();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.NormalizedCoordinate.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkNormalizedCoordinate(od);
-    });
-  });
-
-  unittest.group('obj-schema-OriginUri', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildOriginUri();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.OriginUri.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkOriginUri(od);
-    });
-  });
-
-  unittest.group('obj-schema-Output', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildOutput();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Output.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkOutput(od);
-    });
-  });
-
-  unittest.group('obj-schema-Overlay', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildOverlay();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Overlay.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkOverlay(od);
-    });
-  });
-
-  unittest.group('obj-schema-Pad', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildPad();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.Pad.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkPad(od);
-    });
-  });
-
-  unittest.group('obj-schema-PreprocessingConfig', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildPreprocessingConfig();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.PreprocessingConfig.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkPreprocessingConfig(od);
-    });
-  });
-
-  unittest.group('obj-schema-Progress', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildProgress();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.Progress.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkProgress(od);
-    });
-  });
-
-  unittest.group('obj-schema-PubsubDestination', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildPubsubDestination();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.PubsubDestination.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkPubsubDestination(od);
-    });
-  });
-
-  unittest.group('obj-schema-SampleAesEncryption', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildSampleAesEncryption();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.SampleAesEncryption.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkSampleAesEncryption(od);
-    });
-  });
-
-  unittest.group('obj-schema-SegmentSettings', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildSegmentSettings();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.SegmentSettings.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkSegmentSettings(od);
-    });
-  });
-
-  unittest.group('obj-schema-SpriteSheet', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildSpriteSheet();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.SpriteSheet.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkSpriteSheet(od);
-    });
-  });
-
-  unittest.group('obj-schema-TextAtom', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildTextAtom();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.TextAtom.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkTextAtom(od);
-    });
-  });
-
-  unittest.group('obj-schema-TextInput', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildTextInput();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.TextInput.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkTextInput(od);
-    });
-  });
-
-  unittest.group('obj-schema-TextStream', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildTextStream();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od =
-          api.TextStream.fromJson(oJson as core.Map<core.String, core.dynamic>);
-      checkTextStream(od);
-    });
-  });
-
-  unittest.group('obj-schema-VideoStream', () {
-    unittest.test('to-json--from-json', () async {
-      final o = buildVideoStream();
-      final oJson = convert.jsonDecode(convert.jsonEncode(o));
-      final od = api.VideoStream.fromJson(
-          oJson as core.Map<core.String, core.dynamic>);
-      checkVideoStream(od);
-    });
-  });
-
-  unittest.group('resource-ProjectsLocationsJobTemplatesResource', () {
-    unittest.test('method--create', () async {
-      final mock = HttpServerMock();
-      final res = api.TranscoderApi(mock).projects.locations.jobTemplates;
-      final arg_request = buildJobTemplate();
-      final arg_parent = 'foo';
-      final arg_jobTemplateId = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final obj = api.JobTemplate.fromJson(
-            json as core.Map<core.String, core.dynamic>);
-        checkJobTemplate(obj);
-
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 8),
-          unittest.equals('v1beta1/'),
-        );
-        pathOffset += 8;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          queryMap['jobTemplateId']!.first,
-          unittest.equals(arg_jobTemplateId),
-        );
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildJobTemplate());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response = await res.create(arg_request, arg_parent,
-          jobTemplateId: arg_jobTemplateId, $fields: arg_$fields);
-      checkJobTemplate(response as api.JobTemplate);
-    });
-
-    unittest.test('method--delete', () async {
-      final mock = HttpServerMock();
-      final res = api.TranscoderApi(mock).projects.locations.jobTemplates;
-      final arg_name = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 8),
-          unittest.equals('v1beta1/'),
-        );
-        pathOffset += 8;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildEmpty());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response = await res.delete(arg_name, $fields: arg_$fields);
-      checkEmpty(response as api.Empty);
-    });
-
-    unittest.test('method--get', () async {
-      final mock = HttpServerMock();
-      final res = api.TranscoderApi(mock).projects.locations.jobTemplates;
-      final arg_name = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 8),
-          unittest.equals('v1beta1/'),
-        );
-        pathOffset += 8;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildJobTemplate());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response = await res.get(arg_name, $fields: arg_$fields);
-      checkJobTemplate(response as api.JobTemplate);
-    });
-
-    unittest.test('method--list', () async {
-      final mock = HttpServerMock();
-      final res = api.TranscoderApi(mock).projects.locations.jobTemplates;
-      final arg_parent = 'foo';
-      final arg_pageSize = 42;
-      final arg_pageToken = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 8),
-          unittest.equals('v1beta1/'),
-        );
-        pathOffset += 8;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          core.int.parse(queryMap['pageSize']!.first),
-          unittest.equals(arg_pageSize),
-        );
-        unittest.expect(
-          queryMap['pageToken']!.first,
-          unittest.equals(arg_pageToken),
-        );
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildListJobTemplatesResponse());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response = await res.list(arg_parent,
-          pageSize: arg_pageSize,
-          pageToken: arg_pageToken,
-          $fields: arg_$fields);
-      checkListJobTemplatesResponse(response as api.ListJobTemplatesResponse);
-    });
-  });
-
-  unittest.group('resource-ProjectsLocationsJobsResource', () {
-    unittest.test('method--create', () async {
-      final mock = HttpServerMock();
-      final res = api.TranscoderApi(mock).projects.locations.jobs;
-      final arg_request = buildJob();
-      final arg_parent = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final obj =
-            api.Job.fromJson(json as core.Map<core.String, core.dynamic>);
-        checkJob(obj);
-
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 8),
-          unittest.equals('v1beta1/'),
-        );
-        pathOffset += 8;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildJob());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response =
-          await res.create(arg_request, arg_parent, $fields: arg_$fields);
-      checkJob(response as api.Job);
-    });
-
-    unittest.test('method--delete', () async {
-      final mock = HttpServerMock();
-      final res = api.TranscoderApi(mock).projects.locations.jobs;
-      final arg_name = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 8),
-          unittest.equals('v1beta1/'),
-        );
-        pathOffset += 8;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildEmpty());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response = await res.delete(arg_name, $fields: arg_$fields);
-      checkEmpty(response as api.Empty);
-    });
-
-    unittest.test('method--get', () async {
-      final mock = HttpServerMock();
-      final res = api.TranscoderApi(mock).projects.locations.jobs;
-      final arg_name = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 8),
-          unittest.equals('v1beta1/'),
-        );
-        pathOffset += 8;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildJob());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response = await res.get(arg_name, $fields: arg_$fields);
-      checkJob(response as api.Job);
-    });
-
-    unittest.test('method--list', () async {
-      final mock = HttpServerMock();
-      final res = api.TranscoderApi(mock).projects.locations.jobs;
-      final arg_parent = 'foo';
-      final arg_pageSize = 42;
-      final arg_pageToken = 'foo';
-      final arg_$fields = 'foo';
-      mock.register(unittest.expectAsync2((http.BaseRequest req, json) {
-        final path = (req.url).path;
-        var pathOffset = 0;
-        core.int index;
-        core.String subPart;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 1),
-          unittest.equals('/'),
-        );
-        pathOffset += 1;
-        unittest.expect(
-          path.substring(pathOffset, pathOffset + 8),
-          unittest.equals('v1beta1/'),
-        );
-        pathOffset += 8;
-        // NOTE: We cannot test reserved expansions due to the inability to reverse the operation;
-
-        final query = (req.url).query;
-        var queryOffset = 0;
-        final queryMap = <core.String, core.List<core.String>>{};
-        void addQueryParam(core.String n, core.String v) =>
-            queryMap.putIfAbsent(n, () => []).add(v);
-
-        if (query.isNotEmpty) {
-          for (var part in query.split('&')) {
-            final keyValue = part.split('=');
-            addQueryParam(
-              core.Uri.decodeQueryComponent(keyValue[0]),
-              core.Uri.decodeQueryComponent(keyValue[1]),
-            );
-          }
-        }
-        unittest.expect(
-          core.int.parse(queryMap['pageSize']!.first),
-          unittest.equals(arg_pageSize),
-        );
-        unittest.expect(
-          queryMap['pageToken']!.first,
-          unittest.equals(arg_pageToken),
-        );
-        unittest.expect(
-          queryMap['fields']!.first,
-          unittest.equals(arg_$fields),
-        );
-
-        final h = {
-          'content-type': 'application/json; charset=utf-8',
-        };
-        final resp = convert.json.encode(buildListJobsResponse());
-        return async.Future.value(stringResponse(200, h, resp));
-      }), true);
-      final response = await res.list(arg_parent,
-          pageSize: arg_pageSize,
-          pageToken: arg_pageToken,
-          $fields: arg_$fields);
-      checkListJobsResponse(response as api.ListJobsResponse);
-    });
-  });
-}
diff --git a/resources/googleapis/CHANGELOG.md b/resources/googleapis/CHANGELOG.md
index dd77d6a..bf54073 100644
--- a/resources/googleapis/CHANGELOG.md
+++ b/resources/googleapis/CHANGELOG.md
@@ -1,10 +1,15 @@
-## 8.0.0-dev
+## 8.0.0
 
 - `adsense` - **removed v1.4**
+- `baremetalsolution` - new v2
+- `certificatemanager` - new!
 - `clouddeploy` - new!
+- `dataplex` - new!
 - `datastream` - new!
 - `ids` - new!
+- `mybusinessbusinesscalls` - new!
 - `mybusinessqanda` - new!
+- `playintegrity`
 - `run` - new v2
 - `transcoder` - new!
 - `webmasters` - **removed!**
diff --git a/resources/googleapis_beta/CHANGELOG.md b/resources/googleapis_beta/CHANGELOG.md
index bc0d52c..986e388 100644
--- a/resources/googleapis_beta/CHANGELOG.md
+++ b/resources/googleapis_beta/CHANGELOG.md
@@ -1,6 +1,9 @@
-## 8.0.0-dev
+## 8.0.0
 
+- `cloudfunctions` new!
+- `gkehub` - new!
 - `cloudsupport` - new!
+- `transcoder` - **REMOVED** now in `package:googleapis`
 
 ## 7.0.0